From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 0BD3D3858D28; Tue, 10 Oct 2023 16:46:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0BD3D3858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-CSE-ConnectionGUID: R5XTLGVNQ8WH9uuh6Zs/1w== X-CSE-MsgGUID: S8Fy4VVYQXuH1lGm5IYzfQ== X-IronPort-AV: E=Sophos;i="6.03,213,1694764800"; d="diff'?scan'208";a="19042986" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 10 Oct 2023 08:46:41 -0800 IronPort-SDR: DSeH/ayu+U5C5K9Shpcy9bCuJdcqUcVq91DWGmHLgWm7rj0deG7k1MkN2/8nWkFhRIZ4l8NjSt HeJ5ItCH6JuHLmsVnOtOu+Ii8M70geMvcm1AWAwJnPwT6uNr4dvqkB8fKKaLM7aPw7916s7c6v orX/OC+M4Maz7CXqtXB16DVdGwl7auyIxPN8KQJmBjSIs6ui1tvbLDSnayj1OxsZp5NBkeA+oW 4Zn/ftrd08bnfpoxc1qvyrx9KlivjwAuAdNRGHezSk+ubCVl9CQ/t2BpozeTuaofcfzTc789z2 OKA= Content-Type: multipart/mixed; boundary="------------Zr4wym1JTKgX260D9r9dpvHh" Message-ID: <457ea120-5cca-48e0-89d6-c3eab4234b61@codesourcery.com> Date: Tue, 10 Oct 2023 18:46:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: gcc-patches , fortran , Jakub Jelinek From: Tobias Burnus Subject: [Patch] Fortran: Support OpenMP's 'allocate' directive for stack vars X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------Zr4wym1JTKgX260D9r9dpvHh Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable The attached patch adds 'omp allocate' support for stack/automatic variable= s variables for Fortran. I had originally a pure FE version for Fortran, which failed with 'defaultm= ap'/'default'; I then thought I could simply piggyback on the existing C/C++ support. But it turns out that Fortran is completely different, e.g. there is often = no BIND_EXPR but just some (scoped / try-final-expr) code inside of it, i.e. the scope o= f the BIND_EXPR has no relation to where GOMP_alloc has to be added. (GOMP_free is less cri= tical, except that a longer lifetime might cause memory constraints.) Thus, RFC: - Is the current scheme okay or should me move moved to the FE there is not that much happening at the ME? - Should for the one 'if (lang_GNU_Fortran () ...' condition a lang hook be introduced? Any other suggestions? ALSO: I decided that the wording permits 'type(c_ptr)', 'type(c_funptr)' as= they are rather normal variables (of opaque type) in the Fortran sense. I decided th= at we do not want to support EQUIVALENCE, Cray pointers, COMMON blocks ever (even th= ough the first to surely could be made to work, the latter - maybe.) I also reject coarrays as it is really incompatible for allocate/allocators= ; for the 'allocate' clause, that's different and permitted (just used for privat= ization). Thoughts, suggestions? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------Zr4wym1JTKgX260D9r9dpvHh Content-Type: text/x-patch; charset="UTF-8"; name="omp-allocate-fortran.diff" Content-Disposition: attachment; filename="omp-allocate-fortran.diff" Content-Transfer-Encoding: base64 Rm9ydHJhbjogU3VwcG9ydCBPcGVuTVAncyAnYWxsb2NhdGUnIGRpcmVjdGl2ZSBmb3Igc3Rh Y2sgdmFycwoKZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nOgoKCSogZ2ZvcnRyYW4uaCAoZXh0X2F0 dHJfdCk6IEFkZCBvbXBfYWxsb2NhdGUgZmxhZy4KCSogbWF0Y2guY2MgKGdmY19mcmVlX29t cF9uYW1lbGlzdCk6IFZvaWQgZGVsZXRpbmcgc2FtZQoJdTIuYWxsb2NhdG9yIG11bHRpcGxl IHRpbWVzIG5vdyB0aGF0IGEgc2VxdWVuY2UgY2FuIHVzZQoJdGhlIHNhbWUgb25lLgoJKiBv cGVubXAuY2MgKGdmY19tYXRjaF9vbXBfY2xhdXNlcywgZ2ZjX21hdGNoX29tcF9hbGxvY2F0 ZSk6IFVzZQoJc2FtZSBhbGxvY2F0b3IgZXhwciBtdWx0aXBsZSB0aW1lcy4KCShpc19wcmVk ZWZpbmVkX2FsbG9jYXRvcik6IE1ha2Ugc3RhdGljLgoJKGdmY19yZXNvbHZlX29tcF9hbGxv Y2F0ZSk6IFVwZGF0ZS9leHRlbmQgcmVzdHJpY3Rpb24gY2hlY2tzOwoJcmVtb3ZlIHNvcnJ5 IG1lc3NhZ2UuCgkocmVzb2x2ZV9vbXBfY2xhdXNlcyk6IFJlamVjdCBjb3JhcnJheXMgaW4g YWxsb2NhdGUvYWxsb2NhdG9ycwoJZGlyZWN0aXZlLgoJKiBwYXJzZS5jYyAoY2hlY2tfb21w X2FsbG9jYXRlX3N0bXQpOiBQZXJtaXQgcHJvY2VkdXJlIHBvaW50ZXJzCgloZXJlIChyZWpl Y3RlZCBsYXRlcikgZm9yIGxlc3MgbWlzbHJlYWRpbmcgZGlhZ25vc3RpYy4KCSogdHJhbnMt YXJyYXkuY2MgKGdmY190cmFuc19hdXRvX2FycmF5X2FsbG9jYXRpb24pOiBQcm9wYWdhdGUK CXNpemUgZm9yIEdPTVBfYWxsb2MgYW5kIGxvY2F0aW9uIHRvIHdoaWNoIGl0IHNob3VsZCBi ZSBhZGRlZCB0by4KCSogdHJhbnMtZGVjbC5jYyAoZ2ZjX3RyYW5zX2RlZmVycmVkX3ZhcnMp OiBIYW5kbGUgJ29tcCBhbGxvY2F0ZScKCWZvciBzdGFjayB2YXJpYWJsZXM7IHNvcnJ5IGZv ciBzdGF0aWMgdmFyaWFibGVzL2NvbW1vbiBibG9ja3MuCgkqIHRyYW5zLW9wZW5tcC5jYyAo Z2ZjX3RyYW5zX29tcF9jbGF1c2VzKTogRXZhbHVhdGUgJ2FsbG9jYXRlJwoJY2xhdXNlJ3Mg YWxsb2NhdG9yIG9ubHkgb25jZTsgZml4IGFkZGluZyBleHByZXNzaW9ucyB0byB0aGUKCWJs b2NrLgoJKGdmY190cmFuc19vbXBfc2luZ2xlKTogUGFzcyBhIGJsb2NrIHRvIGdmY190cmFu c19vbXBfY2xhdXNlcy4KCmdjYy9DaGFuZ2VMb2c6CgoJKiBnaW1wbGlmeS5jYyAoZ2ltcGxp ZnlfYmluZF9leHByKTogSGFuZGxlIEZvcnRyYW4ncwoJJ29tcCBhbGxvY2F0ZScgZm9yIHN0 YWNrIHZhcmlhYmxlcy4KCmxpYmdvbXAvQ2hhbmdlTG9nOgoKCSogbGliZ29tcC50ZXhpOgoJ KiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTUuZjkwOiBOZXcgdGVzdC4K CSogdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS02LmY5MDogTmV3IHRlc3Qu CgkqIHRlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNy5mOTA6IE5ldyB0ZXN0 LgoJKiB0ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTguZjkwOiBOZXcgdGVz dC4KCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogYy1jKystY29tbW9uL2dvbXAvYWxs b2NhdGUtMTQuYzogRml4IGRpcmVjdGl2ZSBuYW1lLgoJKiBjLWMrKy1jb21tb24vZ29tcC9h bGxvY2F0ZS0xNS5jOiBMaWtld2lzZS4KCSogYy1jKystY29tbW9uL2dvbXAvYWxsb2NhdGUt OS5jOiBGaXggY29tbWVudCB0eXBvLgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTQu ZjkwOiBSZW1vdmUgc29ycnkgZGctZXJyb3IuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2Nh dGUtNy5mOTA6IExpa2V3aXNlLgoJKiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEwLmY5 MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTEuZjkwOiBOZXcg dGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMi5mOTA6IE5ldyB0ZXN0LgoJ KiBnZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEzLmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0 cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTQuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcv Z29tcC9hbGxvY2F0ZS0xNS5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2Fs bG9jYXRlLTguZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS05 LmY5MDogTmV3IHRlc3QuCgogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIGdjYy9mb3J0cmFuL21hdGNoLmNjICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgOSArLQogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDYyICsrKy0KIGdjYy9mb3J0cmFuL3BhcnNlLmNj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogZ2NjL2ZvcnRyYW4vdHJh bnMtYXJyYXkuY2MgICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICstCiBnY2MvZm9ydHJh bi90cmFucy1kZWNsLmNjICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjEgKysrKysrKysK IGdjYy9mb3J0cmFuL3RyYW5zLW9wZW5tcC5jYyAgICAgICAgICAgICAgICAgICAgICB8ICA3 NyArKystLQogZ2NjL2dpbXBsaWZ5LmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTczICsrKysrKysrKy0tLQogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29t cC9hbGxvY2F0ZS0xNC5jICAgIHwgICAyICstCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9nb21wL2FsbG9jYXRlLTE1LmMgICAgfCAgIDIgKy0KIGdjYy90ZXN0c3VpdGUvYy1jKyst Y29tbW9uL2dvbXAvYWxsb2NhdGUtOS5jICAgICB8ICAgMiArLQogZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEwLmY5MCAgIHwgIDc0ICsrKysrCiBnY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTEuZjkwICAgfCAgMzMgKysrCiBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTIuZjkwICAgfCAgMjQg KysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMy5mOTAgICB8 ICAyNSArKwogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTE0LmY5 MCAgIHwgIDk1ICsrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS0xNS5mOTAgICB8ICAzOCArKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29t cC9hbGxvY2F0ZS00LmY5MCAgICB8ICAgNCArLQogZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL2FsbG9jYXRlLTcuZjkwICAgIHwgIDEwIC0KIGdjYy90ZXN0c3VpdGUvZ2ZvcnRy YW4uZGcvZ29tcC9hbGxvY2F0ZS04LmY5MCAgICB8ICAyOSArKwogZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTkuZjkwICAgIHwgMTEyICsrKysrKysrCiBsaWJn b21wL2xpYmdvbXAudGV4aSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS01LmY5MCB8ICA4 NyArKysrKysKIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJhbi9hbGxvY2F0ZS02 LmY5MCB8IDEyMyArKysrKysrKwogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFu L2FsbG9jYXRlLTcuZjkwIHwgMzQyICsrKysrKysrKysrKysrKysrKysrKysrCiBsaWJnb21w L3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtOC5mOTAgfCAgOTkgKysrKysr KwogMjYgZmlsZXMgY2hhbmdlZCwgMTQ4MCBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFu L2dmb3J0cmFuLmgKaW5kZXggNmNhZjc3NjVhYzYuLjg4ZjMzYjA5NTdlIDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgK QEAgLTEwMDAsNiArMTAwMCw3IEBAIHR5cGVkZWYgc3RydWN0CiAgIHVuc2lnbmVkIG9tcF9k ZWNsYXJlX3RhcmdldDoxOwogICB1bnNpZ25lZCBvbXBfZGVjbGFyZV90YXJnZXRfbGluazox OwogICBFTlVNX0JJVEZJRUxEIChnZmNfb21wX2RldmljZV90eXBlKSBvbXBfZGV2aWNlX3R5 cGU6MjsKKyAgdW5zaWduZWQgb21wX2FsbG9jYXRlOjE7CiAKICAgLyogTWVudGlvbmVkIGlu IE9BQ0MgREVDTEFSRS4gICovCiAgIHVuc2lnbmVkIG9hY2NfZGVjbGFyZV9jcmVhdGU6MTsK ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL21hdGNoLmNjIGIvZ2NjL2ZvcnRyYW4vbWF0Y2gu Y2MKaW5kZXggYzkyNmYzODA1OGYuLjE0OGE4NmJiNDM2IDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi9tYXRjaC5jYworKysgYi9nY2MvZm9ydHJhbi9tYXRjaC5jYwpAQCAtNTU0MSw2ICs1 NTQxLDcgQEAgZ2ZjX2ZyZWVfb21wX25hbWVsaXN0IChnZmNfb21wX25hbWVsaXN0ICpuYW1l LCBib29sIGZyZWVfbnMsCiAJCSAgICAgICBib29sIGZyZWVfbWVtX3RyYWl0c19zcGFjZSkK IHsKICAgZ2ZjX29tcF9uYW1lbGlzdCAqbjsKKyAgZ2ZjX2V4cHIgKmxhc3RfYWxsb2NhdG9y ID0gTlVMTDsKIAogICBmb3IgKDsgbmFtZTsgbmFtZSA9IG4pCiAgICAgewpAQCAtNTU1Miw3 ICs1NTUzLDEzIEBAIGdmY19mcmVlX29tcF9uYW1lbGlzdCAoZ2ZjX29tcF9uYW1lbGlzdCAq bmFtZSwgYm9vbCBmcmVlX25zLAogICAgICAgaWYgKGZyZWVfbnMpCiAJZ2ZjX2ZyZWVfbmFt ZXNwYWNlIChuYW1lLT51Mi5ucyk7CiAgICAgICBlbHNlIGlmIChmcmVlX2FsaWduX2FsbG9j YXRvcikKLQlnZmNfZnJlZV9leHByIChuYW1lLT51Mi5hbGxvY2F0b3IpOworCXsKKwkgIGlm IChsYXN0X2FsbG9jYXRvciAhPSBuYW1lLT51Mi5hbGxvY2F0b3IpCisJICAgIHsKKwkgICAg ICBsYXN0X2FsbG9jYXRvciA9IG5hbWUtPnUyLmFsbG9jYXRvcjsKKwkgICAgICBnZmNfZnJl ZV9leHByIChuYW1lLT51Mi5hbGxvY2F0b3IpOworCSAgICB9CisJfQogICAgICAgZWxzZSBp ZiAoZnJlZV9tZW1fdHJhaXRzX3NwYWNlKQogCXsgfSAgLyogbmFtZS0+dTIudHJhaXRzX3N5 bTogc2hhbGwgbm90IGNhbGwgZ2ZjX2ZyZWVfc3ltYm9sIGhlcmUuICovCiAgICAgICBlbHNl IGlmIChuYW1lLT51Mi51ZHIpCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9vcGVubXAuY2Mg Yi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKaW5kZXggNzliNWFlMGU0YmQuLmNhNmRjZTkxZjY1 IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9vcGVubXAuY2MKKysrIGIvZ2NjL2ZvcnRyYW4v b3Blbm1wLmNjCkBAIC0yMDMyLDExICsyMDMyLDkgQEAgZ2ZjX21hdGNoX29tcF9jbGF1c2Vz IChnZmNfb21wX2NsYXVzZXMgKipjcCwgY29uc3Qgb21wX21hc2sgbWFzaywKIAogCSAgICAg IGZvciAoZ2ZjX29tcF9uYW1lbGlzdCAqbiA9ICpoZWFkOyBuOyBuID0gbi0+bmV4dCkKIAkJ ewotCQkgIG4tPnUyLmFsbG9jYXRvciA9ICgoYWxsb2NhdG9yKQotCQkJCSAgICAgPyBnZmNf Y29weV9leHByIChhbGxvY2F0b3IpIDogTlVMTCk7CisJCSAgbi0+dTIuYWxsb2NhdG9yID0g YWxsb2NhdG9yOwogCQkgIG4tPnUuYWxpZ24gPSAoYWxpZ24pID8gZ2ZjX2NvcHlfZXhwciAo YWxpZ24pIDogTlVMTDsKIAkJfQotCSAgICAgIGdmY19mcmVlX2V4cHIgKGFsbG9jYXRvcik7 CiAJICAgICAgZ2ZjX2ZyZWVfZXhwciAoYWxpZ24pOwogCSAgICAgIGNvbnRpbnVlOwogCSAg ICB9CkBAIC00NTQ3LDkgKzQ1NDUsOCBAQCBnZmNfbWF0Y2hfb21wX2FsbG9jYXRlICh2b2lk KQogICAgICAgZm9yICg7IHZhcnM7IHZhcnMgPSB2YXJzLT5uZXh0KQogCXsKIAkgIHZhcnMt PnUuYWxpZ24gPSAoYWxpZ24pID8gZ2ZjX2NvcHlfZXhwciAoYWxpZ24pIDogTlVMTDsKLQkg IHZhcnMtPnUyLmFsbG9jYXRvciA9ICgoYWxsb2NhdG9yKSA/IGdmY19jb3B5X2V4cHIgKGFs bG9jYXRvcikgOiBOVUxMKTsKKwkgIHZhcnMtPnUyLmFsbG9jYXRvciA9IGFsbG9jYXRvcjsK IAl9Ci0gICAgICBnZmNfZnJlZV9leHByIChhbGxvY2F0b3IpOwogICAgICAgZ2ZjX2ZyZWVf ZXhwciAoYWxpZ24pOwogICAgIH0KICAgcmV0dXJuIE1BVENIX1lFUzsKQEAgLTcxOTEsNyAr NzE4OCw3IEBAIHJlc29sdmVfb21wX3Vkcl9jbGF1c2UgKGdmY19vbXBfbmFtZWxpc3QgKm4s IGdmY19uYW1lc3BhY2UgKm5zLAogLyogQXNzdW1lIHRoYXQgYSBjb25zdGFudCBleHByZXNz aW9uIGluIHRoZSByYW5nZSAxIChvbXBfZGVmYXVsdF9tZW1fYWxsb2MpCiAgICB0byA4IChv bXBfdGhyZWFkX21lbV9hbGxvYykgcmFuZ2UgaXMgZmluZS4gIFRoZSBvcmlnaW5hbCBzeW1i b2wgbmFtZSBpcwogICAgYWxyZWFkeSBsb3N0IGR1cmluZyBtYXRjaGluZyB2aWEgZ2ZjX21h dGNoX2V4cHIuICAqLwotYm9vbAorc3RhdGljIGJvb2wKIGlzX3ByZWRlZmluZWRfYWxsb2Nh dG9yIChnZmNfZXhwciAqZXhwcikKIHsKICAgcmV0dXJuIChnZmNfcmVzb2x2ZV9leHByIChl eHByKQpAQCAtNzIwOSwxMCArNzIwNiwyMCBAQCBpc19wcmVkZWZpbmVkX2FsbG9jYXRvciAo Z2ZjX2V4cHIgKmV4cHIpCiB2b2lkCiBnZmNfcmVzb2x2ZV9vbXBfYWxsb2NhdGUgKGdmY19u YW1lc3BhY2UgKm5zLCBnZmNfb21wX25hbWVsaXN0ICpsaXN0KQogewotICBmb3IgKGdmY19v bXBfbmFtZWxpc3QgKm4gPSBsaXN0OyBuOyBuID0gbi0+bmV4dCkKLSAgICBuLT5zeW0tPm1h cmsgPSAwOwogICBmb3IgKGdmY19vbXBfbmFtZWxpc3QgKm4gPSBsaXN0OyBuOyBuID0gbi0+ bmV4dCkKICAgICB7CisgICAgICBpZiAobi0+c3ltLT5hdHRyLnJlc3VsdCB8fCBuLT5zeW0t PnJlc3VsdCA9PSBuLT5zeW0pCisJeworCSAgZ2ZjX2Vycm9yICgiVW5leHBlY3RlZCBmdW5j dGlvbi1yZXN1bHQgdmFyaWFibGUgJXFzIGF0ICVMIGluICIKKwkJICAgICAiZGVjbGFyYXRp dmUgISRPTVAgQUxMT0NBVEUiLCBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250 aW51ZTsKKwl9CisgICAgICBpZiAobnMtPm9tcF9hbGxvY2F0ZS0+c3ltLT5hdHRyLnByb2Nf cG9pbnRlcikKKwl7CisJICBnZmNfZXJyb3IgKCJQcm9jZWR1cmUgcG9pbnRlciAlcXMgbm90 IHN1cHBvcnRlZCB3aXRoICEkT01QICIKKwkJICAgICAiQUxMT0NBVEUgYXQgJUwiLCBuLT5z eW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CiAgICAgICBpZiAobi0+ c3ltLT5hdHRyLmZsYXZvciAhPSBGTF9WQVJJQUJMRSkKIAl7CiAJICBnZmNfZXJyb3IgKCJB cmd1bWVudCAlcXMgYXQgJUwgdG8gZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUgIgpAQCAt NzIyMCw4ICs3MjI3LDcgQEAgZ2ZjX3Jlc29sdmVfb21wX2FsbG9jYXRlIChnZmNfbmFtZXNw YWNlICpucywgZ2ZjX29tcF9uYW1lbGlzdCAqbGlzdCkKIAkJICAgICAmbi0+d2hlcmUpOwog CSAgY29udGludWU7CiAJfQotICAgICAgaWYgKG5zICE9IG4tPnN5bS0+bnMgfHwgbi0+c3lt LT5hdHRyLnVzZV9hc3NvYwotCSAgfHwgbi0+c3ltLT5hdHRyLmhvc3RfYXNzb2MgfHwgbi0+ c3ltLT5hdHRyLmltcG9ydGVkKQorICAgICAgaWYgKG5zICE9IG4tPnN5bS0+bnMgfHwgbi0+ c3ltLT5hdHRyLnVzZV9hc3NvYyB8fCAgbi0+c3ltLT5hdHRyLmltcG9ydGVkKQogCXsKIAkg IGdmY19lcnJvciAoIkFyZ3VtZW50ICVxcyBhdCAlTCB0byBkZWNsYXJhdGl2ZSAhJE9NUCBB TExPQ0FURSBzaGFsbCBiZSIKIAkJICAgICAiIGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSB2 YXJpYWJsZSBkZWNsYXJhdGlvbiIsCkBAIC03MjM0LDcgKzcyNDAsMTMgQEAgZ2ZjX3Jlc29s dmVfb21wX2FsbG9jYXRlIChnZmNfbmFtZXNwYWNlICpucywgZ2ZjX29tcF9uYW1lbGlzdCAq bGlzdCkKIAkJICAgICAiZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUiLCBuLT5zeW0tPm5h bWUsICZuLT53aGVyZSk7CiAJICBjb250aW51ZTsKIAl9Ci0gICAgICBpZiAobi0+c3ltLT5t YXJrKQorICAgICAgaWYgKG4tPnN5bS0+YXR0ci5jb2RpbWVuc2lvbikKKwl7CisJICBnZmNf ZXJyb3IgKCJVbmV4cGVjdGVkIGNvYXJyYXkgYXJndW1lbnQgJXFzIGFzIGFyZ3VtZW50IGF0 ICVMIHRvICIKKwkJICAgICAiZGVjbGFyYXRpdmUgISRPTVAgQUxMT0NBVEUiLCBuLT5zeW0t Pm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICBpZiAobi0+c3lt LT5hdHRyLm9tcF9hbGxvY2F0ZSkKIAl7CiAJICBpZiAobi0+c3ltLT5hdHRyLmluX2NvbW1v bikKIAkgICAgewpAQCAtNzI0OSw3ICs3MjYxLDI4IEBAIGdmY19yZXNvbHZlX29tcF9hbGxv Y2F0ZSAoZ2ZjX25hbWVzcGFjZSAqbnMsIGdmY19vbXBfbmFtZWxpc3QgKmxpc3QpCiAJCSAg ICAgICBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CiAJICBjb250aW51ZTsKIAl9Ci0gICAg ICBuLT5zeW0tPm1hcmsgPSAxOworICAgICAgLyogRm9yICdlcXVpdmFsZW5jZShhLGIpJywg YSAndW5pb25fdHlwZSB7PHR5cGU+IGEsYn0gZXF1aXYuMCcgaXMgY3JlYXRlZAorCSB3aXRo IGEgdmFsdWUgZXhwcmVzc2lvbiBmb3IgJ2EnIGFzICdlcXVpdi4wLmEnIChsaWtld2lzZSBm b3IgYik7IHdoaWxlCisJIHRoaXMgY2FuIGJlIGhhbmRsZWQsIEVRVUlWQUxFTkNFIGlzIG1h cmtlZCBhcyBvYnNvbGVzY2VudCBzaW5jZSBGb3J0cmFuCisJIDIwMTggYW5kIGFsc28gbm90 IHdpZGVseSB1c2VkLiAgSG93ZXZlciwgaXQgY291bGQgYmUgc3VwcG9ydGVkLAorCSBpZiBu ZWVkZWQuICovCisgICAgICBpZiAobi0+c3ltLT5hdHRyLmluX2VxdWl2YWxlbmNlKQorCXsK KwkgIGdmY19lcnJvciAoIlNvcnJ5LCBFUVVJVkFMRU5DRSBvYmplY3QgJXFzIG5vdCBzdXBw b3J0ZWQgd2l0aCAhJE9NUCAiCisJCSAgICAgIkFMTE9DQVRFIGF0ICVMIiwgbi0+c3ltLT5u YW1lLCAmbi0+d2hlcmUpOworCSAgY29udGludWU7CisJfQorICAgICAgLyogU2ltaWxhciBm b3IgQ3JheSBwb2ludGVyL3BvaW50ZWUgLSB0aGV5IGNvdWxkIGJlIGltcGxlbWVudGVkIGJ1 dCBhcworCSBjb21tb24gdmVuZG9yIGV4dGVuc2lvbiBidXQgbm93YWRheXMgcmFyZWx5IHVz ZWQgYW5kIHJlcXVpcmluZworCSAtZmNyYXktcG9pbnRlciwgdGhlcmUgaXMgbm8gbmVlZCB0 byBzdXBwb3J0IHRoZW0uICAqLworICAgICAgaWYgKG4tPnN5bS0+YXR0ci5jcmF5X3BvaW50 ZXIgfHwgbi0+c3ltLT5hdHRyLmNyYXlfcG9pbnRlZSkKKwl7CisJICBnZmNfZXJyb3IgKCJT b3JyeSwgQ3JheSBwb2ludGVycyBhbmQgcG9pbnRlZXMgc3VjaCBhcyAlcXMgYXJlIG5vdCAi CisJCSAgICAgInN1cHBvcnRlZCB3aXRoICEkT01QIEFMTE9DQVRFIGF0ICVMIiwKKwkJICAg ICBuLT5zeW0tPm5hbWUsICZuLT53aGVyZSk7CisJICBjb250aW51ZTsKKwl9CisgICAgICBu LT5zeW0tPmF0dHIub21wX2FsbG9jYXRlID0gMTsKICAgICAgIGlmICgobi0+c3ltLT50cy50 eXBlID09IEJUX0NMQVNTICYmIG4tPnN5bS0+YXR0ci5jbGFzc19vawogCSAgICYmIENMQVNT X0RBVEEgKG4tPnN5bSktPmF0dHIuYWxsb2NhdGFibGUpCiAJICB8fCAobi0+c3ltLT50cy50 eXBlICE9IEJUX0NMQVNTICYmIG4tPnN5bS0+YXR0ci5hbGxvY2F0YWJsZSkpCkBAIC03MzA3 LDggKzczNDAsNiBAQCBnZmNfcmVzb2x2ZV9vbXBfYWxsb2NhdGUgKGdmY19uYW1lc3BhY2Ug Km5zLCBnZmNfb21wX25hbWVsaXN0ICpsaXN0KQogCQkgICAiJTxvbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kJT4ga2luZCBhdCAlTCIsCiAJCSAgICZuLT51Mi5hbGxvY2F0b3ItPndoZXJl KTsKICAgICB9Ci0gIGdmY19lcnJvciAoIlNvcnJ5LCBkZWNsYXJhdGl2ZSAhJE9NUCBBTExP Q0FURSBhdCAlTCBub3QgeWV0IHN1cHBvcnRlZCIsCi0JICAgICAmbGlzdC0+d2hlcmUpOwog fQogCiAvKiBSZXNvbHZlIEFTU1VNRSdzIGFuZCBBU1NVTUVTJyBhc3N1bXB0aW9uIGNsYXVz ZXMuICBOb3RlIHRoYXQgYWJzZW50L2NvbnRhaW5zCkBAIC03ODk3LDYgKzc5MjgsOSBAQCBy ZXNvbHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAqY29kZSwgZ2ZjX29tcF9jbGF1c2VzICpv bXBfY2xhdXNlcywKIAkgICAgewogCSAgICAgIGlmIChuLT5zeW0gPT0gTlVMTCkKIAkJY29u dGludWU7CisJICAgICAgaWYgKG4tPnN5bS0+YXR0ci5jb2RpbWVuc2lvbikKKwkJZ2ZjX2Vy cm9yICgiVW5leHBlY3RlZCBjb2FycmF5ICVxcyBpbiAlPGFsbG9jYXRlJT4gYXQgJUwiLAor CQkJICAgbi0+c3ltLT5uYW1lLCAmbi0+d2hlcmUpOwogCSAgICAgIGZvciAoYSA9IGNvZGUt PmJsb2NrLT5uZXh0LT5leHQuYWxsb2MubGlzdDsgYTsgYSA9IGEtPm5leHQpCiAJCWlmIChh LT5leHByLT5leHByX3R5cGUgPT0gRVhQUl9WQVJJQUJMRQogCQkgICAgJiYgYS0+ZXhwci0+ c3ltdHJlZS0+bi5zeW0gPT0gbi0+c3ltKQpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vcGFy c2UuY2MgYi9nY2MvZm9ydHJhbi9wYXJzZS5jYwppbmRleCA0NDRiYWY0MmNiZC4uZTEwM2Vi ZWU1NTcgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3BhcnNlLmNjCisrKyBiL2djYy9mb3J0 cmFuL3BhcnNlLmNjCkBAIC04MzMsMTggKzgzMywxOCBAQCBjaGVja19vbXBfYWxsb2NhdGVf c3RtdCAobG9jdXMgKmxvYykKIAkJICAgICAgJm4tPmV4cHItPndoZXJlLCBnZmNfYXNjaWlf c3RhdGVtZW50IChTVF9PTVBfQUxMT0NBVEUpKTsKIAkgIHJldHVybiBmYWxzZTsKIAl9Cisg ICAgICAvKiBQcm9jZWR1cmUgcG9pbnRlcnMgYXJlIG5vdCBhbGxvY2F0YWJsZTsgaGVuY2Us IHdlIGRvIG5vdCByZWdhcmQgdGhlbSBhcworCSBwb2ludGVycyBoZXJlIC0gYW5kIHJlamVj dCB0aGVtIGxhdGVyIGluIGdmY19yZXNvbHZlX29tcF9hbGxvY2F0ZS4gICovCiAgICAgICBi b29sIGFsbG9jX3B0cjsKICAgICAgIGlmIChuLT5zeW0tPnRzLnR5cGUgPT0gQlRfQ0xBU1Mg JiYgbi0+c3ltLT5hdHRyLmNsYXNzX29rKQogCWFsbG9jX3B0ciA9IChDTEFTU19EQVRBIChu LT5zeW0pLT5hdHRyLmFsbG9jYXRhYmxlCiAJCSAgICAgfHwgQ0xBU1NfREFUQSAobi0+c3lt KS0+YXR0ci5jbGFzc19wb2ludGVyKTsKICAgICAgIGVsc2UKLQlhbGxvY19wdHIgPSAobi0+ c3ltLT5hdHRyLmFsbG9jYXRhYmxlIHx8IG4tPnN5bS0+YXR0ci5wb2ludGVyCi0JCSAgICAg fHwgbi0+c3ltLT5hdHRyLnByb2NfcG9pbnRlcik7CisJYWxsb2NfcHRyID0gbi0+c3ltLT5h dHRyLmFsbG9jYXRhYmxlIHx8IG4tPnN5bS0+YXR0ci5wb2ludGVyOwogICAgICAgaWYgKGFs bG9jX3B0cgogCSAgfHwgKG4tPnN5bS0+bnMgJiYgbi0+c3ltLT5ucy0+cHJvY19uYW1lCiAJ ICAgICAgJiYgKG4tPnN5bS0+bnMtPnByb2NfbmFtZS0+YXR0ci5hbGxvY2F0YWJsZQotCQkg IHx8IG4tPnN5bS0+bnMtPnByb2NfbmFtZS0+YXR0ci5wb2ludGVyCi0JCSAgfHwgbi0+c3lt LT5ucy0+cHJvY19uYW1lLT5hdHRyLnByb2NfcG9pbnRlcikpKQorCQkgIHx8IG4tPnN5bS0+ bnMtPnByb2NfbmFtZS0+YXR0ci5wb2ludGVyKSkpCiAJaGFzX2FsbG9jYXRhYmxlID0gdHJ1 ZTsKICAgICAgIGVsc2UKIAloYXNfbm9uX2FsbG9jYXRhYmxlID0gdHJ1ZTsKZGlmZiAtLWdp dCBhL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtYXJy YXkuY2MKaW5kZXggOGU5NGE5YTQ2OWYuLmJiYjgxZjQwYWE5IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi90cmFucy1hcnJheS5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5j YwpAQCAtODIsNiArODIsOSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJ TkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInRyZWUuaCIKICNpbmNsdWRlICJnZm9ydHJh bi5oIgogI2luY2x1ZGUgImdpbXBsZS1leHByLmgiCisjaW5jbHVkZSAidHJlZS1pdGVyYXRv ci5oIgorI2luY2x1ZGUgInN0cmluZ3Bvb2wuaCIgIC8qIFJlcXVpcmVkIGJ5ICJhdHRyaWJz LmgiLiAgKi8KKyNpbmNsdWRlICJhdHRyaWJzLmgiIC8qIEZvciBsb29rdXBfYXR0cmlidXRl LiAgKi8KICNpbmNsdWRlICJ0cmFucy5oIgogI2luY2x1ZGUgImZvbGQtY29uc3QuaCIKICNp bmNsdWRlICJjb25zdHJ1Y3Rvci5oIgpAQCAtNjc3MCw2ICs2NzczLDE1IEBAIGdmY190cmFu c19hdXRvX2FycmF5X2FsbG9jYXRpb24gKHRyZWUgZGVjbCwgZ2ZjX3N5bWJvbCAqIHN5bSwK IAkgZ2ltcGxpZmllciB0byBhbGxvY2F0ZSBzdG9yYWdlLCBhbmQgYWxsIHRoYXQgZ29vZCBz dHVmZi4gICovCiAgICAgICB0bXAgPSBmb2xkX2J1aWxkMV9sb2MgKGlucHV0X2xvY2F0aW9u LCBERUNMX0VYUFIsIFRSRUVfVFlQRSAoZGVjbCksIGRlY2wpOwogICAgICAgZ2ZjX2FkZF9l eHByX3RvX2Jsb2NrICgmaW5pdCwgdG1wKTsKKyAgICAgIGlmIChzeW0tPmF0dHIub21wX2Fs bG9jYXRlKQorCXsKKwkgIC8qIFNhdmUgbG9jYXRpb24gb2Ygc2l6ZSBjYWxjdWxhdGlvbiB0 byBlbnN1cmUgR09NUF9hbGxvYyBpcyBwbGFjZWQKKwkgICAgIGFmdGVyIGl0LiAgKi8KKwkg IHRyZWUgb21wX2FsbG9jID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBhbGxvY2F0ZSIsCisJ CQkJCSAgICAgREVDTF9BVFRSSUJVVEVTIChkZWNsKSk7CisJICBUUkVFX0NIQUlOIChUUkVF X0NIQUlOIChUUkVFX1ZBTFVFIChvbXBfYWxsb2MpKSkKKwkgICAgPSBidWlsZF90cmVlX2xp c3QgKE5VTExfVFJFRSwgdHNpX3N0bXQgKHRzaV9sYXN0IChpbml0LmhlYWQpKSk7CisJfQog ICAgIH0KIAogICBpZiAob25zdGFjaykKQEAgLTY3OTgsOCArNjgxMCwyMiBAQCBnZmNfdHJh bnNfYXV0b19hcnJheV9hbGxvY2F0aW9uICh0cmVlIGRlY2wsIGdmY19zeW1ib2wgKiBzeW0s CiAgICAgICBnZmNfYWRkX2luaXRfY2xlYW51cCAoYmxvY2ssIGdmY19maW5pc2hfYmxvY2sg KCZpbml0KSwgTlVMTF9UUkVFKTsKICAgICAgIHJldHVybjsKICAgICB9CisgIGlmIChzeW0t PmF0dHIub21wX2FsbG9jYXRlKQorICAgIHsKKyAgICAgIC8qIFRoZSBzaXplIGlzIHRoZSBu dW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LCBzbyBtdWx0aXBseSBieSB0aGUKKwkg c2l6ZSBvZiBhbiBlbGVtZW50IHRvIGdldCB0aGUgdG90YWwgc2l6ZS4gICovCisgICAgICB0 bXAgPSBUWVBFX1NJWkVfVU5JVCAoZ2ZjX2dldF9lbGVtZW50X3R5cGUgKHR5cGUpKTsKKyAg ICAgIHNpemUgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xvY2F0aW9uLCBNVUxUX0VYUFIs IGdmY19hcnJheV9pbmRleF90eXBlLAorCQkJICAgICAgc2l6ZSwgZm9sZF9jb252ZXJ0IChn ZmNfYXJyYXlfaW5kZXhfdHlwZSwgdG1wKSk7CisgICAgICBzaXplID0gZ2ZjX2V2YWx1YXRl X25vdyAoc2l6ZSwgJmluaXQpOwogCi0gIGlmIChmbGFnX3N0YWNrX2FycmF5cykKKyAgICAg IHRyZWUgb21wX2FsbG9jID0gbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBhbGxvY2F0ZSIsCisJ CQkJCSBERUNMX0FUVFJJQlVURVMgKGRlY2wpKTsKKyAgICAgIFRSRUVfQ0hBSU4gKFRSRUVf Q0hBSU4gKFRSRUVfVkFMVUUgKG9tcF9hbGxvYykpKQorCT0gYnVpbGRfdHJlZV9saXN0IChz aXplLCBOVUxMX1RSRUUpOworICAgICAgc3BhY2UgPSBOVUxMX1RSRUU7CisgICAgfQorICBl bHNlIGlmIChmbGFnX3N0YWNrX2FycmF5cykKICAgICB7CiAgICAgICBnY2NfYXNzZXJ0IChU UkVFX0NPREUgKFRSRUVfVFlQRSAoZGVjbCkpID09IFBPSU5URVJfVFlQRSk7CiAgICAgICBz cGFjZSA9IGJ1aWxkX2RlY2wgKGdmY19nZXRfbG9jYXRpb24gKCZzeW0tPmRlY2xhcmVkX2F0 KSwKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MgYi9nY2MvZm9ydHJh bi90cmFucy1kZWNsLmNjCmluZGV4IGIwZmQyNWU5MmEzLi5kZmQ1OGJmNjBhNSAxMDA2NDQK LS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYworKysgYi9nY2MvZm9ydHJhbi90cmFu cy1kZWNsLmNjCkBAIC00OCw2ICs0OCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZp bGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAiZ2ltcGxpZnkuaCIKICNpbmNs dWRlICJvbXAtZ2VuZXJhbC5oIgogI2luY2x1ZGUgImF0dHItZm5zcGVjLmgiCisjaW5jbHVk ZSAidHJlZS1pdGVyYXRvci5oIgogCiAjZGVmaW5lIE1BWF9MQUJFTF9WQUxVRSA5OTk5OQog CkBAIC00NjUyLDYgKzQ2NTMsMzYgQEAgZ2ZjX3RyYW5zX2RlZmVycmVkX3ZhcnMgKGdmY19z eW1ib2wgKiBwcm9jX3N5bSwgZ2ZjX3dyYXBwZWRfYmxvY2sgKiBibG9jaykKICAgaW5pdF9p bnRlbnRfb3V0X2R0IChwcm9jX3N5bSwgYmxvY2spOwogICBnZmNfcmVzdG9yZV9iYWNrZW5k X2xvY3VzICgmbG9jKTsKIAorICAvKiBGb3Igc29tZSByZWFzb25zLCBpbnRlcm5hbCBwcm9j ZWR1cmVzIHBvaW50IHRvIHRoZSBwYXJlbnQncworICAgICBuYW1lc3BhY2UuICBUb3AtbGV2 ZWwgcHJvY2VkdXJlIGFuZCB2YXJpYWJsZXMgaW5zaWRlIEJMT0NLIGFyZSBmaW5lLiAgKi8K KyAgZ2ZjX25hbWVzcGFjZSAqb21wX25zID0gcHJvY19zeW0tPm5zOworICBpZiAocHJvY19z eW0tPm5zLT5wcm9jX25hbWUgIT0gcHJvY19zeW0pCisgICAgZm9yIChvbXBfbnMgPSBwcm9j X3N5bS0+bnMtPmNvbnRhaW5lZDsgb21wX25zOworCSBvbXBfbnMgPSBvbXBfbnMtPnNpYmxp bmcpCisgICAgICBpZiAob21wX25zLT5wcm9jX25hbWUgPT0gcHJvY19zeW0pCisJYnJlYWs7 CisKKyAgLyogQWRkICdvbXAgYWxsb2NhdGUnIGF0dHJpYnV0ZSBmb3IgZ2ZjX3RyYW5zX2F1 dG9fYXJyYXlfYWxsb2NhdGlvbiBhbmQKKyAgICAgdW5zZXQgYXR0ci5vbXBfYWxsb2NhdGUg Zm9yICdvbXAgYWxsb2NhdGUgYWxsb2NhdG9yKG9tcF9kZWZhdWx0X21lbV9hbGxvYyksCisg ICAgIHdoaWNoIGhhcyB0aGUgbm9ybWFsIGNvZGVwYXRoIGV4Y2VwdCBmb3IgYW4gaW52YWxp ZC11c2UgY2hlY2sgaW4gdGhlIE1FLgorICAgICBUaGUgbWFpbiBwcm9jZXNzaW5nIGhhcHBl bnMgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvbi4gICovCisgIGZvciAoc3RydWN0IGdmY19vbXBf bmFtZWxpc3QgKm4gPSBvbXBfbnMgPyBvbXBfbnMtPm9tcF9hbGxvY2F0ZSA6IE5VTEw7Cisg ICAgICAgbjsgbiA9IG4tPm5leHQpCisgICAgaWYgKCFUUkVFX1NUQVRJQyAobi0+c3ltLT5i YWNrZW5kX2RlY2wpKQorICAgICAgeworCS8qIEFkZCBlbXB0eSBlbnRyaWVzIC0gZGVzY3Jp YmVkIGFuZCB0byBiZSBmaWxsZWQgYmVsb3cuICAqLworCXRyZWUgdG1wID0gYnVpbGRfdHJl ZV9saXN0IChOVUxMX1RSRUUsIE5VTExfVFJFRSk7CisJVFJFRV9DSEFJTiAodG1wKSA9IGJ1 aWxkX3RyZWVfbGlzdCAoTlVMTF9UUkVFLCBOVUxMX1RSRUUpOworCURFQ0xfQVRUUklCVVRF UyAobi0+c3ltLT5iYWNrZW5kX2RlY2wpCisJICA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZp ZXIgKCJvbXAgYWxsb2NhdGUiKSwgdG1wLAorCQkJCSAgICAgICBERUNMX0FUVFJJQlVURVMg KG4tPnN5bS0+YmFja2VuZF9kZWNsKSk7CisJaWYgKG4tPnUuYWxpZ24gPT0gTlVMTAorCSAg ICAmJiBuLT51Mi5hbGxvY2F0b3IgIT0gTlVMTAorCSAgICAmJiBuLT51Mi5hbGxvY2F0b3It PmV4cHJfdHlwZSA9PSBFWFBSX0NPTlNUQU5UCisJICAgICYmIG1wel9jbXBfc2kgKG4tPnUy LmFsbG9jYXRvci0+dmFsdWUuaW50ZWdlciwgMSkgPT0gMCkKKwkgIG4tPnN5bS0+YXR0ci5v bXBfYWxsb2NhdGUgPSAwOworICAgICAgIH0KKwogICBmb3IgKHN5bSA9IHByb2Nfc3ltLT50 bGluazsgc3ltICE9IHByb2Nfc3ltOyBzeW0gPSBzeW0tPnRsaW5rKQogICAgIHsKICAgICAg IGJvb2wgYWxsb2NfY29tcF9vcl9maW5pID0gKHN5bS0+dHMudHlwZSA9PSBCVF9ERVJJVkVE KQpAQCAtNTEwNSw2ICs1MTM2LDk2IEBAIGdmY190cmFuc19kZWZlcnJlZF92YXJzIChnZmNf c3ltYm9sICogcHJvY19zeW0sIGdmY193cmFwcGVkX2Jsb2NrICogYmxvY2spCiAJZ2NjX3Vu cmVhY2hhYmxlICgpOwogICAgIH0KIAorICAvKiBIYW5kbGUgJ29tcCBhbGxvY2F0ZScuIFRo aXMgaGFzIHRvIGJlIGFmdGVyIHRoZSBibG9jayBhYm92ZSBhcworICAgICBnZmNfYWRkX2lu aXRfY2xlYW51cCAoLi4uLCBpbml0LCAuLi4pIHB1dHMgJ2luaXQnIG9mIGxhdGVyIGNhbGxz CisgICAgIGJlZm9yZSBlYXJsaWVyIGNhbGxzLiAgVGhlIGNvZGUgaXMgYSBiaXQgbW9yZSBj b21wbGV4IGFzIGdmb3J0cmFuIGRvZXMKKyAgICAgbm90IHJlYWxseSB3b3JrIHdpdGggYmlu ZCBleHByZXNzaW9ucyAvIEJJTkRfRVhQUl9WQVJTIHByb3Blcmx5LCBpLmUuCisgICAgIGdp bXBsaWZ5X2JpbmRfZXhwciBuZWVkcyBzb21lIGhlbHAgZm9yIHBsYWNpbmcgdGhlIEdPTVBf YWxsb2MuIFRodXMsCisgICAgIHdlIHBhc3Mgb24gdGhlIGxvY2F0aW9uIG9mIHRoZSBhbGxv Y2F0ZS1hc3NpZ25tZW50IGV4cHJlc3Npb24gYW5kLAorICAgICBpZiB0aGUgc2l6ZSBpcyBu b3QgY29uc3RhbnQsIHRoZSBzaXplIHZhcmlhYmxlIGlmIEZvcnRyYW4gY29tcHV0ZXMgdGhp cworICAgICBkaWZmZXJlbnRseS4gV2UgYWxzbyBtaWdodCBhZGQgYW4gZXhwcmVzc2lvbiBs b2NhdGlvbiBhZnRlciB3aGljaCB0aGUKKyAgICAgY29kZSBoYXMgdG8gYmUgYWRkZWQsIGUu Zy4gZm9yIGNoYXJhY3RlciBsZW4gZXhwcmVzc2lvbnMsIHdoaWNoIGFmZmVjdAorICAgICB0 aGUgVU5JVF9TSVpFLiAgKi8KKyAgZ2ZjX2V4cHIgKmxhc3RfYWxsb2NhdG9yID0gTlVMTDsK KyAgaWYgKG9tcF9ucyAmJiBvbXBfbnMtPm9tcF9hbGxvY2F0ZSkKKyAgICB7CisgICAgICBp ZiAoIWJsb2NrLT5pbml0IHx8IFRSRUVfQ09ERSAoYmxvY2stPmluaXQpICE9IFNUQVRFTUVO VF9MSVNUKQorCXsKKwkgIHRyZWUgdG1wID0gYnVpbGQxX3YgKExBQkVMX0VYUFIsIGdmY19i dWlsZF9sYWJlbF9kZWNsIChOVUxMX1RSRUUpKTsKKwkgIGFwcGVuZF90b19zdGF0ZW1lbnRf bGlzdCAodG1wLCAmYmxvY2stPmluaXQpOworCX0KKyAgICAgIGlmICghYmxvY2stPmNsZWFu dXAgfHwgVFJFRV9DT0RFIChibG9jay0+Y2xlYW51cCkgIT0gU1RBVEVNRU5UX0xJU1QpCisJ eworCSAgdHJlZSB0bXAgPSBidWlsZDFfdiAoTEFCRUxfRVhQUiwgZ2ZjX2J1aWxkX2xhYmVs X2RlY2wgKE5VTExfVFJFRSkpOworCSAgYXBwZW5kX3RvX3N0YXRlbWVudF9saXN0ICh0bXAs ICZibG9jay0+Y2xlYW51cCk7CisJfQorICAgIH0KKyAgdHJlZSBpbml0X3N0bXRsaXN0ID0g YmxvY2stPmluaXQ7CisgIHRyZWUgY2xlYW51cF9zdG10bGlzdCA9IGJsb2NrLT5jbGVhbnVw OworICBzZS5leHByID0gTlVMTF9UUkVFOworICBmb3IgKHN0cnVjdCBnZmNfb21wX25hbWVs aXN0ICpuID0gb21wX25zID8gb21wX25zLT5vbXBfYWxsb2NhdGUgOiBOVUxMOworICAgICAg IG47IG4gPSBuLT5uZXh0KQorICAgIGlmICghVFJFRV9TVEFUSUMgKG4tPnN5bS0+YmFja2Vu ZF9kZWNsKSkKKyAgICAgIHsKKwl0cmVlIGFsaWduID0gKG4tPnUuYWxpZ24gPyBnZmNfY29u dl9jb25zdGFudF90b190cmVlIChuLT51LmFsaWduKQorCQkJCSA6IE5VTExfVFJFRSk7CisJ aWYgKGxhc3RfYWxsb2NhdG9yICE9IG4tPnUyLmFsbG9jYXRvcikKKwkgIHsKKwkgICAgZ2Zj X2luaXRfc2UgKCZzZSwgTlVMTCk7CisJICAgIGlmIChuLT51Mi5hbGxvY2F0b3IpCisJICAg ICAgZ2ZjX2NvbnZfZXhwciAoJnNlLCBuLT51Mi5hbGxvY2F0b3IpOworCSAgICAvKiBXZSBu ZWVkIHRvIGV2YWx1bGF0ZSBub24tY29uc3RhbnRzIC0gYWxzbyB0byBmaW5kIHRoZSBsb2Nh dGlvbgorCSAgICAgICBhZnRlciB3aGljaCB0aGUgR09NUF9hbGxvYyBoYXMgdG8gYmUgYWRk ZWQgdG8gLSBhbHNvIGFzIEJMT0NLCisJICAgICAgIGRvZXMgbm90IHlpZWxkIGEgbmV3IEJJ TkRfRVhQUl9CT0RZLiAgKi8KKwkgICAgaWYgKG4tPnUyLmFsbG9jYXRvcgorCQkmJiAoIShD T05TVEFOVF9DTEFTU19QIChzZS5leHByKSAmJiBERUNMX1AgKHNlLmV4cHIpKQorCQkgICAg fHwgc2UucHJlLmhlYWQgfHwgc2UucG9zdC5oZWFkKSkKKwkgICAgICB7CisJCXN0bXRibG9j a190IHRtcGJsb2NrOworCQlnZmNfaW5pdF9ibG9jayAoJnRtcGJsb2NrKTsKKwkJc2UuZXhw ciA9IGdmY19ldmFsdWF0ZV9ub3cgKHNlLmV4cHIsICZ0bXBibG9jayk7CisJCS8qIEZpcnN0 IHBvc3QgdGhlbiBwcmUgYmVjYXVzZSB0aGUgbmV3IGNvZGUgaXMgaW5zZXJ0ZWQKKwkJICAg YXQgdGhlIHRvcC4gKi8KKwkJZ2ZjX2FkZF9pbml0X2NsZWFudXAgKGJsb2NrLCBnZmNfZmlu aXNoX2Jsb2NrICgmc2UucG9zdCksIE5VTEwpOworCQlnZmNfYWRkX2luaXRfY2xlYW51cCAo YmxvY2ssIGdmY19maW5pc2hfYmxvY2sgKCZ0bXBibG9jayksCisJCQkJICAgICAgTlVMTCk7 CisJCWdmY19hZGRfaW5pdF9jbGVhbnVwIChibG9jaywgZ2ZjX2ZpbmlzaF9ibG9jayAoJnNl LnByZSksIE5VTEwpOworCSAgICAgIH0KKwkgICAgbGFzdF9hbGxvY2F0b3IgPSBuLT51Mi5h bGxvY2F0b3I7CisJICB9CisKKwkvKiAnb21wIGFsbG9jYXRlKCB7cHVycG9zZTogYWxsb2Nh dG9yLCB2YWx1ZTogYWxpZ259LAorCQkJICB7cHVycG9zZTogaW5pdC1zdG10bGlzdCwgdmFs dWU6IGNsZWFudXAtc3RtdGxpc3R9LAorCQkJICB7cHVycG9zZTogc2l6ZS12YXIsIHZhbHVl OiBsYXN0LXNpemUtZXhwcn19CisJICAgIHdoZXJlIGluaXQtc3RtdC9jbGVhbnVwLXN0bXQg aXMgdGhlIFNUQVRFTUVOVCBsaXN0IHRvIGZpbmQgdGhlCisJICAgIHRyeS1maW5hbCBibG9j azsgbGFzdC1zaXplLWV4cHIgaXMgdG8gZmluZCB0aGUgbG9jYXRpb24gYWZ0ZXIKKwkgICAg d2hpY2ggdG8gYWRkIHRoZSBjb2RlIGFuZCAnc2l6ZS12YXInIGlzIGZvciB0aGUgcHJvcGVy IHNpemUsIGNmLgorCSAgICBnZmNfdHJhbnNfYXV0b19hcnJheV9hbGxvY2F0aW9uIC0gZWl0 aGVyIG9yIGJvdGggb2YgdGhlIGxhdHRlcgorCSAgICBjYW4gYmUgTlVMTC4gICovCisJdHJl ZSB0bXAgPSBsb29rdXBfYXR0cmlidXRlICgib21wIGFsbG9jYXRlIiwKKwkJCQkgICAgIERF Q0xfQVRUUklCVVRFUyAobi0+c3ltLT5iYWNrZW5kX2RlY2wpKTsKKwl0bXAgPSBUUkVFX1ZB TFVFICh0bXApOworCVRSRUVfUFVSUE9TRSAodG1wKSA9IHNlLmV4cHI7CQorCVRSRUVfVkFM VUUgKHRtcCkgPSBhbGlnbjsJCisJVFJFRV9QVVJQT1NFIChUUkVFX0NIQUlOICh0bXApKSA9 IGluaXRfc3RtdGxpc3Q7CisJVFJFRV9WQUxVRSAoVFJFRV9DSEFJTiAodG1wKSkgPSBjbGVh bnVwX3N0bXRsaXN0OworICAgICAgfQorICAgIGVsc2UgaWYgKG4tPnN5bS0+YXR0ci5pbl9j b21tb24pCisgICAgICB7CisJZ2ZjX2Vycm9yICgiU29ycnksICEkT01QIGFsbG9jYXRlIGZv ciBDT01NT04gYmxvY2sgdmFyaWFibGUgJXFzIGF0ICVMICIKKwkJICAgIm5vdCBzdXBwb3J0 ZWQiLCBuLT5zeW0tPmNvbW1vbl9ibG9jay0+bmFtZSwKKwkJICAgJm4tPnN5bS0+Y29tbW9u X2Jsb2NrLT53aGVyZSk7CisJYnJlYWs7CisgICAgICB9CisgICAgZWxzZQorICAgICAgewor CWdmY19lcnJvciAoIlNvcnJ5LCAhJE9NUCBhbGxvY2F0ZSBmb3IgdmFyaWFibGUgJXFzIGF0 ICVMIHdpdGggU0FWRSAiCisJCSAgICJhdHRyaWJ1dGUgbm90IHlldCBpbXBsZW1lbnRlZCIs IG4tPnN5bS0+bmFtZSwKKwkJICAgJm4tPnN5bS0+ZGVjbGFyZWRfYXQpOworCS8qIEZJWE1F OiBSZW1lbWJlciB0byBoYW5kbGUgbGFzdF9hbGxvY2F0b3IuICAqLworCWJyZWFrOworICAg ICAgfQorCiAgIGdmY19pbml0X2Jsb2NrICgmdG1wYmxvY2spOwogCiAgIGZvciAoZiA9IGdm Y19zeW1fZ2V0X2R1bW15X2FyZ3MgKHByb2Nfc3ltKTsgZjsgZiA9IGYtPm5leHQpCmRpZmYg LS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgYi9nY2MvZm9ydHJhbi90cmFu cy1vcGVubXAuY2MKaW5kZXggMmYxMTZmZDY3MzguLjc5MzBmMmZkNWQxIDEwMDY0NAotLS0g YS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMt b3Blbm1wLmNjCkBAIC0yNzM5LDM0ICsyNzM5LDQ4IEBAIGdmY190cmFuc19vbXBfY2xhdXNl cyAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNsYXVzZXMsCiAJICAg ICAgfQogCSAgYnJlYWs7CiAJY2FzZSBPTVBfTElTVF9BTExPQ0FURToKLQkgIGZvciAoOyBu ICE9IE5VTEw7IG4gPSBuLT5uZXh0KQotCSAgICBpZiAobi0+c3ltLT5hdHRyLnJlZmVyZW5j ZWQpCi0JICAgICAgewotCQl0cmVlIHQgPSBnZmNfdHJhbnNfb21wX3ZhcmlhYmxlIChuLT5z eW0sIGZhbHNlKTsKLQkJaWYgKHQgIT0gZXJyb3JfbWFya19ub2RlKQotCQkgIHsKLQkJICAg IHRyZWUgbm9kZSA9IGJ1aWxkX29tcF9jbGF1c2UgKGlucHV0X2xvY2F0aW9uLAotCQkJCQkJ ICBPTVBfQ0xBVVNFX0FMTE9DQVRFKTsKLQkJICAgIE9NUF9DTEFVU0VfREVDTCAobm9kZSkg PSB0OwotCQkgICAgaWYgKG4tPnUyLmFsbG9jYXRvcikKLQkJICAgICAgewotCQkJdHJlZSBh bGxvY2F0b3JfOwotCQkJZ2ZjX2luaXRfc2UgKCZzZSwgTlVMTCk7Ci0JCQlnZmNfY29udl9l eHByICgmc2UsIG4tPnUyLmFsbG9jYXRvcik7Ci0JCQlhbGxvY2F0b3JfID0gZ2ZjX2V2YWx1 YXRlX25vdyAoc2UuZXhwciwgYmxvY2spOwotCQkJT01QX0NMQVVTRV9BTExPQ0FURV9BTExP Q0FUT1IgKG5vZGUpID0gYWxsb2NhdG9yXzsKLQkJICAgICAgfQotCQkgICAgaWYgKG4tPnUu YWxpZ24pCi0JCSAgICAgIHsKLQkJCXRyZWUgYWxpZ25fOwotCQkJZ2ZjX2luaXRfc2UgKCZz ZSwgTlVMTCk7Ci0JCQlnZmNfY29udl9leHByICgmc2UsIG4tPnUuYWxpZ24pOwotCQkJYWxp Z25fID0gZ2ZjX2V2YWx1YXRlX25vdyAoc2UuZXhwciwgYmxvY2spOwotCQkJT01QX0NMQVVT RV9BTExPQ0FURV9BTElHTiAobm9kZSkgPSBhbGlnbl87Ci0JCSAgICAgIH0KLQkJICAgIG9t cF9jbGF1c2VzID0gZ2ZjX3RyYW5zX2FkZF9jbGF1c2UgKG5vZGUsIG9tcF9jbGF1c2VzKTsK LQkJICB9Ci0JICAgICAgfQorCSAgeworCSAgICB0cmVlIGFsbG9jYXRvcl8gPSBOVUxMX1RS RUU7CisJICAgIGdmY19leHByICphbGxvY19leHByID0gTlVMTDsKKwkgICAgZm9yICg7IG4g IT0gTlVMTDsgbiA9IG4tPm5leHQpCisJICAgICAgaWYgKG4tPnN5bS0+YXR0ci5yZWZlcmVu Y2VkKQorCQl7CisJCSAgdHJlZSB0ID0gZ2ZjX3RyYW5zX29tcF92YXJpYWJsZSAobi0+c3lt LCBmYWxzZSk7CisJCSAgaWYgKHQgIT0gZXJyb3JfbWFya19ub2RlKQorCQkgICAgeworCQkg ICAgICB0cmVlIG5vZGUgPSBidWlsZF9vbXBfY2xhdXNlIChpbnB1dF9sb2NhdGlvbiwKKwkJ CQkJCSAgICBPTVBfQ0xBVVNFX0FMTE9DQVRFKTsKKwkJICAgICAgT01QX0NMQVVTRV9ERUNM IChub2RlKSA9IHQ7CisJCSAgICAgIGlmIChuLT51Mi5hbGxvY2F0b3IpCisJCQl7CisJCQkg IGlmIChhbGxvY19leHByICE9IG4tPnUyLmFsbG9jYXRvcikKKwkJCSAgICB7CisJCQkgICAg ICBnZmNfaW5pdF9zZSAoJnNlLCBOVUxMKTsKKwkJCSAgICAgIGdmY19jb252X2V4cHIgKCZz ZSwgbi0+dTIuYWxsb2NhdG9yKTsKKwkJCSAgICAgIGdmY19hZGRfYmxvY2tfdG9fYmxvY2sg KGJsb2NrLCAmc2UucHJlKTsKKwkJCSAgICAgIGFsbG9jYXRvcl8gPSBnZmNfZXZhbHVhdGVf bm93IChzZS5leHByLCBibG9jayk7CisJCQkgICAgICBnZmNfYWRkX2Jsb2NrX3RvX2Jsb2Nr IChibG9jaywgJnNlLnBvc3QpOworCQkJICAgIH0KKwkJCSAgT01QX0NMQVVTRV9BTExPQ0FU RV9BTExPQ0FUT1IgKG5vZGUpID0gYWxsb2NhdG9yXzsKKwkJCX0KKwkJICAgICAgYWxsb2Nf ZXhwciA9IG4tPnUyLmFsbG9jYXRvcjsKKwkJICAgICAgaWYgKG4tPnUuYWxpZ24pCisJCQl7 CisJCQkgIHRyZWUgYWxpZ25fOworCQkJICBnZmNfaW5pdF9zZSAoJnNlLCBOVUxMKTsKKwkJ CSAgZ2ZjX2NvbnZfZXhwciAoJnNlLCBuLT51LmFsaWduKTsKKwkJCSAgZ2NjX2Fzc2VydCAo Q09OU1RBTlRfQ0xBU1NfUCAoc2UuZXhwcikKKwkJCQkgICAgICAmJiBzZS5wcmUuaGVhZCA9 PSBOVUxMCisJCQkJICAgICAgJiYgc2UucG9zdC5oZWFkID09IE5VTEwpOworCQkJICBhbGln bl8gPSBzZS5leHByOworCQkJICBPTVBfQ0xBVVNFX0FMTE9DQVRFX0FMSUdOIChub2RlKSA9 IGFsaWduXzsKKwkJCX0KKwkJICAgICAgb21wX2NsYXVzZXMgPSBnZmNfdHJhbnNfYWRkX2Ns YXVzZSAobm9kZSwgb21wX2NsYXVzZXMpOworCQkgICAgfQorCQl9CisJICAgICAgZWxzZQor CQlhbGxvY19leHByID0gbi0+dTIuYWxsb2NhdG9yOworCSAgICB9CiAJICBicmVhazsKIAlj YXNlIE9NUF9MSVNUX0xJTkVBUjoKIAkgIHsKQEAgLTcxODQsMTEgKzcxOTgsMTQgQEAgZ2Zj X3RyYW5zX29tcF9zZWN0aW9ucyAoZ2ZjX2NvZGUgKmNvZGUsIGdmY19vbXBfY2xhdXNlcyAq Y2xhdXNlcykKIHN0YXRpYyB0cmVlCiBnZmNfdHJhbnNfb21wX3NpbmdsZSAoZ2ZjX2NvZGUg KmNvZGUsIGdmY19vbXBfY2xhdXNlcyAqY2xhdXNlcykKIHsKLSAgdHJlZSBvbXBfY2xhdXNl cyA9IGdmY190cmFuc19vbXBfY2xhdXNlcyAoTlVMTCwgY2xhdXNlcywgY29kZS0+bG9jKTsK KyAgc3RtdGJsb2NrX3QgYmxvY2s7CisgIGdmY19zdGFydF9ibG9jayAoJmJsb2NrKTsKKyAg dHJlZSBvbXBfY2xhdXNlcyA9IGdmY190cmFuc19vbXBfY2xhdXNlcyAoJmJsb2NrLCBjbGF1 c2VzLCBjb2RlLT5sb2MpOwogICB0cmVlIHN0bXQgPSBnZmNfdHJhbnNfb21wX2NvZGUgKGNv ZGUtPmJsb2NrLT5uZXh0LCB0cnVlKTsKICAgc3RtdCA9IGJ1aWxkMl9sb2MgKGdmY19nZXRf bG9jYXRpb24gKCZjb2RlLT5sb2MpLCBPTVBfU0lOR0xFLCB2b2lkX3R5cGVfbm9kZSwKIAkJ ICAgICBzdG10LCBvbXBfY2xhdXNlcyk7Ci0gIHJldHVybiBzdG10OworICBnZmNfYWRkX2V4 cHJfdG9fYmxvY2sgKCZibG9jaywgc3RtdCk7CisgIHJldHVybiBnZmNfZmluaXNoX2Jsb2Nr ICgmYmxvY2spOwogfQogCiBzdGF0aWMgdHJlZQpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsaWZ5 LmNjIGIvZ2NjL2dpbXBsaWZ5LmNjCmluZGV4IDlmNDcyMmY3NDU4Li40MDJkOWZlYWY5YiAx MDA2NDQKLS0tIGEvZ2NjL2dpbXBsaWZ5LmNjCisrKyBiL2djYy9naW1wbGlmeS5jYwpAQCAt MTQwMCwyMyArMTQwMCw1MyBAQCBnaW1wbGlmeV9iaW5kX2V4cHIgKHRyZWUgKmV4cHJfcCwg Z2ltcGxlX3NlcSAqcHJlX3ApCiAJCQkgICJyZWdpb24gbXVzdCBzcGVjaWZ5IGFuICU8YWxs b2NhdG9yJT4gY2xhdXNlIiwgdCk7CiAJICAgICAgLyogU2tpcCBmb3Igb21wX2RlZmF1bHRf bWVtX2FsbG9jICg9IDEpLAogCQkgdW5sZXNzIGFsaWduIGlzIHByZXNlbnQuICovCi0JICAg ICAgZWxzZSBpZiAoIWVycm9yY291bnQKLQkJICAgICAgICYmIChhbGlnbiAhPSBOVUxMX1RS RUUKLQkJCSAgIHx8IGFsbG9jID09IE5VTExfVFJFRQotCQkJICAgfHwgIWludGVnZXJfb25l cCAoYWxsb2MpKSkKKwkgICAgICBlbHNlIGlmIChlcnJvcmNvdW50CisJCSAgICAgICB8fCAo YWxpZ24gPT0gTlVMTF9UUkVFCisJCQkgICAmJiBhbGxvYyAhPSBOVUxMX1RSRUUKKwkJCSAg ICYmIGludGVnZXJfb25lcCAoYWxsb2MpKSkKKwkJREVDTF9BVFRSSUJVVEVTICh0KSA9IHJl bW92ZV9hdHRyaWJ1dGUgKCJvbXAgYWxsb2NhdGUiLAorCQkJCQkJCURFQ0xfQVRUUklCVVRF UyAodCkpOworCSAgICAgIGVsc2UKIAkJewotCQkgIHRyZWUgdG1wID0gYnVpbGRfcG9pbnRl cl90eXBlIChUUkVFX1RZUEUgKHQpKTsKLQkJICB0cmVlIHYgPSBjcmVhdGVfdG1wX3ZhciAo dG1wLCBnZXRfbmFtZSAodCkpOwotCQkgIERFQ0xfSUdOT1JFRF9QICh2KSA9IDA7Ci0JCSAg dG1wID0gcmVtb3ZlX2F0dHJpYnV0ZSAoIm9tcCBhbGxvY2F0ZSIsIERFQ0xfQVRUUklCVVRF UyAodCkpOwotCQkgIERFQ0xfQVRUUklCVVRFUyAodikKLQkJICAgID0gdHJlZV9jb25zIChn ZXRfaWRlbnRpZmllciAoIm9tcCBhbGxvY2F0ZSB2YXIiKSwKLQkJCQkgYnVpbGRfdHJlZV9s aXN0IChOVUxMX1RSRUUsIHQpLCB0bXApOwotCQkgIHRtcCA9IGJ1aWxkX2ZvbGRfaW5kaXJl Y3RfcmVmICh2KTsKLQkJICBUUkVFX1RISVNfTk9UUkFQICh0bXApID0gMTsKLQkJICBTRVRf REVDTF9WQUxVRV9FWFBSICh0LCB0bXApOwotCQkgIERFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAo dCkgPSAxOwotCQkgIHRyZWUgc3ogPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFICh0KSk7 CisJCSAgLyogRm9ydHJhbiBtaWdodCBhbHJlYWR5IHVzZSBhIHBvaW50ZXIgdHlwZSBpbnRl cm5hbGx5OworCQkgICAgIHVzZSB0aGF0IHBvaW50ZXIgZXhjZXB0IGZvciB0eXBlKENfcHRy KSBhbmQgdHlwZShDX2Z1bnB0cik7CisJCSAgICAgbm90ZSB0aGF0IG5vcm1hbCBwcm9jIHBv aW50ZXJzIGFyZSByZWplY3RlZC4gICovCisJCSAgdHJlZSB0eXBlID0gVFJFRV9UWVBFICh0 KTsKKwkJICB0cmVlIHRtcCwgdjsKKwkJICBpZiAobGFuZ19HTlVfRm9ydHJhbiAoKQorCQkg ICAgICAmJiBQT0lOVEVSX1RZUEVfUCAodHlwZSkKKwkJICAgICAgJiYgVFJFRV9UWVBFICh0 eXBlKSAhPSB2b2lkX3R5cGVfbm9kZQorCQkgICAgICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQ RSAodHlwZSkpICE9IEZVTkNUSU9OX1RZUEUpCisJCSAgICB7CisJCSAgICAgIHR5cGUgPSBU UkVFX1RZUEUgKHR5cGUpOworCQkgICAgICB2ID0gdDsKKwkJICAgIH0KKwkJICBlbHNlCisJ CSAgICB7CisJCSAgICAgIHRtcCA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSk7CisJCSAg ICAgIHYgPSBjcmVhdGVfdG1wX3ZhciAodG1wLCBnZXRfbmFtZSAodCkpOworCQkgICAgICBE RUNMX0lHTk9SRURfUCAodikgPSAwOworCQkgICAgICB0bXAgPSByZW1vdmVfYXR0cmlidXRl ICgib21wIGFsbG9jYXRlIiwgREVDTF9BVFRSSUJVVEVTICh0KSk7CisJCSAgICAgIERFQ0xf QVRUUklCVVRFUyAodikKKwkJCT0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoIm9tcCBh bGxvY2F0ZSB2YXIiKSwKKwkJCQkgICAgIGJ1aWxkX3RyZWVfbGlzdCAoTlVMTF9UUkVFLCB0 KSwgdG1wKTsKKwkJICAgICAgdG1wID0gYnVpbGRfZm9sZF9pbmRpcmVjdF9yZWYgKHYpOwor CQkgICAgICBUUkVFX1RISVNfTk9UUkFQICh0bXApID0gMTsKKwkJICAgICAgU0VUX0RFQ0xf VkFMVUVfRVhQUiAodCwgdG1wKTsKKwkJICAgICAgREVDTF9IQVNfVkFMVUVfRVhQUl9QICh0 KSA9IDE7CisJCSAgICB9CisJCSAgdHJlZSBzeiA9IFRZUEVfU0laRV9VTklUICh0eXBlKTsK KwkJICAvKiBUaGUgc2l6ZSB0byB1c2UgaW4gRm9ydHJhbiBtaWdodCBub3QgbWF0Y2ggVFlQ RV9TSVpFX1VOSVQ7CisJCSAgICAgaGVuY2UsIGZvciBzb21lIGRlY2xzLCBhIHNpemUgdmFy aWFibGUgaXMgc2F2ZWQgaW4gdGhlCisJCSAgICAgYXR0cmlidXRlczsgdXNlIGl0LCBpZiBh dmFpbGFibGUuICAqLworCQkgIGlmIChUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkK KwkJICAgICAgJiYgVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikp KQorCQkgICAgICAmJiBUUkVFX1BVUlBPU0UgKAorCQkJICAgVFJFRV9DSEFJTiAoVFJFRV9D SEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKSkpCisJCSAgICB7CisJCSAgICAgIHN6ID0gVFJF RV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKTsKKwkJICAgICAgc3og PSBUUkVFX1BVUlBPU0UgKHN6KTsKKwkJICAgIH0KIAkJICBpZiAoYWxsb2MgPT0gTlVMTF9U UkVFKQogCQkgICAgYWxsb2MgPSBidWlsZF96ZXJvX2NzdCAocHRyX3R5cGVfbm9kZSk7CiAJ CSAgaWYgKGFsaWduID09IE5VTExfVFJFRSkKQEAgLTE0MjUsMjggKzE0NTUsODggQEAgZ2lt cGxpZnlfYmluZF9leHByICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wKQogCQkg ICAgYWxpZ24gPSBidWlsZF9pbnRfY3N0IChzaXplX3R5cGVfbm9kZSwKIAkJCQkJICAgTUFY ICh0cmVlX3RvX3Vod2kgKGFsaWduKSwKIAkJCQkJCURFQ0xfQUxJR05fVU5JVCAodCkpKTsK KwkJICBsb2NhdGlvbl90IGxvYyA9IERFQ0xfU09VUkNFX0xPQ0FUSU9OICh0KTsKIAkJICB0 bXAgPSBidWlsdGluX2RlY2xfZXhwbGljaXQgKEJVSUxUX0lOX0dPTVBfQUxMT0MpOwotCQkg IHRtcCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh0KSwg dG1wLAotCQkJCQkgICAgIDMsIGFsaWduLCBzeiwgYWxsb2MpOwotCQkgIHRtcCA9IGZvbGRf YnVpbGQyX2xvYyAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKHQpLCBNT0RJRllfRVhQUiwKLQkJ CQkJIFRSRUVfVFlQRSAodiksIHYsCisJCSAgdG1wID0gYnVpbGRfY2FsbF9leHByX2xvYyAo bG9jLCB0bXAsIDMsIGFsaWduLCBzeiwgYWxsb2MpOworCQkgIHRtcCA9IGZvbGRfYnVpbGQy X2xvYyAobG9jLCBNT0RJRllfRVhQUiwgVFJFRV9UWVBFICh2KSwgdiwKIAkJCQkJIGZvbGRf Y29udmVydCAoVFJFRV9UWVBFICh2KSwgdG1wKSk7Ci0JCSAgZ2NjX2Fzc2VydCAoQklORF9F WFBSX0JPRFkgKGJpbmRfZXhwcikgIT0gTlVMTF9UUkVFCi0JCQkgICAgICAmJiAoVFJFRV9D T0RFIChCSU5EX0VYUFJfQk9EWSAoYmluZF9leHByKSkKLQkJCQkgID09IFNUQVRFTUVOVF9M SVNUKSk7Ci0JCSAgdHJlZV9zdG10X2l0ZXJhdG9yIGUgPSB0c2lfc3RhcnQgKEJJTkRfRVhQ Ul9CT0RZIChiaW5kX2V4cHIpKTsKLQkJICB3aGlsZSAoIXRzaV9lbmRfcCAoZSkpCisJCSAg Z2NjX2Fzc2VydCAoQklORF9FWFBSX0JPRFkgKGJpbmRfZXhwcikgIT0gTlVMTF9UUkVFKTsK KwkJICBpZiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKQogCQkgICAgewotCQkg ICAgICBpZiAoKFRSRUVfQ09ERSAoKmUpID09IERFQ0xfRVhQUgotCQkJICAgJiYgVFJFRV9P UEVSQU5EICgqZSwgMCkgPT0gdCkKLQkJCSAgfHwgKFRSRUVfQ09ERSAoKmUpID09IENMRUFO VVBfUE9JTlRfRVhQUgotCQkJICAgICAgJiYgVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKCpl LCAwKSkgPT0gREVDTF9FWFBSCi0JCQkgICAgICAmJiBUUkVFX09QRVJBTkQgKFRSRUVfT1BF UkFORCAoKmUsIDApLCAwKSA9PSB0KSkKLQkJICAgICAgYnJlYWs7CisJCSAgICAgIC8qIEZv cnRyYW4gaXMgc3BlY2lhbCBhcyBpdCBkb2VzIG5vdCBoYXZlIHByb3Blcmx5IG5lc3QKKwkJ CSBkZWNsYXJhdGlvbnMgaW4gYmxvY2tzLiAgQW5kIGFzIHRoZXJlIGlzIG5vCisJCQkgaW5p dGlhbGl6ZXIsIHRoZXJlIGlzIGFsc28gbm8gZXhwcmVzc2lvbiB0byBsb29rIGZvci4KKwkJ CSBIZW5jZSwgdGhlIEZFIG1ha2VzIHRoZSBzdGF0ZW1lbnQgbGlzdCBvZiB0aGUKKwkJCSB0 cnktZmluYWxseSBibG9jayBhdmFpbGFibGUuIFdlIGNhbiBwdXQgdGhlIEdPTVBfYWxsb2MK KwkJCSBhdCB0aGUgdG9wLCB1bmxlc3MgYW4gYWxsb2NhdG9yIG9yIHNpemUgZXhwcmVzc2lv bgorCQkJIHJlcXVpcmVzIHRvIHB1dCBpdCBhZnRlcndhcmQ7IG5vdGUgdGhhdCB0aGUgc2l6 ZSBpcworCQkJIGFsd2F5cyBsYXRlciBpbiBnZW5lcmF0ZWQgY29kZTsgZm9yIHN0cmluZ3Ms IG5vCisJCQkgc2l6ZSBleHByIGJ1dCBzdGlsbCBhbiBleHByIG1pZ2h0IGJlIGF2YWlsYWJs ZS4gICovCisJCSAgICAgIHRyZWUgc2wgPSBUUkVFX1BVUlBPU0UgKFRSRUVfQ0hBSU4gKFRS RUVfVkFMVUUgKGF0dHIpKSk7CisJCSAgICAgIHRyZWVfc3RtdF9pdGVyYXRvciBlID0gdHNp X3N0YXJ0IChzbCk7CisJCSAgICAgIHRyZWUgbmVlZGxlID0gTlVMTF9UUkVFOworCQkgICAg ICBpZiAoVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKSkKKwkJ CXsKKwkJCSAgbmVlZGxlID0gVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAo YXR0cikpKTsKKwkJCSAgbmVlZGxlID0gKFRSRUVfVkFMVUUgKG5lZWRsZSkgPyBUUkVFX1ZB TFVFIChuZWVkbGUpCisJCQkJCQkJOiBzeik7CisJCQl9CisJCSAgICAgIGVsc2UgaWYgKFRS RUVfQ0hBSU4gKFRSRUVfQ0hBSU4gKFRSRUVfVkFMVUUgKGF0dHIpKSkpCisJCQluZWVkbGUg PSBzejsKKwkJICAgICAgZWxzZSBpZiAoREVDTF9QIChhbGxvYykgJiYgREVDTF9BUlRJRklD SUFMIChhbGxvYykpCisJCQluZWVkbGUgPSBhbGxvYzsKKworCQkgICAgICBpZiAobmVlZGxl ICE9IE5VTExfVFJFRSkKKwkJCXsKKwkJCSAgd2hpbGUgKCF0c2lfZW5kX3AgKGUpKQorCQkJ ICAgIHsKKwkJCSAgICAgIGlmICgqZSA9PSBuZWVkbGUKKwkJCQkgIHx8IChUUkVFX0NPREUg KCplKSA9PSBNT0RJRllfRVhQUgorCQkJCSAgICAgICYmIFRSRUVfT1BFUkFORCAoKmUsIDAp ID09IG5lZWRsZSkpCisJCQkJYnJlYWs7CisJCQkgICAgICArK2U7CisJCQkgICAgfQorCQkJ ICBnY2NfYXNzZXJ0ICghdHNpX2VuZF9wIChlKSk7CisJCQl9CisJCSAgICAgIHRzaV9saW5r X2FmdGVyICgmZSwgdG1wLCBUU0lfU0FNRV9TVE1UKTsKKworCQkgICAgICAvKiBBcyB0aGUg Y2xlYW51cCBpcyBpbiBCSU5EX0VYUFJfQk9EWSwgR09NUF9mcmVlIGlzIGFkZGVkCisJCQkg aGVyZTsgZm9yIEMvQysrIGl0IHdpbGwgYmUgYWRkZWQgaW4gdGhlICdjbGVhbnVwJworCQkJ IHNlY3Rpb24gYWZ0ZXIgZ2ltcGxpZmljYXRpb24uIEJ1dCBGb3J0cmFuIGFscmVhZHkgaGFz CisJCQkgYSB0cnktZmluYWxseSBibG9jay4gICovCisJCSAgICAgIHNsID0gVFJFRV9WQUxV RSAoVFJFRV9DSEFJTiAoVFJFRV9WQUxVRSAoYXR0cikpKTsKKwkJICAgICAgZSA9IHRzaV9s YXN0IChzbCk7CisJCSAgICAgIHRtcCA9IGJ1aWx0aW5fZGVjbF9leHBsaWNpdCAoQlVJTFRf SU5fR09NUF9GUkVFKTsKKwkJICAgICAgdG1wID0gYnVpbGRfY2FsbF9leHByX2xvYyAoRVhQ Ul9MT0NBVElPTiAoKmUpLCB0bXAsIDIsIHYsCisJCQkJCQkgYnVpbGRfemVyb19jc3QgKHB0 cl90eXBlX25vZGUpKTsKKwkJICAgICAgdHNpX2xpbmtfYWZ0ZXIgKCZlLCB0bXAsIFRTSV9T QU1FX1NUTVQpOworCQkgICAgICB0bXAgPSBidWlsZF9jbG9iYmVyIChUUkVFX1RZUEUgKHYp LCBDTE9CQkVSX0VPTCk7CisJCSAgICAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAobG9jLCBN T0RJRllfRVhQUiwgVFJFRV9UWVBFICh2KSwgdiwKKwkJCQkJICAgICBmb2xkX2NvbnZlcnQg KFRSRUVfVFlQRSAodiksIHRtcCkpOwogCQkgICAgICArK2U7CisJCSAgICAgIHRzaV9saW5r X2FmdGVyICgmZSwgdG1wLCBUU0lfU0FNRV9TVE1UKTsKIAkJICAgIH0KLQkJICBnY2NfYXNz ZXJ0ICghdHNpX2VuZF9wIChlKSk7Ci0JCSAgdHNpX2xpbmtfYmVmb3JlICgmZSwgdG1wLCBU U0lfU0FNRV9TVE1UKTsKKwkJICBlbHNlCisJCSAgICB7CisJCSAgICAgIGdjY19hc3NlcnQg KFRSRUVfQ09ERSAoQklORF9FWFBSX0JPRFkgKGJpbmRfZXhwcikpCisJCQkJICA9PSBTVEFU RU1FTlRfTElTVCk7CisJCSAgICAgIHRyZWVfc3RtdF9pdGVyYXRvciBlOworCQkgICAgICBl ID0gdHNpX3N0YXJ0IChCSU5EX0VYUFJfQk9EWSAoYmluZF9leHByKSk7CisJCSAgICAgIHdo aWxlICghdHNpX2VuZF9wIChlKSkKKwkJCXsKKwkJCSAgaWYgKChUUkVFX0NPREUgKCplKSA9 PSBERUNMX0VYUFIKKwkJCSAgICAgICAmJiBUUkVFX09QRVJBTkQgKCplLCAwKSA9PSB0KQor CQkJICAgICAgfHwgKFRSRUVfQ09ERSAoKmUpID09IENMRUFOVVBfUE9JTlRfRVhQUgorCQkJ CSAgJiYgKFRSRUVfQ09ERSAoVFJFRV9PUEVSQU5EICgqZSwgMCkpCisJCQkJICAgICAgPT0g REVDTF9FWFBSKQorCQkJCSAgJiYgKFRSRUVfT1BFUkFORCAoVFJFRV9PUEVSQU5EICgqZSwg MCksIDApCisJCQkJICAgICAgPT0gdCkpKQorCQkJICAgIGJyZWFrOworCQkJICArK2U7CisJ CQl9CisJCSAgICAgIGdjY19hc3NlcnQgKCF0c2lfZW5kX3AgKGUpKTsKKwkJICAgICAgdHNp X2xpbmtfYmVmb3JlICgmZSwgdG1wLCBUU0lfU0FNRV9TVE1UKTsKKwkJICAgfQogCQl9CiAJ ICAgIH0KIApAQCAtMTUzOSwxNiArMTYyOSwyNSBAQCBnaW1wbGlmeV9iaW5kX2V4cHIgKHRy ZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3ApCiAJICAmJiAhaXNfZ2xvYmFsX3ZhciAo dCkKIAkgICYmIERFQ0xfQ09OVEVYVCAodCkgPT0gY3VycmVudF9mdW5jdGlvbl9kZWNsKQog CXsKKwkgIHRyZWUgYXR0cjsKIAkgIGlmIChmbGFnX29wZW5tcAotCSAgICAgICYmIERFQ0xf SEFTX1ZBTFVFX0VYUFJfUCAodCkKIAkgICAgICAmJiBUUkVFX1VTRUQgKHQpCi0JICAgICAg JiYgbG9va3VwX2F0dHJpYnV0ZSAoIm9tcCBhbGxvY2F0ZSIsIERFQ0xfQVRUUklCVVRFUyAo dCkpKQorCSAgICAgICYmICgoYXR0ciA9IGxvb2t1cF9hdHRyaWJ1dGUgKCJvbXAgYWxsb2Nh dGUiLAorCQkJCQkgICAgREVDTF9BVFRSSUJVVEVTICh0KSkpICE9IE5VTExfVFJFRSkKKwkg ICAgICAmJiBUUkVFX0NIQUlOIChUUkVFX1ZBTFVFIChhdHRyKSkgPT0gTlVMTF9UUkVFKQog CSAgICB7CisJICAgICAgLyogRm9yIEZvcnRyYW4sIHRoZSBHT01QX2ZyZWUgaGFzIGFscmVh ZHkgYmVlbiBhZGRlZCBhYm92ZS4gICovCisJICAgICAgdHJlZSB2ID0gKERFQ0xfSEFTX1ZB TFVFX0VYUFJfUCAodCkKKwkJCT8gVFJFRV9PUEVSQU5EIChERUNMX1ZBTFVFX0VYUFIgKHQp LCAwKSA6IHQpOwogCSAgICAgIHRyZWUgdG1wID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChC VUlMVF9JTl9HT01QX0ZSRUUpOwotCSAgICAgIHRtcCA9IGJ1aWxkX2NhbGxfZXhwcl9sb2Mg KGVuZF9sb2N1cywgdG1wLCAyLAotCQkJCQkgVFJFRV9PUEVSQU5EIChERUNMX1ZBTFVFX0VY UFIgKHQpLCAwKSwKKwkgICAgICB0bXAgPSBidWlsZF9jYWxsX2V4cHJfbG9jIChlbmRfbG9j dXMsIHRtcCwgMiwgdiwKIAkJCQkJIGJ1aWxkX3plcm9fY3N0IChwdHJfdHlwZV9ub2RlKSk7 CiAJICAgICAgZ2ltcGxpZnlfYW5kX2FkZCAodG1wLCAmY2xlYW51cCk7CisJICAgICAgZ2lt cGxlICpjbG9iYmVyX3N0bXQ7CisJICAgICAgdG1wID0gYnVpbGRfY2xvYmJlciAoVFJFRV9U WVBFICh2KSwgQ0xPQkJFUl9FT0wpOworCSAgICAgIGNsb2JiZXJfc3RtdCA9IGdpbXBsZV9i dWlsZF9hc3NpZ24gKHYsIHRtcCk7CisJICAgICAgZ2ltcGxlX3NldF9sb2NhdGlvbiAoY2xv YmJlcl9zdG10LCBlbmRfbG9jdXMpOworCSAgICAgIGdpbXBsaWZ5X3NlcV9hZGRfc3RtdCAo JmNsZWFudXAsIGNsb2JiZXJfc3RtdCk7CiAJICAgIH0KIAkgIGlmICghREVDTF9IQVJEX1JF R0lTVEVSICh0KQogCSAgICAgICYmICFUUkVFX1RISVNfVk9MQVRJTEUgKHQpCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE0LmMgYi9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE0LmMKaW5kZXggYjI1 ZGE1NDk3YzUuLjg5NDkyMWE3NmQ1IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9nb21wL2FsbG9jYXRlLTE0LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vZ29tcC9hbGxvY2F0ZS0xNC5jCkBAIC0xNyw3ICsxNyw3IEBAIGggKCkKIHsKICAg I3ByYWdtYSBvbXAgdGFyZ2V0CiAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbAotICAgICNwcmFn bWEgb21wIHNlcmlhbAorICAgICNwcmFnbWEgb21wIHNpbmdsZQogICAgICB7CiAgICAgICAg aW50IHZhcjJbNV07ICAvKiB7IGRnLWVycm9yICInYWxsb2NhdGUnIGRpcmVjdGl2ZSBmb3Ig J3ZhcjInIGluc2lkZSBhIHRhcmdldCByZWdpb24gbXVzdCBzcGVjaWZ5IGFuICdhbGxvY2F0 b3InIGNsYXVzZSIgfSAqLwogICAgICAgICNwcmFnbWEgb21wIGFsbG9jYXRlKHZhcjIpCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE1 LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE1LmMKaW5k ZXggMTUxMDViOTEwMmUuLjUyY2I3Njg2YjdiIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTE1LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS0xNS5jCkBAIC0xOSw3ICsxOSw3IEBAIGggKCkK IHsKICAgI3ByYWdtYSBvbXAgdGFyZ2V0CiAgICAjcHJhZ21hIG9tcCBwYXJhbGxlbAotICAg ICNwcmFnbWEgb21wIHNlcmlhbAorICAgICNwcmFnbWEgb21wIHNpbmdsZQogICAgICB7CiAg ICAgICAgaW50IHZhcjJbNV07CiAgICAgICAgI3ByYWdtYSBvbXAgYWxsb2NhdGUodmFyMikK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2dvbXAvYWxsb2NhdGUt OS5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9hbGxvY2F0ZS05LmMKaW5k ZXggM2MxMTA4MGRkMTYuLjMxMzgyNzQ4YmU2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTkuYworKysgYi9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9nb21wL2FsbG9jYXRlLTkuYwpAQCAtMjAsNyArMjAsNyBAQCB0eXBlZGVm IGVudW0gb21wX2FsbG9jYXRvcl9oYW5kbGVfdAogc3RhdGljIGludCBBWzVdID0gezEsMiwz LDQsNX07CiBpbnQgQiwgQywgRDsKIAotLyogSWYgdGhlIGZvbGxvd2luZyBmYWlscyBiYWNh dXNlIG9mIGFkZGVkIHByZWRlZmluZWQgYWxsb2NhdG9ycywgcGxlYXNlIHVwZGF0ZQorLyog SWYgdGhlIGZvbGxvd2luZyBmYWlscyBiZWNhdXNlIG9mIGFkZGVkIHByZWRlZmluZWQgYWxs b2NhdG9ycywgcGxlYXNlIHVwZGF0ZQogICAgLSBjL2MtcGFyc2VyLmMncyBjX3BhcnNlcl9v bXBfYWxsb2NhdGUKICAgIC0gZm9ydHJhbi9vcGVubXAuY2MncyBpc19wcmVkZWZpbmVkX2Fs bG9jYXRvcgogICAgLSBsaWJnb21wL2Vudi5jJ3MgcGFyc2VfYWxsb2NhdG9yCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTAuZjkwIGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEwLmY5MApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzM5YWEzYTk3ZmIKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTAu ZjkwCkBAIC0wLDAgKzEsNzQgQEAKKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1XYWxs IC1mZHVtcC10cmVlLWdpbXBsZSIgfQorCittb2R1bGUgbQordXNlIGlzb19jX2JpbmRpbmcK K2ludGVnZXIsIHBhcmFtZXRlciA6OiBvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kID0gY19p bnRwdHJfdAorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tp bmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbnVsbF9hbGxvY2F0 b3IgPSAwCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9kZWZhdWx0X21lbV9h bGxvYyA9IDEKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9r aW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2xhcmdlX2NhcF9t ZW1fYWxsb2MgPSAyCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5k bGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9jb25zdF9t ZW1fYWxsb2MgPSAzCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5k bGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9oaWdoX2J3 X21lbV9hbGxvYyA9IDQKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2xvd19s YXRfbWVtX2FsbG9jID0gNQorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3Jf aGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfY2dy b3VwX21lbV9hbGxvYyA9IDYKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9y X2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX3B0 ZWFtX21lbV9hbGxvYyA9IDcKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9y X2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX3Ro cmVhZF9tZW1fYWxsb2MgPSA4CitlbmQKKworCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfYWxsb2MiIDMgImdpbXBsZSIgfSB9CishIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSIg MyAiZ2ltcGxlIiB9IH0KKworc3Vicm91dGluZSBmCisgIHVzZSBtCisgIGltcGxpY2l0IG5v bmUKKyAgaW50ZWdlciA6OiBuCisgIGJsb2NrCisgICAgaW50ZWdlciA6OiBBKG4pICEgeyBk Zy13YXJuaW5nICJVbnVzZWQgdmFyaWFibGUgJ2EnIGRlY2xhcmVkIiB9CisgIGVuZCBibG9j aworZW5kCisKK3N1YnJvdXRpbmUgZjIKKyAgdXNlIG0KKyAgaW1wbGljaXQgbm9uZQorICBp bnRlZ2VyIDo6IG4gICEgeyBkZy1ub3RlICInbicgd2FzIGRlY2xhcmVkIGhlcmUiIH0KKyAg YmxvY2sKKyAgICBpbnRlZ2VyIDo6IEEobikgICEgeyBkZy13YXJuaW5nICInbicgaXMgdXNl ZCB1bmluaXRpYWxpemVkIiB9CisgICAgISRvbXAgYWxsb2NhdGUoQSkKKyAgICAhIGJ5IG1h dGNoaW5nICdBJyBhYm92ZSwgVFJFRV9VU0UgaXMgc2V0LiBIZW5jZToKKyAgICAhIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYSA9IF9fYnVpbHRpbl9HT01QX2FsbG9j IFxcKC4sIERcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUgXFwo YSwgMEJcXCk7IiAxICJnaW1wbGUiIH0gfQorICBlbmQgYmxvY2sKK2VuZAorCitzdWJyb3V0 aW5lIGgxKCkKKyAgdXNlIG0KKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyKG9tcF9hbGxv Y2F0b3JfaGFuZGxlX2tpbmQpIG15X2hhbmRsZSAgISB7IGRnLW5vdGUgIidteV9oYW5kbGUn IHdhcyBkZWNsYXJlZCBoZXJlIiB9CisgIGludGVnZXIgOjogQjEoMykgICEgeyBkZy13YXJu aW5nICInbXlfaGFuZGxlJyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0KKyAgISRvbXAgYWxs b2NhdGUoQjEpIGFsbG9jYXRvcihteV9oYW5kbGUpCisgIEIxKDEpID0gNQorICAhIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYjEuXFswLTlcXSsgPSBfX2J1aWx0aW5f R09NUF9hbGxvYyBcXCg0LCAxMiwgbXlfaGFuZGxlXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAg ISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2Zy ZWUgXFwoYjEuXFswLTlcXSssIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KK2VuZAorCitzdWJy b3V0aW5lIGgyKCkKKyAgdXNlIG0KKyAgaW1wbGljaXQgbm9uZQorICBpbnRlZ2VyKG9tcF9h bGxvY2F0b3JfaGFuZGxlX2tpbmQpIG15X2hhbmRsZSAgISB7IGRnLW5vdGUgIidteV9oYW5k bGUnIHdhcyBkZWNsYXJlZCBoZXJlIiB9CisgIGJsb2NrCisgICAgaW50ZWdlciA6OiBCMigz KSAgISB7IGRnLXdhcm5pbmcgIidteV9oYW5kbGUnIGlzIHVzZWQgdW5pbml0aWFsaXplZCIg fQorICAgICEkb21wIGFsbG9jYXRlKEIyKSBhbGxvY2F0b3IobXlfaGFuZGxlKSAhIE5vIGR1 bXAgYXMgJ0IyJyBpcyB1bnVzZWQKKyAgICAhIGJ5IG1hdGNoaW5nICdCMicgYWJvdmUsIFRS RUVfVVNFIGlzIHNldC4gSGVuY2U6CisgICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgImIyLlxbMC05XF0rID0gX19idWlsdGluX0dPTVBfYWxsb2MgXFwoNCwgMTIs IG15X2hhbmRsZVxcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoYjIuXFswLTlcXSss IDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAgZW5kIGJsb2NrCitlbmQKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMS5mOTAgYi9nY2Mv dGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTEuZjkwCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YThkOTM5MzBiMAotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMS5mOTAK QEAgLTAsMCArMSwzMyBAQAorbW9kdWxlIG0KK3VzZSBpc29fY19iaW5kaW5nCitpbnRlZ2Vy LCBwYXJhbWV0ZXIgOjogb21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCA9IGNfaW50cHRyX3QK KyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgor ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX251bGxfYWxsb2NhdG9yID0gMAor ICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisg ICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfZGVmYXVsdF9tZW1fYWxsb2MgPSAx CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYK KyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9j ID0gMgorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQp LCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfY29uc3RfbWVtX2FsbG9j ID0gMworICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQp LCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfaGlnaF9id19tZW1fYWxs b2MgPSA0CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sb3dfbGF0X21lbV9h bGxvYyA9IDUKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9r aW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2Nncm91cF9tZW1f YWxsb2MgPSA2CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVf a2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9wdGVhbV9tZW1f YWxsb2MgPSA3CisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVf a2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF90aHJlYWRfbWVt X2FsbG9jID0gOAorZW5kCisKK3N1YnJvdXRpbmUgZiAoKQorICB1c2UgbQorICBpbXBsaWNp dCBub25lCisgIGludGVnZXIgOjogaQorICAhJG9tcCBwYXJhbGxlbCBmaXJzdHByaXZhdGUo aSkgYWxsb2NhdGUoYWxsb2NhdG9yKG9tcF9sb3dfbGF0ZW5jeV9tZW1fYWxsb2MpOiBpKQor ICAgICEgeyBkZy1lcnJvciAiU3ltYm9sICdvbXBfbG93X2xhdGVuY3lfbWVtX2FsbG9jJyBh dCAuMS4gaGFzIG5vIElNUExJQ0lUIHR5cGU7IGRpZCB5b3UgbWVhbiAnb21wX2xvd19sYXRf bWVtX2FsbG9jJ1xcXD8iICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KKyAgICAhIHsgZGct ZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUgJ29tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQnIGtpbmQgYXQgLjEuIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMiB9 CisgICAgaSA9IDQKKyAgISRvbXAgZW5kIHBhcmFsbGVsCitlbmQKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMi5mOTAgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtMTIuZjkwCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xODNjMjk0MTgxOQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMi5mOTAKQEAg LTAsMCArMSwyNCBAQAorbW9kdWxlIG0KKyAgaW1wbGljaXQgbm9uZQorY29udGFpbnMKK3N1 YnJvdXRpbmUgZiAoKQorICAhJG9tcCBkZWNsYXJlIHRhcmdldAorICBpbnRlZ2VyIDo6IHZh ciAgISB7IGRnLWVycm9yICInYWxsb2NhdGUnIGRpcmVjdGl2ZSBmb3IgJ3ZhcicgaW5zaWRl IGEgdGFyZ2V0IHJlZ2lvbiBtdXN0IHNwZWNpZnkgYW4gJ2FsbG9jYXRvcicgY2xhdXNlIiB9 CisgICEkb21wIGFsbG9jYXRlKHZhcikKKyAgdmFyID0gNQorZW5kCisKK3N1YnJvdXRpbmUg aCAoKQorICAhJG9tcCB0YXJnZXQKKyAgICEkb21wIHBhcmFsbGVsCisgICAgISRvbXAgc2lu Z2xlCisgICAgICAgYmxvY2sKKyAgICAgICBpbnRlZ2VyIDo6IHZhcjIoNSkgICEgeyBkZy1l cnJvciAiJ2FsbG9jYXRlJyBkaXJlY3RpdmUgZm9yICd2YXIyJyBpbnNpZGUgYSB0YXJnZXQg cmVnaW9uIG11c3Qgc3BlY2lmeSBhbiAnYWxsb2NhdG9yJyBjbGF1c2UiIH0KKyAgICAgICAg ICEkb21wIGFsbG9jYXRlKHZhcjIpCisgICAgICAgICB2YXIyKDEpID0gNworICAgICAgIGVu ZCBibG9jaworICAgICEkb21wIGVuZCBzaW5nbGUKKyAgICEkb21wIGVuZCBwYXJhbGxlbAor ICAhJG9tcCBlbmQgdGFyZ2V0ICAKK2VuZAorZW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEzLmY5MCBiL2djYy90ZXN0 c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS0xMy5mOTAKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJmOGE1YTJiZWUyCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTEzLmY5MApAQCAt MCwwICsxLDI1IEBACittb2R1bGUgbQorICBpbXBsaWNpdCBub25lCisgICEkb21wIHJlcXVp cmVzIGR5bmFtaWNfYWxsb2NhdG9ycworY29udGFpbnMKK3N1YnJvdXRpbmUgZiAoKQorICAh JG9tcCBkZWNsYXJlIHRhcmdldAorICBpbnRlZ2VyIDo6IHZhcgorICAhJG9tcCBhbGxvY2F0 ZSh2YXIpCisgIHZhciA9IDUKK2VuZAorCitzdWJyb3V0aW5lIGggKCkKKyAgISRvbXAgdGFy Z2V0CisgICAhJG9tcCBwYXJhbGxlbAorICAgICEkb21wIHNpbmdsZQorICAgICAgYmxvY2sK KyAgICAgICBpbnRlZ2VyIDo6IHZhcjIoNSkKKyAgICAgICAhJG9tcCBhbGxvY2F0ZSh2YXIy KQorICAgICAgIHZhcjIoMSkgPSA3CisgICAgICBlbmQgYmxvY2sKKyAgICAhJG9tcCBlbmQg c2luZ2xlCisgICAhJG9tcCBlbmQgcGFyYWxsZWwKKyAgISRvbXAgZW5kIHRhcmdldAorZW5k CitlbmQgbW9kdWxlCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvYWxsb2NhdGUtMTQuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fs bG9jYXRlLTE0LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u OGZmOWMyNTJlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2dvbXAvYWxsb2NhdGUtMTQuZjkwCkBAIC0wLDAgKzEsOTUgQEAKKyEgeyBkZy1hZGRp dGlvbmFsLW9wdGlvbnMgIi1mY29hcnJheT1zaW5nbGUgLWZjcmF5LXBvaW50ZXIiIH0KKwor bW9kdWxlIG0KK3VzZSBpc29fY19iaW5kaW5nCitpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogb21w X2FsbG9jYXRvcl9oYW5kbGVfa2luZCA9IGNfaW50cHRyX3QKKyAgICAgICAgaW50ZWdlciAo a2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBw YXJhbWV0ZXIgOjogb21wX251bGxfYWxsb2NhdG9yID0gMAorICAgICAgICBpbnRlZ2VyIChr aW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBh cmFtZXRlciA6OiBvbXBfZGVmYXVsdF9tZW1fYWxsb2MgPSAxCisgICAgICAgIGludGVnZXIg KGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAg cGFyYW1ldGVyIDo6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jID0gMgorICAgICAgICBpbnRl Z2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAg ICAgIHBhcmFtZXRlciA6OiBvbXBfY29uc3RfbWVtX2FsbG9jID0gMworICAgICAgICBpbnRl Z2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAg ICAgIHBhcmFtZXRlciA6OiBvbXBfaGlnaF9id19tZW1fYWxsb2MgPSA0CisgICAgICAgIGlu dGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAg ICAgICAgcGFyYW1ldGVyIDo6IG9tcF9sb3dfbGF0X21lbV9hbGxvYyA9IDUKKyAgICAgICAg aW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAg ICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2Nncm91cF9tZW1fYWxsb2MgPSA2CisgICAgICAg IGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAg ICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9wdGVhbV9tZW1fYWxsb2MgPSA3CisgICAgICAg IGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAg ICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF90aHJlYWRfbWVtX2FsbG9jID0gOAorZW5kCisK K3N1YnJvdXRpbmUgY29hcnJheXMoeCkKKyAgdXNlIG0KKyAgaW1wbGljaXQgbm9uZQorCisg IGludGVnZXIgOjogeFsqXQorICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB5WzpdLCB6KDop WzpdCisKKyAgISRvbXAgYWxsb2NhdGUoeCkgICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBk dW1teSBhcmd1bWVudCAneCcgYXMgYXJndW1lbnQgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEu T01QIEFMTE9DQVRFIiB9CisKKyAgISRvbXAgYWxsb2NhdG9ycyBhbGxvY2F0ZSh5KSAhIHsg ZGctZXJyb3IgIjI4OlVuZXhwZWN0ZWQgY29hcnJheSAneScgaW4gJ2FsbG9jYXRlJyBhdCAu MS4iIH0KKyAgICBhbGxvY2F0ZSh5WypdKQorCisgICEkb21wIGFsbG9jYXRlKHopICEgeyBk Zy1lcnJvciAiMTc6VW5leHBlY3RlZCBjb2FycmF5ICd6JyBpbiAnYWxsb2NhdGUnIGF0IC4x LiIgfQorICAgIGFsbG9jYXRlKHooNSlbKl0pCisgIHggPSA1CitlbmQgCisKKworaW50ZWdl ciBmdW5jdGlvbiBmKCkgcmVzdWx0KHJlcykKKyAgISRvbXAgYWxsb2NhdGUoZikgICAhIHsg ZGctZXJyb3IgIkFyZ3VtZW50ICdmJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAgQUxM T0NBVEUgZGlyZWN0aXZlIG11c3QgYmUgYSB2YXJpYWJsZSIgfQorICAhJG9tcCBhbGxvY2F0 ZShyZXMpICEgeyBkZy1lcnJvciAiVW5leHBlY3RlZCBmdW5jdGlvbi1yZXN1bHQgdmFyaWFi bGUgJ3JlcycgYXQgLjEuIGluIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIiB9CisgIHJl cyA9IDUKK2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGcoKSByZXN1bHQocmVzKQorICBhbGxv Y2F0YWJsZSA6OiByZXMKKyAgISRvbXAgYWxsb2NhdG9ycyBhbGxvY2F0ZShnKSAgICEgeyBk Zy1lcnJvciAiRXhwZWN0ZWQgdmFyaWFibGUgbGlzdCBhdCAuMS4iIH0KKworICAhJG9tcCBh bGxvY2F0b3JzIGFsbG9jYXRlIChyZXMpCisgIGFsbG9jYXRlKHJlcywgc291cmNlPTUpCisg IGRlYWxsb2NhdGUocmVzKQorCisgICEkb21wIGFsbG9jYXRlIChyZXMpCisgIGFsbG9jYXRl KHJlcywgc291cmNlPTUpCitlbmQKKworCitzdWJyb3V0aW5lIGNyYXlfcHRyKCkKKyAgIHJl YWwgcG9pbnRlZSgxMCkKKyAgIHBvaW50ZXIgKGlwdCwgcG9pbnRlZSkKKyAgICEkb21wIGFs bG9jYXRlKHBvaW50ZWUpICAhIHsgZGctZXJyb3IgIlNvcnJ5LCBDcmF5IHBvaW50ZXJzIGFu ZCBwb2ludGVlcyBzdWNoIGFzICdwb2ludGVlJyBhcmUgbm90IHN1cHBvcnRlZCB3aXRoICEu T01QIEFMTE9DQVRFIGF0IC4xLiIgfQorICAgISRvbXAgYWxsb2NhdGUoaXB0KSAgICAgICEg eyBkZy1lcnJvciAiU29ycnksIENyYXkgcG9pbnRlcnMgYW5kIHBvaW50ZWVzIHN1Y2ggYXMg J2lwdCcgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCAhLk9NUCBBTExPQ0FURSBhdCAuMS4iIH0K K2VuZAorCitzdWJyb3V0aW5lIGVxdWl2CisgIGludGVnZXIgOjogQQorICByZWFsIDo6IEIo MikKKyAgZXF1aXZhbGVuY2UoQSxCKQorICAhJG9tcCBhbGxvY2F0ZSAoQSkgICEgeyBkZy1l cnJvciAiU29ycnksIEVRVUlWQUxFTkNFIG9iamVjdCAnYScgbm90IHN1cHBvcnRlZCB3aXRo ICEuT01QIEFMTE9DQVRFIGF0IC4xLiIgfQorICAhJG9tcCBhbGxvY2F0ZSAoQikgICEgeyBk Zy1lcnJvciAiU29ycnksIEVRVUlWQUxFTkNFIG9iamVjdCAnYicgbm90IHN1cHBvcnRlZCB3 aXRoICEuT01QIEFMTE9DQVRFIGF0IC4xLiIgfQorZW5kCisKK3N1YnJvdXRpbmUgY29tbW9u CisgIHVzZSBtCisgIGludGVnZXIgOjogYSxiLGMoNSkKKyAgY29tbW9uIC9teS8gYSxiLGMK KyAgISRvbXAgYWxsb2NhdGUoYikgYWxsb2NhdG9yKG9tcF9jZ3JvdXBfbWVtX2FsbG9jKSAg ISB7IGRnLWVycm9yICInYicgYXQgLjEuIGlzIHBhcnQgb2YgdGhlIGNvbW1vbiBibG9jayAn L215LycgYW5kIG1heSBvbmx5IGJlIHNwZWNpZmljZWQgaW1wbGljaXRseSB2aWEgdGhlIG5h bWVkIGNvbW1vbiBibG9jayIgfQorZW5kCisKK3N1YnJvdXRpbmUgY19hbmRfZnVuY19wdHJz CisgIHVzZSBpc29fY19iaW5kaW5nCisgIGltcGxpY2l0IG5vbmUKKyAgcHJvY2VkdXJlKCks IHBvaW50ZXIgOjogcAorICB0eXBlKGNfcHRyKSA6OiBjcHRyCisgIHR5cGUoY19wdHIpIDo6 IGNmdW5wdHIKKworICAhJG9tcCBhbGxvY2F0ZShjcHRyKSAgISBPSworICAhJG9tcCBhbGxv Y2F0ZShjZnVucHRyKSAhIE9LPyBBIG5vcm1hbCBkZXJpdmVkLXR5cGUgdmFyPworICAhJG9t cCBhbGxvY2F0ZShwKSAgISB7IGRnLWVycm9yICJBcmd1bWVudCAncCcgYXQgLjEuIHRvIGRl Y2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGRpcmVjdGl2ZSBtdXN0IGJlIGEgdmFyaWFibGUi IH0KK2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2Fs bG9jYXRlLTE1LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0 ZS0xNS5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEwNjkw YTU2Mzk0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9n b21wL2FsbG9jYXRlLTE1LmY5MApAQCAtMCwwICsxLDM4IEBACittb2R1bGUgbQordXNlIGlz b19jX2JpbmRpbmcKK2ludGVnZXIsIHBhcmFtZXRlciA6OiBvbXBfYWxsb2NhdG9yX2hhbmRs ZV9raW5kID0gY19pbnRwdHJfdAorICAgICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0 b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBf bnVsbF9hbGxvY2F0b3IgPSAwCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRv cl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9k ZWZhdWx0X21lbV9hbGxvYyA9IDEKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBfYWxsb2Nh dG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgOjogb21w X2xhcmdlX2NhcF9tZW1fYWxsb2MgPSAyCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6 IG9tcF9jb25zdF9tZW1fYWxsb2MgPSAzCisgICAgICAgIGludGVnZXIgKGtpbmQ9b21wX2Fs bG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIDo6 IG9tcF9oaWdoX2J3X21lbV9hbGxvYyA9IDQKKyAgICAgICAgaW50ZWdlciAoa2luZD1vbXBf YWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIg Ojogb21wX2xvd19sYXRfbWVtX2FsbG9jID0gNQorICAgICAgICBpbnRlZ2VyIChraW5kPW9t cF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAgICAgIHBhcmFtZXRl ciA6OiBvbXBfY2dyb3VwX21lbV9hbGxvYyA9IDYKKyAgICAgICAgaW50ZWdlciAoa2luZD1v bXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0 ZXIgOjogb21wX3B0ZWFtX21lbV9hbGxvYyA9IDcKKyAgICAgICAgaW50ZWdlciAoa2luZD1v bXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAgICBwYXJhbWV0 ZXIgOjogb21wX3RocmVhZF9tZW1fYWxsb2MgPSA4CitlbmQKKworc3Vicm91dGluZSBjb21t b24KKyAgdXNlIG0KKyAgaW50ZWdlciA6OiBhLGIsYyg1KQorICBjb21tb24gL215LyBhLGIs YyAgISB7IGRnLWVycm9yICJTb3JyeSwgIS5PTVAgYWxsb2NhdGUgZm9yIENPTU1PTiBibG9j ayB2YXJpYWJsZSAnbXknIGF0IC4xLiBub3Qgc3VwcG9ydGVkIiB9CisgICEkb21wIGFsbG9j YXRlKC9teS8pIGFsbG9jYXRvcihvbXBfY2dyb3VwX21lbV9hbGxvYykKK2VuZAorCitpbnRl Z2VyIGZ1bmN0aW9uIGFsbG9jYXRvcnMoKSByZXN1bHQocmVzKQorICB1c2UgbQorICBpbnRl Z2VyLCBzYXZlIDo6IGEoNSkgPSBbMSwyLDMsNCw1XSAgISB7IGRnLWVycm9yICJTb3JyeSwg IS5PTVAgYWxsb2NhdGUgZm9yIHZhcmlhYmxlICdhJyBhdCAuMS4gd2l0aCBTQVZFIGF0dHJp YnV0ZSBub3QgeWV0IGltcGxlbWVudGVkIiB9CisgICEkb21wIGFsbG9jYXRlKGEpIGFsbG9j YXRvcihvbXBfaGlnaF9id19tZW1fYWxsb2MpCisgIHJlcyA9IGEoNCkKK2VuZAorCisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS00LmY5 MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS00LmY5MAppbmRl eCBhMmRjZjEwNWVlMS4uYjkzYTM3Yzc4MGMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv Z2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS00LmY5MAorKysgYi9nY2MvdGVzdHN1aXRlL2dm b3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNC5mOTAKQEAgLTMzLDEzICszMywxMyBAQCBpbnRl Z2VyKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksIGludGVudChpbikgOjogbXlf YWxsb2MKIAogIXN0YWNrIHZhcmlhYmxlczoKIGludGVnZXIgOjogYSxiLGMobiksZCg1KSxl KDIpCi0hJG9tcCBhbGxvY2F0ZShhKSAgICEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0 aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgfQorISRvbXAg YWxsb2NhdGUoYSkKICEkb21wIGFsbG9jYXRlICggYiAsIGMgKSBhbGlnbiAoIDMyKSBhbGxv Y2F0b3IgKG15X2FsbG9jKQogISRvbXAgYWxsb2NhdGUgKGQpIGFsaWduKCAxMjggKQogISRv bXAgYWxsb2NhdGUoICAgZSApIGFsbG9jYXRvciggb21wX2hpZ2hfYndfbWVtX2FsbG9jICkK IAogIXNhdmVkIHZhcnMKLWludGVnZXIsIHNhdmUgOjogayxsLG0oNSkscigyKQoraW50ZWdl ciwgc2F2ZSA6OiBrLGwsbSg1KSxyKDIpICAhIHsgZGctZXJyb3IgIlNvcnJ5LCAhLk9NUCBh bGxvY2F0ZSBmb3IgdmFyaWFibGUgJ2snIGF0IC4xLiB3aXRoIFNBVkUgYXR0cmlidXRlIG5v dCB5ZXQgaW1wbGVtZW50ZWQiIH0KICEkb21wIGFsbG9jYXRlKGspICBhbGlnbigxNikgLCBh bGxvY2F0b3IgKG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jKQogISRvbXAgYWxsb2NhdGUgKCBs ICkgYWxsb2NhdG9yIChvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYykgLCBhbGlnbiAoIDMyKQog ISRvbXAgYWxsb2NhdGUgKG0pIGFsaWduKCAxMjggKSxhbGxvY2F0b3IoIG9tcF9oaWdoX2J3 X21lbV9hbGxvYyApCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dv bXAvYWxsb2NhdGUtNy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxs b2NhdGUtNy5mOTAKaW5kZXggYjg1NjIwNGQ0OGEuLmFiODVlMzI3Nzk1IDEwMDY0NAotLS0g YS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtNy5mOTAKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2FsbG9jYXRlLTcuZjkwCkBAIC00Nyw3 ICs0Nyw2IEBAIGludGVnZXIsIHBvaW50ZXIgOjogcHRyCiBpbnRlZ2VyLCBwYXJhbWV0ZXIg OjogcHJtPTUKIAogISRvbXAgYWxsb2NhdGUocHJtKSBhbGlnbig2NCkgISB7IGRnLWVycm9y ICJBcmd1bWVudCAncHJtJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUg ZGlyZWN0aXZlIG11c3QgYmUgYSB2YXJpYWJsZSIgfQotISB7IGRnLWVycm9yICJTb3JyeSwg ZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiAKICEkb21wIGFsbG9jYXRlKHVzZWQpIGFsbG9j YXRvcihvbXBfcHRlYW1fbWVtX2FsbG9jKSAgISB7IGRnLWVycm9yICJBcmd1bWVudCAndXNl ZCcgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIHNoYWxsIGJlIGluIHRo ZSBzYW1lIHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiIgfQogISRvbXAgYWxs b2NhdGUobikgYWxsb2NhdG9yKG9tcF9wdGVhbV9tZW1fYWxsb2MpICEgeyBkZy1lcnJvciAi VW5leHBlY3RlZCBkdW1teSBhcmd1bWVudCAnbicgYXMgYXJndW1lbnQgYXQgLjEuIHRvIGRl Y2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIiB9CkBAIC01OSw3ICs1OCw2IEBAIGNvbnRhaW5z CiAKICAgc3Vicm91dGluZSBpbm5lcgogICAgICEkb21wIGFsbG9jYXRlKGEpIGFsbG9jYXRv cihvbXBfcHRlYW1fbWVtX2FsbG9jKSAgISB7IGRnLWVycm9yICJBcmd1bWVudCAnYScgYXQg LjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIHNoYWxsIGJlIGluIHRoZSBzYW1l IHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiIgfQotISB7IGRnLWVycm9yICJT b3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9y dGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiAgIGVuZAogZW5kCiAKQEAgLTc0LDcg KzcyLDYgQEAgY29tbW9uIC9jb200LyB5LHoKIGFsbG9jYXRhYmxlIDo6IHEKIHBvaW50ZXIg OjogYgogISRvbXAgYWxsb2NhdGUgKGMsIGQpIGFsbG9jYXRvciAob21wX3B0ZWFtX21lbV9h bGxvYykKLSEgeyBkZy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRF IGF0IC4xLiBub3QgeWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQog ISRvbXAgYWxsb2NhdGUgKC9jb200LykgYWxsb2NhdG9yIChvbXBfcHRlYW1fbWVtX2FsbG9j KQogISRvbXAgYWxsb2NhdGUgKGMpIGFsbG9jYXRvciAob21wX3B0ZWFtX21lbV9hbGxvYykg ISB7IGRnLWVycm9yICJEdXBsaWNhdGVkIHZhcmlhYmxlICdjJyBpbiAhLk9NUCBBTExPQ0FU RSIgfQogISRvbXAgYWxsb2NhdGUgKC9jb200LykgYWxsb2NhdG9yIChvbXBfcHRlYW1fbWVt X2FsbG9jKSAhIHsgZGctZXJyb3IgIkR1cGxpY2F0ZWQgY29tbW9uIGJsb2NrICcvY29tNC8n IGluICEuT01QIEFMTE9DQVRFIiB9CkBAIC04Niw3ICs4Myw2IEBAIGVuZAogc3Vicm91dGlu ZSBmb3VyKG4pCiAgIGludGVnZXIgOjogcXEsIHJyLCBzcywgdHQsIHV1LCB2dixuCiAhJG9t cCBhbGxvY2F0ZSAocXEpIGFsaWduKDMrbikgISB7IGRnLWVycm9yICJBTElHTiByZXF1aXJl cyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdubWVudCBleHByZXNz aW9uIGF0IC4xLiB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9Ci0hIHsgZGctZXJyb3IgIlNv cnJ5LCBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBhdCAuMS4gbm90IHlldCBzdXBwb3J0 ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KICEkb21wIGFsbG9jYXRlIChycikgYWxp Z24oWzRdKSAhIHsgZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZl IGNvbnN0YW50IGludGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIHRoYXQgaXMg YSBwb3dlciBvZiB0d28iIH0KICEkb21wIGFsbG9jYXRlIChzcykgYWxpZ24oWzRdKSAhIHsg ZGctZXJyb3IgIkFMSUdOIHJlcXVpcmVzIGEgc2NhbGFyIHBvc2l0aXZlIGNvbnN0YW50IGlu dGVnZXIgYWxpZ25tZW50IGV4cHJlc3Npb24gYXQgLjEuIHRoYXQgaXMgYSBwb3dlciBvZiB0 d28iIH0KICEkb21wIGFsbG9jYXRlICh0dCkgYWxpZ24oMzIuMCkgISB7IGRnLWVycm9yICJB TElHTiByZXF1aXJlcyBhIHNjYWxhciBwb3NpdGl2ZSBjb25zdGFudCBpbnRlZ2VyIGFsaWdu bWVudCBleHByZXNzaW9uIGF0IC4xLiB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIiB9CkBAIC05 OSw3ICs5NSw2IEBAIHN1YnJvdXRpbmUgZml2ZShuLG15X2FsbG9jKQogICBpbnRlZ2VyIDo6 IHFxLCByciwgc3MsIHR0LCB1dSwgdnYsbgogICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFu ZGxlX2tpbmQpIDo6IG15X2FsbG9jCiAhJG9tcCBhbGxvY2F0ZSAocXEpIGFsbG9jYXRvcigz LjApICAhIHsgZGctZXJyb3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUg J29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQnIGtpbmQiIH0KLSEgeyBkZy1lcnJvciAiU29y cnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1cHBvcnRl ZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogISRvbXAgYWxsb2NhdGUgKHJyKSBhbGxv Y2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJFeHBlY3RlZCBpbnRlZ2VyIGV4cHJlc3Npb24g b2YgdGhlICdvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kJyBraW5kIiB9CiAhJG9tcCBhbGxv Y2F0ZSAoc3MpIGFsbG9jYXRvcihbb21wX3B0ZWFtX21lbV9hbGxvY10pICAhIHsgZGctZXJy b3IgIkV4cGVjdGVkIGludGVnZXIgZXhwcmVzc2lvbiBvZiB0aGUgJ29tcF9hbGxvY2F0b3Jf aGFuZGxlX2tpbmQnIGtpbmQiIH0KICEkb21wIGFsbG9jYXRlICh0dCkgYWxsb2NhdG9yKG15 X2FsbG9jKSAgISBPSwpAQCAtMTEzLDcgKzEwOCw2IEBAIHN1YnJvdXRpbmUgZml2ZV9TYXZl QWxsKG4sbXlfYWxsb2MpCiAgIGludGVnZXIgOjogcXEsIHJyLCBzcywgdHQsIHV1LCB2dixu CiAgIGludGVnZXIob21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCkgOjogbXlfYWxsb2MKICEk b21wIGFsbG9jYXRlIChxcSkgYWxsb2NhdG9yKDMuMCkgICEgeyBkZy1lcnJvciAiUHJlZGVm aW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMg dGhlIGxpc3QgaXRlbSAncXEnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9Ci0h IHsgZGctZXJyb3IgIlNvcnJ5LCBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBhdCAuMS4g bm90IHlldCBzdXBwb3J0ZWQiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KICEkb21wIGFs bG9jYXRlIChycikgYWxsb2NhdG9yKDNfMikgICEgeyBkZy1lcnJvciAiUHJlZGVmaW5lZCBh bGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4gYXMgdGhlIGxp c3QgaXRlbSAncnInIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9CiAhJG9tcCBh bGxvY2F0ZSAoc3MpIGFsbG9jYXRvcihbb21wX3B0ZWFtX21lbV9hbGxvY10pICAhIHsgZGct ZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1 c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3NzJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0 dHJpYnV0ZSIgfQogISRvbXAgYWxsb2NhdGUgKHR0KSBhbGxvY2F0b3IobXlfYWxsb2MpICAh IHsgZGctZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRP UiBjbGF1c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3R0JyBhdCAuMi4gaGFzIHRoZSBT QVZFIGF0dHJpYnV0ZSIgfQpAQCAtMTI3LDcgKzEyMSw2IEBAIHN1YnJvdXRpbmUgZml2ZV9T YXZlKG4sbXlfYWxsb2MpCiAgIGludGVnZXIsIHNhdmUgOjogcXEsIHJyLCBzcywgdHQsIHV1 LCB2dgogICBpbnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIDo6IG15X2FsbG9j CiAhJG9tcCBhbGxvY2F0ZSAocXEpIGFsbG9jYXRvcigzLjApICAhIHsgZGctZXJyb3IgIlBy ZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEu IGFzIHRoZSBsaXN0IGl0ZW0gJ3FxJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIg fQotISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgYXQg LjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMSB9CiAhJG9t cCBhbGxvY2F0ZSAocnIpIGFsbG9jYXRvcigzXzIpICAhIHsgZGctZXJyb3IgIlByZWRlZmlu ZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEuIGFzIHRo ZSBsaXN0IGl0ZW0gJ3JyJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQogISRv bXAgYWxsb2NhdGUgKHNzKSBhbGxvY2F0b3IoW29tcF9wdGVhbV9tZW1fYWxsb2NdKSAgISB7 IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1Ig Y2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdzcycgYXQgLjIuIGhhcyB0aGUgU0FW RSBhdHRyaWJ1dGUiIH0KICEkb21wIGFsbG9jYXRlICh0dCkgYWxsb2NhdG9yKG15X2FsbG9j KSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExP Q0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICd0dCcgYXQgLjIuIGhhcyB0 aGUgU0FWRSBhdHRyaWJ1dGUiIH0KQEAgLTEzOSw3ICsxMzIsNiBAQCBtb2R1bGUgZml2ZV9N b2R1bGUKICAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KICAg aW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYwogISRvbXAg YWxsb2NhdGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVk IGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUg bGlzdCBpdGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KLSEgeyBk Zy1lcnJvciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3Qg eWV0IHN1cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogISRvbXAgYWxsb2Nh dGUgKHJyKSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9j YXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBp dGVtICdycicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KICEkb21wIGFsbG9j YXRlIChzcykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJv ciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBh dCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmli dXRlIiB9CiAhJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxvYykgICEgeyBk Zy1lcnJvciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNs YXVzZSBhdCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUg YXR0cmlidXRlIiB9CkBAIC0xNTEsNyArMTQzLDYgQEAgcHJvZ3JhbSBmaXZlX3Byb2dyYW0K ICAgaW50ZWdlciwgc2F2ZSA6OiBxcSwgcnIsIHNzLCB0dCwgdXUsIHZ2LG4KICAgaW50ZWdl cihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYwogISRvbXAgYWxsb2Nh dGUgKHFxKSBhbGxvY2F0b3IoMy4wKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9j YXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBp dGVtICdxcScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KLSEgeyBkZy1lcnJv ciAiU29ycnksIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIGF0IC4xLiBub3QgeWV0IHN1 cHBvcnRlZCIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQogISRvbXAgYWxsb2NhdGUgKHJy KSBhbGxvY2F0b3IoM18yKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciBy ZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdy cicgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KICEkb21wIGFsbG9jYXRlIChz cykgYWxsb2NhdG9yKFtvbXBfcHRlYW1fbWVtX2FsbG9jXSkgICEgeyBkZy1lcnJvciAiUHJl ZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBhdCAuMS4g YXMgdGhlIGxpc3QgaXRlbSAnc3MnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9 CiAhJG9tcCBhbGxvY2F0ZSAodHQpIGFsbG9jYXRvcihteV9hbGxvYykgICEgeyBkZy1lcnJv ciAiUHJlZGVmaW5lZCBhbGxvY2F0b3IgcmVxdWlyZWQgaW4gQUxMT0NBVE9SIGNsYXVzZSBh dCAuMS4gYXMgdGhlIGxpc3QgaXRlbSAndHQnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmli dXRlIiB9CkBAIC0xNzAsNyArMTYxLDYgQEAgc3Vicm91dGluZSBzaXgobixteV9hbGxvYykK ICAgaW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSA6OiBteV9hbGxvYwogCiAh JG9tcCBhbGxvY2F0ZSAoL2NvbTZxcS8pIGFsbG9jYXRvcigzLjApICAhIHsgZGctZXJyb3Ig IlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQg LjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cXEvJyBhdCAuMi4gaGFzIHRoZSBTQVZFIGF0 dHJpYnV0ZSIgfQotISB7IGRnLWVycm9yICJTb3JyeSwgZGVjbGFyYXRpdmUgIS5PTVAgQUxM T0NBVEUgYXQgLjEuIG5vdCB5ZXQgc3VwcG9ydGVkIiAiIiB7IHRhcmdldCAqLSotKiB9IC4t MSB9CiAhJG9tcCBhbGxvY2F0ZSAoL2NvbTZyci8pIGFsbG9jYXRvcigzXzIpICAhIHsgZGct ZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1 c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJy9jb202cnIvJyBhdCAuMi4gaGFzIHRoZSBT QVZFIGF0dHJpYnV0ZSIgfQogISRvbXAgYWxsb2NhdGUgKC9jb202c3MvKSBhbGxvY2F0b3Io W29tcF9wdGVhbV9tZW1fYWxsb2NdKSAgISB7IGRnLWVycm9yICJQcmVkZWZpbmVkIGFsbG9j YXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBp dGVtICcvY29tNnNzLycgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRyaWJ1dGUiIH0KICEkb21w IGFsbG9jYXRlICgvY29tNnR0LykgYWxsb2NhdG9yKG15X2FsbG9jKSAgISB7IGRnLWVycm9y ICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNlIGF0 IC4xLiBhcyB0aGUgbGlzdCBpdGVtICcvY29tNnR0LycgYXQgLjIuIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiIH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29t cC9hbGxvY2F0ZS04LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxv Y2F0ZS04LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmI0 ZDA3ZDBjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRn L2dvbXAvYWxsb2NhdGUtOC5mOTAKQEAgLTAsMCArMSwyOSBAQAorISB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLWZkdW1wLXRyZWUtb3JpZ2luYWwiIH0KKworbW9kdWxlIG0KKyAgdXNl IGlzb19jX2JpbmRpbmcKKyAgIXVzZSBvbXBfbGliLCBvbmx5OiBvbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kCisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IG9t cF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQgPSBjX2ludHB0cl90CisgIGludGVnZXIgOjogYSA9 IDAsIGIgPSA0MiwgYyA9IDAKKworY29udGFpbnMKKyAgaW50ZWdlcihvbXBfYWxsb2NhdG9y X2hhbmRsZV9raW5kKSBmdW5jdGlvbiBnZXRfYWxsb2MoKQorICAgIGFsbG9jYXRhYmxlIDo6 IGdldF9hbGxvYworICAgIGdldF9hbGxvYyA9IDJfb21wX2FsbG9jYXRvcl9oYW5kbGVfa2lu ZAorICBlbmQKKyAgc3Vicm91dGluZSBmb28gKCkKKyAgISRvbXAgc2NvcGUgcHJpdmF0ZSAo YSkgZmlyc3Rwcml2YXRlIChiKSByZWR1Y3Rpb24gKCs6IGMpIGFsbG9jYXRlICggZ2V0X2Fs bG9jKCkgOiBhICwgYiAsIGMpCisgICAgaWYgKGIgLz0gNDIpICYKKyAgICAgIGVycm9yIHN0 b3AKKyAgICBhID0gMzYKKyAgICBiID0gMTUKKyAgICBjID0gYyArIDEKKyAgISRvbXAgZW5k IHNjb3BlCisgIGVuZAorZW5kCisKKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJv bXAgc2NvcGUgcHJpdmF0ZVxcKGFcXCkgZmlyc3Rwcml2YXRlXFwoYlxcKSByZWR1Y3Rpb25c XChcXCs6Y1xcKSBhbGxvY2F0ZVxcKGFsbG9jYXRvclxcKERcXC5cWzAtOVxdK1xcKTphXFwp IGFsbG9jYXRlXFwoYWxsb2NhdG9yXFwoRFxcLlxbMC05XF0rXFwpOmJcXCkgYWxsb2NhdGVc XChhbGxvY2F0b3JcXChEXFwuXFswLTlcXStcXCk6Y1xcKSIgIm9yaWdpbmFsIiB9IH0KKwor ISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkRcXC5cWzAtOVxdKyA9IGdl dF9hbGxvYyBcXChcXCk7XFtcblxyXF0rICpEXFwuXFswLTlcXSsgPSBcXCpEXFwuXFswLTlc XSs7XFtcblxyXF0rICpfX2J1aWx0aW5fZnJlZSBcXChcXCh2b2lkIFxcKlxcKSBEXFwuXFsw LTlcXStcXCk7IiAxICJvcmlnaW5hbCIgfSB9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS05LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvZ29tcC9hbGxvY2F0ZS05LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNGQ5NTUzNjg2YzQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvYWxsb2NhdGUtOS5mOTAKQEAgLTAsMCArMSwxMTIg QEAKK21vZHVsZSBtCit1c2UgaXNvX2NfYmluZGluZworaW50ZWdlciwgcGFyYW1ldGVyIDo6 IG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQgPSBjX2ludHB0cl90CisgICAgICAgIGludGVn ZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAgICAgICAgICAg ICAgcGFyYW1ldGVyIDo6IG9tcF9udWxsX2FsbG9jYXRvciA9IDAKKyAgICAgICAgaW50ZWdl ciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAgICAgICAg ICBwYXJhbWV0ZXIgOjogb21wX2RlZmF1bHRfbWVtX2FsbG9jID0gMQorICAgICAgICBpbnRl Z2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAgICAgICAg ICAgIHBhcmFtZXRlciA6OiBvbXBfbGFyZ2VfY2FwX21lbV9hbGxvYyA9IDIKKyAgICAgICAg aW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAg ICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2NvbnN0X21lbV9hbGxvYyA9IDMKKyAgICAgICAg aW50ZWdlciAoa2luZD1vbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgJgorICAgICAgICAg ICAgICAgICBwYXJhbWV0ZXIgOjogb21wX2hpZ2hfYndfbWVtX2FsbG9jID0gNAorICAgICAg ICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAgICAg ICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfbG93X2xhdF9tZW1fYWxsb2MgPSA1CisgICAg ICAgIGludGVnZXIgKGtpbmQ9b21wX2FsbG9jYXRvcl9oYW5kbGVfa2luZCksICYKKyAgICAg ICAgICAgICAgICAgcGFyYW1ldGVyIDo6IG9tcF9jZ3JvdXBfbWVtX2FsbG9jID0gNgorICAg ICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAg ICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfcHRlYW1fbWVtX2FsbG9jID0gNworICAg ICAgICBpbnRlZ2VyIChraW5kPW9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpLCAmCisgICAg ICAgICAgICAgICAgIHBhcmFtZXRlciA6OiBvbXBfdGhyZWFkX21lbV9hbGxvYyA9IDgKK2Vu ZAorCisKK21vZHVsZSBtMgorICB1c2UgbQorICBpbXBsaWNpdCBub25lCisgIGludGVnZXIg OjogQSg1KSA9IFsxLDIsMyw0LDVdLCBBMiwgQTMsIEE0LCBBNQorICBpbnRlZ2VyIDo6IEIs IEMsIEQKKworISBJZiB0aGUgZm9sbG93aW5nIGZhaWxzIGJlY2F1c2Ugb2YgYWRkZWQgcHJl ZGVmaW5lZCBhbGxvY2F0b3JzLCBwbGVhc2UgdXBkYXRlCishIC0gYy9jLXBhcnNlci5jJ3Mg Y19wYXJzZXJfb21wX2FsbG9jYXRlCishIC0gZm9ydHJhbi9vcGVubXAuY2MncyBpc19wcmVk ZWZpbmVkX2FsbG9jYXRvcgorISAtIGxpYmdvbXAvZW52LmMncyBwYXJzZV9hbGxvY2F0b3IK KyEgLSBsaWJnb21wL2xpYmdvbXAudGV4aSAoZG9jdW1lbnQgdGhlIG5ldyB2YWx1ZXMgLSBt dWx0aXBsZSBsb2NhdGlvbnMpCishICsgZW5zdXJlIHRoYXQgdGhlIG1lbW9yeS1zcGFjZXMg YXJlIGFsc28gdXAgdG8gZGF0ZS4KKworISRvbXAgYWxsb2NhdGUoQSkgYWxpZ24oMzIpIGFs bG9jYXRvcig5X29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpICAhIHsgZGctZXJyb3IgIlBy ZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1c2UgYXQgLjEu IGFzIHRoZSBsaXN0IGl0ZW0gJ2EnIGF0IC4yLiBoYXMgdGhlIFNBVkUgYXR0cmlidXRlIiB9 CisKKyEgdHlwbyBpbiBhbGxvY2F0b3IgbmFtZToKKyEkb21wIGFsbG9jYXRlKEEyKSBhbGxv Y2F0b3Iob21wX2xvd19sYXRlbmN5X21lbV9hbGxvYykgICEgeyBkZy1lcnJvciAiU3ltYm9s ICdvbXBfbG93X2xhdGVuY3lfbWVtX2FsbG9jJyBhdCAuMS4gaGFzIG5vIElNUExJQ0lUIHR5 cGU7IGRpZCB5b3UgbWVhbiAnb21wX2xvd19sYXRfbWVtX2FsbG9jJ1xcPyIgfQorISB7IGRn LWVycm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xh dXNlIGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdhMicgYXQgLjIuIGhhcyB0aGUgU0FWRSBh dHRyaWJ1dGUiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi0xIH0KKworISBhbGlnbiBiZSBjb25z dCBtdWx0aXBsZSBvZiAyCishJG9tcCBhbGxvY2F0ZShBMykgYWxpZ24oMzEpIGFsbG9jYXRv cihvbXBfZGVmYXVsdF9tZW1fYWxsb2MpICEgeyBkZy1lcnJvciAiQUxJR04gcmVxdWlyZXMg YSBzY2FsYXIgcG9zaXRpdmUgY29uc3RhbnQgaW50ZWdlciBhbGlnbm1lbnQgZXhwcmVzc2lv biBhdCAuMS4gdGhhdCBpcyBhIHBvd2VyIG9mIHR3byIgfQorCishIGFsbG9jYXRvciBtaXNz aW5nIChyZXF1aXJlZCBhcyBBIGlzIHN0YXRpYykKKyEkb21wIGFsbG9jYXRlKEE0KSBhbGln bigzMikgISB7IGRnLWVycm9yICJBbiBBTExPQ0FUT1IgY2xhdXNlIGlzIHJlcXVpcmVkIGFz IHRoZSBsaXN0IGl0ZW0gJ2E0JyBhdCAuMS4gaGFzIHRoZSBTQVZFIGF0dHJpYnV0ZSIgfQor CishICJleHByZXNzaW9uIGluIHRoZSBjbGF1c2UgbXVzdCBiZSBhIGNvbnN0YW50IGV4cHJl c3Npb24gdGhhdCBldmFsdWF0ZXMgdG8gb25lIG9mIHRoZQorISBwcmVkZWZpbmVkIG1lbW9y eSBhbGxvY2F0b3IgdmFsdWVzIC0+IG9tcF9sb3dfbGF0X21lbV9hbGxvYyIKKyEkb21wIGFs bG9jYXRlKEIpIGFsbG9jYXRvcihvbXBfaGlnaF9id19tZW1fYWxsb2MrMV9vbXBfYWxsb2Nh dG9yX2hhbmRsZV9raW5kKSBhbGlnbigzMikgISBPSzogb21wX2xvd19sYXRfbWVtX2FsbG9j CisKKyEkb21wIGFsbG9jYXRlKEMpIGFsbG9jYXRvcigyX29tcF9hbGxvY2F0b3JfaGFuZGxl X2tpbmQpICEgT0s6IG9tcF9sYXJnZV9jYXBfbWVtX2FsbG9jCisKKyEkb21wIGFsbG9jYXRl KEE1KSBhbGlnbigzMikgYWxsb2NhdG9yKG9tcF9udWxsX2FsbG9jYXRvcikgISB7IGRnLWVy cm9yICJQcmVkZWZpbmVkIGFsbG9jYXRvciByZXF1aXJlZCBpbiBBTExPQ0FUT1IgY2xhdXNl IGF0IC4xLiBhcyB0aGUgbGlzdCBpdGVtICdhNScgYXQgLjIuIGhhcyB0aGUgU0FWRSBhdHRy aWJ1dGUiIH0KKworISRvbXAgYWxsb2NhdGUoQykgYWxpZ24oMzIpIGFsbG9jYXRvcihvbXBf bGFyZ2VfY2FwX21lbV9hbGxvYykgICEgeyBkZy1lcnJvciAiRHVwbGljYXRlZCB2YXJpYWJs ZSAnYycgaW4gIS5PTVAgQUxMT0NBVEUgYXQgLjEuIiB9CisKK2NvbnRhaW5zCisKK2ludGVn ZXIgZnVuY3Rpb24gZigpCisgICEkb21wIGFsbG9jYXRlKEQpIGFsaWduKDMyKSBhbGxvY2F0 b3Iob21wX2xhcmdlX2NhcF9tZW1fYWxsb2MpICEgeyBkZy1lcnJvciAiQXJndW1lbnQgJ2Qn IGF0IC4xLiB0byBkZWNsYXJhdGl2ZSAhLk9NUCBBTExPQ0FURSBzaGFsbCBiZSBpbiB0aGUg c2FtZSBzY29wZSBhcyB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24iIH0KKyAgZiA9IEEoMSkK K2VuZAorCitpbnRlZ2VyIGZ1bmN0aW9uIGcoKQorICBpbnRlZ2VyIDo6IGEyLCBiMgorICAh JG9tcCBhbGxvY2F0ZShhMikKKyAgISRvbXAgYWxsb2NhdGUoYTIpICAhIHsgZGctZXJyb3Ig IkR1cGxpY2F0ZWQgdmFyaWFibGUgJ2EyJyBpbiAhLk9NUCBBTExPQ0FURSBhdCAuMS4iIH0K KyAgYTI9MTsgYjI9MgorICBibG9jaworICAgIGludGVnZXIgOjogYzIKKyAgICAhJG9tcCBh bGxvY2F0ZShjMiwgYjIpICEgeyBkZy1lcnJvciAiQXJndW1lbnQgJ2IyJyBhdCAuMS4gdG8g ZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgc2hhbGwgYmUgaW4gdGhlIHNhbWUgc2NvcGUg YXMgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIiB9CisgICAgYzIgPSAzCisgICAgZyA9IGMy K2EyK2IyCisgIGVuZCBibG9jaworZW5kCisKK2ludGVnZXIgZnVuY3Rpb24gaChxKQorICBp bnRlZ2VyIDo6IHEKKyAgISRvbXAgYWxsb2NhdGUocSkgICEgeyBkZy1lcnJvciAiVW5leHBl Y3RlZCBkdW1teSBhcmd1bWVudCAncScgYXMgYXJndW1lbnQgYXQgLjEuIHRvIGRlY2xhcmF0 aXZlICEuT01QIEFMTE9DQVRFIiB9CisgIGggPSBxCitlbmQKKworaW50ZWdlciBmdW5jdGlv biBrICgpCisgIGludGVnZXIsIHNhdmUgOjogdmFyMyA9IDgKKyAgISRvbXAgYWxsb2NhdGUo dmFyMykgYWxsb2NhdG9yKC0xX29tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpICAhIHsgZGct ZXJyb3IgIlByZWRlZmluZWQgYWxsb2NhdG9yIHJlcXVpcmVkIGluIEFMTE9DQVRPUiBjbGF1 c2UgYXQgLjEuIGFzIHRoZSBsaXN0IGl0ZW0gJ3ZhcjMnIGF0IC4yLiBoYXMgdGhlIFNBVkUg YXR0cmlidXRlIiB9CisgIGsgPSB2YXIzCitlbmQKK2VuZCBtb2R1bGUKKworCitzdWJyb3V0 aW5lIGZvbworICBpbnRlZ2VyIDo6IGEsIGIKKyAgaW50ZWdlciA6OiBjLCBkLGgKKyAgISRv bXAgYWxsb2NhdGUoYSxiKQorICBiID0gMTsgZCA9IDUKK2NvbnRhaW5zCitzdWJyb3V0aW5l IGludGVybmFsCisgIGludGVnZXIgOjogZSxmCisgICEkb21wIGFsbG9jYXRlKGMsZCkKKyAg ISB7IGRnLWVycm9yICJBcmd1bWVudCAnYycgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01Q IEFMTE9DQVRFIHNoYWxsIGJlIGluIHRoZSBzYW1lIHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBk ZWNsYXJhdGlvbiIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTEgfQorICAhIHsgZGctZXJyb3Ig IkFyZ3VtZW50ICdkJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NBVEUgc2hh bGwgYmUgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIiAi IiB7IHRhcmdldCAqLSotKiB9IC4tMiB9CisgICEkb21wIGFsbG9jYXRlKGUpCisgIGEgPSAx OyBjID0gMjsgZSA9IDQKKyAgYmxvY2sKKyAgICAhJG9tcCBhbGxvY2F0ZShmKSAhIHsgZGct ZXJyb3IgIkFyZ3VtZW50ICdmJyBhdCAuMS4gdG8gZGVjbGFyYXRpdmUgIS5PTVAgQUxMT0NB VEUgc2hhbGwgYmUgaW4gdGhlIHNhbWUgc2NvcGUgYXMgdGhlIHZhcmlhYmxlIGRlY2xhcmF0 aW9uIiB9CisgICAgISRvbXAgYWxsb2NhdGUoaCkgISB7IGRnLWVycm9yICJBcmd1bWVudCAn aCcgYXQgLjEuIHRvIGRlY2xhcmF0aXZlICEuT01QIEFMTE9DQVRFIHNoYWxsIGJlIGluIHRo ZSBzYW1lIHNjb3BlIGFzIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiIgfQorICBlbmQgYmxv Y2sKK2VuZAorZW5kCmRpZmYgLS1naXQgYS9saWJnb21wL2xpYmdvbXAudGV4aSBiL2xpYmdv bXAvbGliZ29tcC50ZXhpCmluZGV4IGJhOGU5MDEzODE0Li4wZDk2NWY5NmQ0OCAxMDA2NDQK LS0tIGEvbGliZ29tcC9saWJnb21wLnRleGkKKysrIGIvbGliZ29tcC9saWJnb21wLnRleGkK QEAgLTIyNSw3ICsyMjUsNyBAQCBUaGUgT3Blbk1QIDQuNSBzcGVjaWZpY2F0aW9uIGlzIGZ1 bGx5IHN1cHBvcnRlZC4KIEBpdGVtIFByZWRlZmluZWQgbWVtb3J5IHNwYWNlcywgbWVtb3J5 IGFsbG9jYXRvcnMsIGFsbG9jYXRvciB0cmFpdHMKICAgICAgIEB0YWIgWSBAdGFiIFNlZSBh bHNvIEByZWZ7TWVtb3J5IGFsbG9jYXRpb259CiBAaXRlbSBNZW1vcnkgbWFuYWdlbWVudCBy b3V0aW5lcyBAdGFiIFkgQHRhYgotQGl0ZW0gQGNvZGV7YWxsb2NhdGV9IGRpcmVjdGl2ZSBA dGFiIFAgQHRhYiBPbmx5IEMsIG9ubHkgc3RhY2sgdmFyaWFibGVzCitAaXRlbSBAY29kZXth bGxvY2F0ZX0gZGlyZWN0aXZlIEB0YWIgUCBAdGFiIE9ubHkgQyBhbmQgRm9ydHJhbiwgb25s eSBzdGFjayB2YXJpYWJsZXMKIEBpdGVtIEBjb2Rle2FsbG9jYXRlfSBjbGF1c2UgQHRhYiBQ IEB0YWIgSW5pdGlhbCBzdXBwb3J0CiBAaXRlbSBAY29kZXt1c2VfZGV2aWNlX2FkZHJ9IGNs YXVzZSBvbiBAY29kZXt0YXJnZXQgZGF0YX0gQHRhYiBZIEB0YWIKIEBpdGVtIEBjb2Rle2Fu Y2VzdG9yfSBtb2RpZmllciBvbiBAY29kZXtkZXZpY2V9IGNsYXVzZSBAdGFiIFkgQHRhYgpA QCAtMjk3LDcgKzI5Nyw3IEBAIFRoZSBPcGVuTVAgNC41IHNwZWNpZmljYXRpb24gaXMgZnVs bHkgc3VwcG9ydGVkLgogQGl0ZW0gQGNvZGV7c3RyaWN0fSBtb2RpZmllciBpbiB0aGUgQGNv ZGV7Z3JhaW5zaXplfSBhbmQgQGNvZGV7bnVtX3Rhc2tzfQogICAgICAgY2xhdXNlcyBvZiB0 aGUgQGNvZGV7dGFza2xvb3B9IGNvbnN0cnVjdCBAdGFiIFkgQHRhYgogQGl0ZW0gQGNvZGV7 YWxpZ259IGNsYXVzZSBpbiBAY29kZXthbGxvY2F0ZX0gZGlyZWN0aXZlIEB0YWIgUAotICAg ICAgQHRhYiBPbmx5IEMgKGFuZCBvbmx5IHN0YWNrIHZhcmlhYmxlcykKKyAgICAgIEB0YWIg T25seSBDIGFuZCBGb3J0cmFuIChhbmQgb25seSBzdGFjayB2YXJpYWJsZXMpCiBAaXRlbSBA Y29kZXthbGlnbn0gbW9kaWZpZXIgaW4gQGNvZGV7YWxsb2NhdGV9IGNsYXVzZSBAdGFiIFkg QHRhYgogQGl0ZW0gQGNvZGV7dGhyZWFkX2xpbWl0fSBjbGF1c2UgdG8gQGNvZGV7dGFyZ2V0 fSBjb25zdHJ1Y3QgQHRhYiBZIEB0YWIKIEBpdGVtIEBjb2Rle2hhc19kZXZpY2VfYWRkcn0g Y2xhdXNlIHRvIEBjb2Rle3RhcmdldH0gY29uc3RydWN0IEB0YWIgWSBAdGFiCmRpZmYgLS1n aXQgYS9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNS5mOTAg Yi9saWJnb21wL3Rlc3RzdWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNS5mOTAKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRlOWNkNWEzMDJlCi0tLSAv ZGV2L251bGwKKysrIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9j YXRlLTUuZjkwCkBAIC0wLDAgKzEsODcgQEAKKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMg Ii1mZHVtcC10cmVlLWdpbXBsZSIgfQorCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAiX19idWlsdGluX0dPTVBfYWxsb2MgXFwoIiA1ICJnaW1wbGUiIH0gfQorISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUg XFwoIiA1ICJnaW1wbGUiIH0gfQorCisKK21vZHVsZSBtCisgIHVzZSBvbXBfbGliCisgIHVz ZSBpc29fY19iaW5kaW5nCisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQorICBp bnRlZ2VyKGNfaW50cHRyX3QpIDo6IGludHB0cgorY29udGFpbnMKKworaW50ZWdlciBmdW5j dGlvbiBvbmUgKCkKKyAgaW50ZWdlciA6OiBzdW0sIGkKKyAgISRvbXAgYWxsb2NhdGUoc3Vt KQorICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAic3VtXFwuXFswLTlc XSsgPSBfX2J1aWx0aW5fR09NUF9hbGxvYyBcXCg0LCA0LCAwQlxcKTsiIDEgImdpbXBsZSIg fSB9CisgICEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJfX2J1aWx0aW5f R09NUF9mcmVlIFxcKHN1bVxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CisK KyAgISBOT1RFOiBJbml0aWFsaXplciBjYW5ub3QgYmUgb21wX2luaXRfYWxsb2NhdG9yIC0g YXMgJ0EnIGlzCisgICEgaW4gdGhlIHNhbWUgc2NvcGUgYW5kIHRoZSBhdXRvLW9tcF9mcmVl IGNvbWVzIGxhdGVyIHRoYW4KKyAgISBhbnkgb21wX2Rlc3Ryb3lfYWxsb2NhdG9yLgorICBp bnRlZ2VyKG9tcF9hbGxvY2F0b3JfaGFuZGxlX2tpbmQpIDo6IG15X2FsbG9jYXRvciA9IG9t cF9sb3dfbGF0X21lbV9hbGxvYworICBpbnRlZ2VyIDo6IG4gPSAyNQorICBzdW0gPSAwCisg YmxvY2sKKyAgdHlwZShvbXBfYWxsb2N0cmFpdCkgOjogdHJhaXRzKDEpID0gWyBvbXBfYWxs b2N0cmFpdChvbXBfYXRrX2FsaWdubWVudCwgNjQpIF0KKyAgaW50ZWdlciA6OiBBKG4pCisg ICEkb21wIGFsbG9jYXRlKEEpIGFsaWduKDEyOCkgYWxsb2NhdG9yKG15X2FsbG9jYXRvcikK KyAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImEgPSBfX2J1aWx0aW5f R09NUF9hbGxvYyBcXCgxMjgsIERcXC5cWzAtOVxdKywgRFxcLlxbMC05XF0rXFwpOyIgMSAi Z2ltcGxlIiB9IH0KKyAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9f YnVpbHRpbl9HT01QX2ZyZWUgXFwoYSwgMEJcXCk7IiAxICJnaW1wbGUiIH0gfQorCisgIGlm IChtb2QgKHRyYW5zZmVyKGxvYyhBKSwgaW50cHRyKSwgMTI4X2NfaW50cHRyX3QpIC89IDAp ICYKKyAgICBzdG9wIDIKKyAgZG8gaSA9IDEsIG4KKyAgICBBKGkpID0gaQorICBlbmQgZG8K KworICBteV9hbGxvY2F0b3IgPSBvbXBfaW5pdF9hbGxvY2F0b3Iob21wX2xvd19sYXRfbWVt X3NwYWNlLDEsdHJhaXRzKQorICBibG9jaworICAgIGludGVnZXIgQihuKQorICAgIGludGVn ZXIgQyg1KQorICAgICEkb21wIGFsbG9jYXRlKEIsQykgYWxsb2NhdG9yKG15X2FsbG9jYXRv cikKKyAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiYiA9IF9fYnVp bHRpbl9HT01QX2FsbG9jIFxcKFxbMC05XF0rLCBEXFwuXFswLTlcXSssIERcXC5cWzAtOVxd K1xcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgImNcXC5cWzAtOVxdKyA9IF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKFxbMC05 XF0rLCAyMCwgRFxcLlxbMC05XF0rXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAgICAhIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChi LCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CisgICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoY1xcLlxbMC05XF0rLCAwQlxc KTsiIDEgImdpbXBsZSIgfSB9CisKKyAgICBpbnRlZ2VyIDo6IEQoNSkKKyAgICAhJG9tcCBh bGxvY2F0ZShEKSBhbGlnbigyNTYpCisgICAgISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgImRcXC5cWzAtOVxdKyA9IF9fYnVpbHRpbl9HT01QX2FsbG9jIFxcKDI1Niwg MjAsIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyAgICAhIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChkXFwuXFswLTlcXSssIDBC XFwpOyIgMSAiZ2ltcGxlIiB9IH0KKworICAgIEIgPSAwCisgICAgQyA9IFsxLDIsMyw0LDVd CisgICAgRCA9IFsxMSwyMiwzMyw0NCw1NV0KKworICAgIGlmIChtb2QgKHRyYW5zZmVyKGxv YyhCKSwgaW50cHRyKSwgNjRfY19pbnRwdHJfdCkgLz0gMCkgJgorICAgICAgc3RvcCAzCisg ICAgaWYgKG1vZCAodHJhbnNmZXIobG9jKEMpLCBpbnRwdHIpLCA2NF9jX2ludHB0cl90KSAv PSAwKSAmCisgICAgICBzdG9wIDQKKyAgICBpZiAobW9kICh0cmFuc2Zlcihsb2MoRCksIGlu dHB0ciksIDI1Nl9jX2ludHB0cl90KSAvPSAwKSAmCisgICAgICBzdG9wIDUKKworICAgIGRv IGkgPSAxLCA1CisgICAgICBpZiAoQyhpKSAvPSBpKSAmCisgICAgICAgIHN0b3AgNgorICAg ICAgaWYgKEQoaSkgLz0gaSArIDEwKmkpICYKKyAgICAgICAgc3RvcCA3CisgICAgZW5kIGRv CisKKyAgICBkbyBpID0gMSwgbgorICAgICAgaWYgKEIoaSkgLz0gMCkgJgorICAgICAgICBz dG9wIDkKKyAgICAgIHN1bSA9IHN1bSArIEEoaSkrQihpKStDKG1vZChpLDUpKzEpK0QobW9k KGksNSkrMSkKKyAgICBlbmQgZG8KKyAgZW5kIGJsb2NrCisgIGNhbGwgb21wX2Rlc3Ryb3lf YWxsb2NhdG9yIChteV9hbGxvY2F0b3IpCisgZW5kIGJsb2NrCisgb25lID0gc3VtCitlbmQK K2VuZCBtb2R1bGUKKwordXNlIG0KK2lmIChvbmUgKCkgLz0gMTIyNSkgJgorICBzdG9wIDEK K2VuZApkaWZmIC0tZ2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2Fs bG9jYXRlLTYuZjkwIGIvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9j YXRlLTYuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41YzMy NjUyZjJhNgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAu Zm9ydHJhbi9hbGxvY2F0ZS02LmY5MApAQCAtMCwwICsxLDEyMyBAQAorbW9kdWxlIG0KKyAg dXNlIGlzb19jX2JpbmRpbmcKKyAgdXNlIG9tcF9saWIKKyAgaW1wbGljaXQgbm9uZSAodHlw ZSwgZXh0ZXJuYWwpCisgIGludGVnZXIoY19pbnRwdHJfdCkgOjogaW50cHRyCisKKyEgeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAiX19idWlsdGluX3N0YWNrX3NhdmUiICJn aW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJfX2J1aWx0 aW5fYWxsb2NhIiAiZ2ltcGxlIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LW5vdCAiX19idWlsdGluX3N0YWNrX3Jlc3RvcmUiICJnaW1wbGUiIH0gfQorCishIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfYWxsb2MgXFwo IiA1ICJnaW1wbGUiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg Il9fYnVpbHRpbl9HT01QX2ZyZWUgXFwoIiA1ICJnaW1wbGUiIH0gfQorCitjb250YWlucwor CitzdWJyb3V0aW5lIG9uZSAoKQorICBpbnRlZ2VyIDo6IHJlc3VsdCwgbiwgaQorICByZXN1 bHQgPSAwCisgIG4gPSAzCisgICEkb21wIHRhcmdldCBtYXAodG9mcm9tOiByZXN1bHQpIGZp cnN0cHJpdmF0ZShuKQorICAgIGJsb2NrCisgICAgICBpbnRlZ2VyIDo6IHZhciwgdmFyMihu KQorICAgICAgISRvbXAgYWxsb2NhdGUodmFyLHZhcjIpIGFsaWduKDEyOCkgYWxsb2NhdG9y KG9tcF9sb3dfbGF0X21lbV9hbGxvYykKKyAgICAgIHZhciA9IDUKKyEgeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2YXJcXC5cWzAtOVxdKyA9IF9fYnVpbHRpbl9HT01Q X2FsbG9jIFxcKDEyOCwgNCwgNVxcKTsiIDEgImdpbXBsZSIgfSB9ICovCishIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAidmFyMlxcLlxbMC05XF0rID0gX19idWlsdGlu X0dPTVBfYWxsb2MgXFwoMTI4LCBEXFwuXFswLTlcXSssIDVcXCk7IiAxICJnaW1wbGUiIH0g fSAqLworCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGlu X0dPTVBfZnJlZSBcXCh2YXJcXC5cWzAtOVxdKywgMEJcXCk7IiAxICJnaW1wbGUiIH0gfSAq LworISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVpbHRpbl9HT01Q X2ZyZWUgXFwodmFyMlxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9ICovCisK KyAgICAgIGlmIChtb2QodHJhbnNmZXIobG9jKHZhciksIGludHB0ciksIDEyOF9jX2ludHB0 cl90KSAvPSAwKSAmCisgICAgICAgIHN0b3AgMQorICAgICAgaWYgKG1vZCh0cmFuc2Zlcihs b2ModmFyMiksIGludHB0ciksIDEyOF9jX2ludHB0cl90KSAvPSAwKSAmCisgICAgICAgIHN0 b3AgMgorICAgICAgaWYgKHZhciAvPSA1KSAmCisgICAgICAgIHN0b3AgMworCisgICAgICAh JG9tcCBwYXJhbGxlbCBkbworICAgICAgZG8gaSA9IDEsIG4KKyAgICAgICAgdmFyMihpKSA9 IChpKzMyKTsKKyAgICAgIGVuZCBkbworCisgICAgICAhJG9tcCBwYXJhbGxlbCBsb29wIHJl ZHVjdGlvbigrOnJlc3VsdCkKKyAgICAgIGRvIGkgPSAxLCBuCisgICAgICAgIHJlc3VsdCA9 IHJlc3VsdCArIHZhciArIHZhcjIoaSkKKyAgICAgIGVuZCBkbworICAgIGVuZCBibG9jawor ICBpZiAocmVzdWx0IC89ICgzKjUgKyAzMyArIDM0ICsgMzUpKSAmCisgICAgc3RvcCA0Citl bmQKKworc3Vicm91dGluZSB0d28gKCkKKyAgdHlwZSBzdAorICAgIGludGVnZXIgOjogYSwg YgorICBlbmQgdHlwZQorICBpbnRlZ2VyIDo6IHNjYWxhciwgYXJyYXkoNSksIGkKKyAgdHlw ZShzdCkgcworICAhJG9tcCBhbGxvY2F0ZShzY2FsYXIsIGFycmF5LCBzKQorISB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInNjYWxhclxcLlxbMC05XF0rID0gX19idWls dGluX0dPTVBfYWxsb2MgXFwoNCwgNCwgMEJcXCk7IiAxICJnaW1wbGUiIH0gfQorISB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgImFycmF5XFwuXFswLTlcXSsgPSBfX2J1 aWx0aW5fR09NUF9hbGxvYyBcXCg0LCAyMCwgMEJcXCk7IiAxICJnaW1wbGUiIH0gfQorISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInNcXC5cWzAtOVxdKyA9IF9fYnVp bHRpbl9HT01QX2FsbG9jIFxcKDQsIDgsIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKyEgeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJfX2J1aWx0aW5fR09NUF9mcmVlIFxc KHNjYWxhclxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CishIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChhcnJh eVxcLlxbMC05XF0rLCAwQlxcKTsiIDEgImdpbXBsZSIgfSB9CishIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfZnJlZSBcXChzXFwuXFswLTlc XSssIDBCXFwpOyIgMSAiZ2ltcGxlIiB9IH0KKworICBzY2FsYXIgPSA0NAorICBhcnJheSA9 IFsxLDIsMyw0LDVdCisgIHMgPSBzdChhPTExLCBiPTU2KQorCisgICEkb21wIHBhcmFsbGVs IGZpcnN0cHJpdmF0ZShzY2FsYXIpIGZpcnN0cHJpdmF0ZShhcnJheSkgZmlyc3Rwcml2YXRl KHMpCisgICAgaWYgKHNjYWxhciAvPSA0NCkgJgorICAgICAgc3RvcCA1CisgICAgc2NhbGFy ID0gMzM7CisgICAgaWYgKGFueSAoYXJyYXkgLz0gWzEsMiwzLDQsNV0pKSAmCisgICAgICBz dG9wIDYKKyAgICBhcnJheSA9IFsxMCwyMCwzMCw0MCw1MF0KKyAgICBpZiAocyVhIC89IDEx IC5vci4gcyViIC89IDU2KSAmCisgICAgICBzdG9wIDcKKyAgICBzJWEgPSA3NAorICAgIHMl YiA9IDY3NAorICAhJG9tcCBlbmQgcGFyYWxsZWwKKworICBpZiAoc2NhbGFyIC89IDQ0KSAm CisgICAgc3RvcCA4CisgIGlmIChhbnkgKGFycmF5IC89IFsxLDIsMyw0LDVdKSkgJgorICAg IHN0b3AgOQorICBpZiAocyVhIC89IDExIC5vci4gcyViIC89IDU2KSAmCisgICAgc3RvcCAx MAorCisgICEkb21wIHRhcmdldCBkZWZhdWx0bWFwKGZpcnN0cHJpdmF0ZSA6IHNjYWxhcikg ZGVmYXVsdG1hcChub25lIDogYWdncmVnYXRlKSBkZWZhdWx0bWFwKG5vbmUgOiBwb2ludGVy KQorICAgIGlmIChzY2FsYXIgLz0gNDQpICYKKyAgICAgIHN0b3AgMTEKKyAgICBzY2FsYXIg PSAzMzsKKyAgISRvbXAgZW5kIHRhcmdldAorCisgIGlmIChzY2FsYXIgLz0gNDQpICYKKyAg ICBzdG9wIDEyCisKKyAgISRvbXAgdGFyZ2V0IGRlZmF1bHRtYXAobm9uZSA6IHNjYWxhcikg ZGVmYXVsdG1hcChmaXJzdHByaXZhdGUgOiBhZ2dyZWdhdGUpIGRlZmF1bHRtYXAobm9uZSA6 IHBvaW50ZXIpIHByaXZhdGUoaSkKKyAgICBpZiAoYW55IChhcnJheSAvPSBbMSwyLDMsNCw1 XSkpICYKKyAgICAgIHN0b3AgMTMKKyAgICBkbyBpID0gMSwgNQorICAgICAgYXJyYXkoaSkg PSAxMCppCisgICAgZW5kIGRvCisgICEkb21wIGVuZCB0YXJnZXQKKworICBpZiAoYW55KGFy cmF5IC89IFsxLDIsMyw0LDVdKSkgJgorICAgIHN0b3AgMTMKKyAgISRvbXAgdGFyZ2V0IGRl ZmF1bHRtYXAobm9uZSA6IHNjYWxhcikgZGVmYXVsdG1hcChmaXJzdHByaXZhdGUgOiBhZ2dy ZWdhdGUpIGRlZmF1bHRtYXAobm9uZSA6IHBvaW50ZXIpCisgICAgaWYgKHMlYSAvPSAxMSAu b3IuIHMlYiAvPSA1NikgJgorICAgICAgc3RvcCAxNAorICAgIHMlYSA9IDc0CisgICAgcyVi ID0gNjc0CisgICEkb21wIGVuZCB0YXJnZXQKKyAgaWYgKHMlYSAvPSAxMSAub3IuIHMlYiAv PSA1NikgJgorICAgIHN0b3AgMTUKK2VuZAorZW5kIG1vZHVsZQorCit1c2UgbQorICBjYWxs IG9uZSAoKQorICBjYWxsIHR3byAoKQorZW5kCmRpZmYgLS1naXQgYS9saWJnb21wL3Rlc3Rz dWl0ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNy5mOTAgYi9saWJnb21wL3Rlc3RzdWl0 ZS9saWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtNy5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjRhMGY2YjZkZjMyCi0tLSAvZGV2L251bGwKKysrIGIvbGli Z29tcC90ZXN0c3VpdGUvbGliZ29tcC5mb3J0cmFuL2FsbG9jYXRlLTcuZjkwCkBAIC0wLDAg KzEsMzQyIEBACishIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZmR1bXAtdHJlZS1vbXBs b3dlciIgfQorCishIEZvciB0aGUgNCB2YXJzIGluIG9tcF9wYXJhbGxlbCwgNCBpbiBvbXBf dGFyZ2V0IGFuZCAxIG9mIDIgaW4gbm9fYWxsb2MyX2Z1bmMuCishIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyAiX19idWlsdGluX0dPTVBfYWxsb2MgXFwoIiA5ICJvbXBs b3dlciIgfSB9IAorISB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIl9fYnVp bHRpbl9HT01QX2ZyZWUgXFwoIiA5ICJvbXBsb3dlciIgfSB9CisKK21vZHVsZSBtCisgIHVz ZSBpc29fY19iaW5kaW5nCisgIHVzZSBvbXBfbGliCisgIGltcGxpY2l0IG5vbmUgKHR5cGUs IGV4dGVybmFsKQorICBpbnRlZ2VyKGNfaW50cHRyX3QpIDo6IGludHB0cgorCitjb250YWlu cworCitzdWJyb3V0aW5lIGNoZWNrX2ludCAoeCwgeSkKKyAgaW50ZWdlciA6OiB4LCB5Cisg IHZhbHVlIDo6IHkKKyAgaWYgKHggLz0geSkgJgorICAgIHN0b3AgMQorZW5kCisKK3N1YnJv dXRpbmUgY2hlY2tfcHRyICh4LCB5KQorICB0eXBlKGNfcHRyKSA6OiB4CisgIGludGVnZXIo Y19pbnRwdHJfdCksIHZhbHVlIDo6IHkKKyAgaWYgKHRyYW5zZmVyKHgsaW50cHRyKSAvPSB5 KSAmCisgICAgc3RvcCAyCitlbmQKKworaW50ZWdlciBmdW5jdGlvbiBub19hbGxvY19mdW5j ICgpIHJlc3VsdChyZXMpCisgICEgVGhlcmUgaXMgbm8gX19idWlsdGluX0dPTVBfYWxsb2Mg LyBfX2J1aWx0aW5fR09NUF9mcmVlIGFzCisgICEgYWxsb2NhdG9yID09IG9tcF9kZWZhdWx0 X21lbV9hbGxvYyAoa25vd24gYXQgY29tcGlsZSB0aW1lLgorICBpbnRlZ2VyIDo6IG5vX2Fs bG9jCisgICEkb21wIGFsbG9jYXRlKG5vX2FsbG9jKSBhbGxvY2F0b3Iob21wX2RlZmF1bHRf bWVtX2FsbG9jKQorICBub19hbGxvYyA9IDcKKyAgcmVzID0gbm9fYWxsb2MKK2VuZAorCitp bnRlZ2VyIGZ1bmN0aW9uIG5vX2FsbG9jMl9mdW5jKCkgcmVzdWx0KHJlcykKKyAgISBJZiBu b19hbGxvYzIgd2VyZSBUUkVFX1VOVVNFRCwgdGhlcmUgd291bGQgYmUgbm8KKyAgISBfX2J1 aWx0aW5fR09NUF9hbGxvYyAvIF9fYnVpbHRpbl9HT01QX2ZyZWUKKyAgISBIb3dldmVyLCBh cyB0aGUgcGFyc2VyIGFscmVhZHkgbWFya3Mgbm9fYWxsb2MyCisgICEgYW5kIGlzX2FsbG9j MiBhcyB1c2VkLCB0aGUgdHJlZSBpcyBnZW5lcmF0ZWQgZm9yIGJvdGggdmFycy4KKyAgaW50 ZWdlciA6OiBub19hbGxvYzIsIGlzX2FsbG9jMgorICAhJG9tcCBhbGxvY2F0ZShub19hbGxv YzIsIGlzX2FsbG9jMikKKyAgaXNfYWxsb2MyID0gNworICByZXMgPSBpc19hbGxvYzIKK2Vu ZAorCisKK3N1YnJvdXRpbmUgb21wX3BhcmFsbGVsICgpCisgIGludGVnZXIgOjogaSwgbiwg aWlpLCBqamooNSkKKyAgdHlwZShjX3B0cikgOjogcHRyCisgICEkb21wIGFsbG9jYXRlKGlp aSwgampqLCBwdHIpCisgIG4gPSA2CisgIGlpaSA9IDUKKyAgcHRyID0gdHJhbnNmZXIgKGlu dCh6JzEyMzQnLCBjX2ludHB0cl90KSwgcHRyKQorIGJsb2NrCisgIGludGVnZXIgOjoga2tr KG4pCisgICEkb21wIGFsbG9jYXRlKGtraykKKworICBkbyBpID0gMSwgNQorICAgIGpqaihp KSA9IDMqaQorICBlbmQgZG8KKyAgZG8gaSA9IDEsIDYKKyAgICBra2soaSkgPSA3KmkKKyAg ZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZGVmYXVsdChub25lKSBmaXJzdHByaXZhdGUo aWlpLCBqamosIGtraywgcHRyKSBpZiguZmFsc2UuKQorICAgIGlmIChpaWkgLz0gNSkgJgor ICAgICAgc3RvcCAzCisgICAgaWlpID0gNworICAgIGNhbGwgY2hlY2tfaW50IChpaWksIDcp CisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGlmIChqamooaSkgLz0gMyppKSAmCisgICAgICAg IHN0b3AgNAorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA2CisgICAgICBpZiAoa2trKGkp IC89IDcqaSkgJgorICAgICAgICBzdG9wIDUKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwg NQorICAgICAgampqKGkpID0gNCppCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDYKKyAg ICAgIGtrayhpKSA9IDgqaQorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1CisgICAgICBj YWxsIGNoZWNrX2ludCAoampqKGkpLCA0KmkpCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEs IDYKKyAgICAgIGNhbGwgY2hlY2tfaW50IChra2soaSksIDgqaSkKKyAgICBlbmQgZG8KKyAg ICBpZiAodHJhbnNmZXIgKHB0ciwgaW50cHRyKSAvPSBpbnQoeicxMjM0JywgY19pbnRwdHJf dCkpICYKKyAgICAgIHN0b3AgNgorICAgIHB0ciA9IHRyYW5zZmVyIChpbnQoeidhYmNkJywg Y19pbnRwdHJfdCksIHB0cikKKyAgICBpZiAodHJhbnNmZXIgKHB0ciwgaW50cHRyKSAvPSBp bnQoeidhYmNkJywgY19pbnRwdHJfdCkpICYKKyAgICAgIHN0b3AgNworICAgIGNhbGwgY2hl Y2tfcHRyIChwdHIsICBpbnQoeidhYmNkJywgY19pbnRwdHJfdCkpCisgICEkb21wIGVuZCBw YXJhbGxlbAorCisgIGlmIChpaWkgLz0gNSkgJgorICAgIHN0b3AgOAorICBjYWxsIGNoZWNr X2ludCAoaWlpLCA1KQorICBkbyBpID0gMSwgNQorICAgIGlmIChqamooaSkgLz0gMyppKSAm CisgICAgICBzdG9wIDkKKyAgICBjYWxsIGNoZWNrX2ludCAoampqKGkpLCAzKmkpCisgIGVu ZCBkbworICBkbyBpID0gMSwgNgorICAgIGlmIChra2soaSkgLz0gNyppKSAmCisgICAgICBz dG9wIDEwCisgICAgY2FsbCBjaGVja19pbnQgKGtrayhpKSwgNyppKQorICBlbmQgZG8KKyAg aWYgKHRyYW5zZmVyIChwdHIsIGludHB0cikgLz0gaW50KHonMTIzNCcsIGNfaW50cHRyX3Qp KSAmCisgICAgc3RvcCAxMQorICBjYWxsIGNoZWNrX3B0ciAocHRyLCBpbnQoeicxMjM0Jywg Y19pbnRwdHJfdCkpCisKKyAgISRvbXAgcGFyYWxsZWwgZGVmYXVsdChmaXJzdHByaXZhdGUp IGlmKC5mYWxzZS4pCisgICAgaWYgKGlpaSAvPSA1KSAmCisgICAgICBzdG9wIDEyCisgICAg aWlpID0gNworICAgIGNhbGwgY2hlY2tfaW50IChpaWksIDcpCisgICAgZG8gaSA9IDEsIDUK KyAgICAgIGlmIChqamooaSkgLz0gMyppKSAmCisgICAgICAgIHN0b3AgMTMKKyAgICBlbmQg ZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAg ICAgc3RvcCAxNAorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1CisgICAgICBqamooaSkg PSA0KmkKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAga2trKGkpID0gOCpp CisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGNhbGwgY2hlY2tfaW50IChq amooaSksIDQqaSkKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAgICAgY2FsbCBj aGVja19pbnQgKGtrayhpKSwgOCppKQorICAgIGVuZCBkbworICAgIGlmICh0cmFuc2ZlciAo cHRyLCBpbnRwdHIpIC89IGludCh6JzEyMzQnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3Rv cCAxNQorICAgIHB0ciA9IHRyYW5zZmVyIChpbnQgKHonYWJjZCcsIGNfaW50cHRyX3QpLCBw dHIpCisgICAgaWYgKHRyYW5zZmVyIChwdHIsIGludHB0cikgLz0gaW50KHonYWJjZCcsIGNf aW50cHRyX3QpKSAmCisgICAgICBzdG9wIDE2CisgICAgY2FsbCBjaGVja19wdHIgKHB0ciwg aW50ICh6J2FiY2QnLCBjX2ludHB0cl90KSkKKyAgISRvbXAgZW5kIHBhcmFsbGVsCisgIGlm IChpaWkgLz0gNSkgJgorICAgIHN0b3AgMTcKKyAgY2FsbCBjaGVja19pbnQgKGlpaSwgNSkK KyAgZG8gaSA9IDEsIDUKKyAgICBpZiAoampqKGkpIC89IDMqaSkgJgorICAgICAgc3RvcCAx OAorICAgIGNhbGwgY2hlY2tfaW50IChqamooaSksIDMqaSkKKyAgZW5kIGRvCisgIGRvIGkg PSAxLCA2CisgICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgIHN0b3AgMTkKKyAgICBj YWxsIGNoZWNrX2ludCAoa2trKGkpLCA3KmkpCisgIGVuZCBkbworICBpZiAodHJhbnNmZXIg KHB0ciwgaW50cHRyKSAvPSBpbnQoeicxMjM0JywgY19pbnRwdHJfdCkpICYKKyAgICBzdG9w IDIwCisgIGNhbGwgY2hlY2tfcHRyIChwdHIsIGludCAoeicxMjM0JywgY19pbnRwdHJfdCkp CisgZW5kIGJsb2NrCitlbmQKKworc3Vicm91dGluZSBvbXBfdGFyZ2V0ICgpCisgIGludGVn ZXIgOjogaSwgbiwgaWlpLCBqamooNSkKKyAgdHlwZShjX3B0cikgOjogcHRyCisgICEkb21w IGFsbG9jYXRlKGlpaSwgampqLCBwdHIpCisgIG4gPSA2CisgIGlpaSA9IDUKKyAgcHRyID0g dHJhbnNmZXIgKGludCAoeicxMjM0JywgY19pbnRwdHJfdCksIHB0cikKKyBibG9jaworICBp bnRlZ2VyIDo6IGtrayhuKQorICAhJG9tcCBhbGxvY2F0ZShra2spCisgIGRvIGkgPSAxLCA1 CisgICAgampqKGkpID0gMyppCisgIGVuZCBkbworICBkbyBpID0gMSwgNgorICAgIGtrayhp KSA9IDcqaQorICBlbmQgZG8KKworICAhJG9tcCB0YXJnZXQgZGVmYXVsdG1hcChub25lKSBm aXJzdHByaXZhdGUoaWlpLCBqamosIGtraywgcHRyKSBwcml2YXRlKGkpCisgICAgaWYgKGlp aSAvPSA1KSAmCisgICAgICBzdG9wIDIxCisgICAgaWlpID0gNworICAgIGNhbGwgY2hlY2tf aW50IChpaWksIDcpCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGlmIChqamooaSkgLz0gMypp KSAmCisgICAgICAgIHN0b3AgMjIKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAg ICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgICAgc3RvcCAyMworICAgIGVuZCBkbwor ICAgIGRvIGkgPSAxLCA1CisgICAgICBqamooaSkgPSA0KmkKKyAgICBlbmQgZG8KKyAgICBk byBpID0gMSwgNgorICAgICAga2trKGkpID0gOCppCisgICAgZW5kIGRvCisgICAgZG8gaSA9 IDEsIDUKKyAgICAgIGNhbGwgY2hlY2tfaW50IChqamooaSksIDQqaSkKKyAgICBlbmQgZG8K KyAgICBkbyBpID0gMSwgNgorICAgICAgY2FsbCBjaGVja19pbnQgKGtrayhpKSwgOCppKQor ICAgIGVuZCBkbworICAgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6JzEy MzQnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCAyNAorICAgIHB0ciA9IHRyYW5zZmVy IChpbnQgKHonYWJjZCcsIGNfaW50cHRyX3QpLCBwdHIpCisgICAgaWYgKHRyYW5zZmVyIChw dHIsIGludHB0cikgLz0gaW50KHonYWJjZCcsIGNfaW50cHRyX3QpKSAmCisgICAgICBzdG9w IDI1CisgICAgY2FsbCBjaGVja19wdHIgKHB0ciwgaW50ICh6J2FiY2QnLCBjX2ludHB0cl90 KSkKKyAgISRvbXAgZW5kIHRhcmdldAorCisgIGlmIChpaWkgLz0gNSkgJgorICAgIHN0b3Ag MjYKKyAgY2FsbCBjaGVja19pbnQgKGlpaSwgNSkKKyAgZG8gaSA9IDEsIDUKKyAgICBpZiAo ampqKGkpIC89IDMqaSkgJgorICAgICAgc3RvcCAyNworICAgIGNhbGwgY2hlY2tfaW50IChq amooaSksIDMqaSkKKyAgZW5kIGRvCisgIGRvIGkgPSAxLCA2CisgICAgaWYgKGtrayhpKSAv PSA3KmkpICYKKyAgICAgIHN0b3AgMjgKKyAgICBjYWxsIGNoZWNrX2ludCAoa2trKGkpLCA3 KmkpCisgIGVuZCBkbworICBpZiAodHJhbnNmZXIgKHB0ciwgaW50cHRyKSAvPSBpbnQoeicx MjM0JywgY19pbnRwdHJfdCkpICYKKyAgICBzdG9wIDI5CisgIGNhbGwgY2hlY2tfcHRyIChw dHIsIGludCAoeicxMjM0JywgY19pbnRwdHJfdCkpCisKKyAgISRvbXAgdGFyZ2V0IGRlZmF1 bHRtYXAoZmlyc3Rwcml2YXRlKQorICAgIGlmIChpaWkgLz0gNSkgJgorICAgICAgc3RvcCAz MAorICAgIGlpaSA9IDcKKyAgICBjYWxsIGNoZWNrX2ludCAoaWlpLCA3KQorICAgIGRvIGkg PSAxLCA1CisgICAgICBpZiAoampqKGkpIC89IDMqaSkgJgorICAgICAgICBzdG9wIDMxCisg ICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDYKKyAgICAgIGlmIChra2soaSkgLz0gNyppKSAm CisgICAgICAgIHN0b3AgMzIKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNQorICAgICAg ampqKGkpID0gNCppCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDYKKyAgICAgIGtrayhp KSA9IDgqaQorICAgIGVuZCBkbworICAgIGRvIGkgPSAxLCA1CisgICAgICBjYWxsIGNoZWNr X2ludCAoampqKGkpLCA0KmkpCisgICAgZW5kIGRvCisgICAgZG8gaSA9IDEsIDYKKyAgICAg IGNhbGwgY2hlY2tfaW50IChra2soaSksIDgqaSkKKyAgICBlbmQgZG8KKyAgICBpZiAodHJh bnNmZXIgKHB0ciwgaW50cHRyKSAvPSBpbnQoeicxMjM0JywgY19pbnRwdHJfdCkpICYKKyAg ICAgIHN0b3AgMzMKKyAgICBwdHIgPSB0cmFuc2ZlciAoaW50ICh6J2FiY2QnLCBjX2ludHB0 cl90KSwgcHRyKQorICAgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6J2Fi Y2QnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCAzNAorICAgIGNhbGwgY2hlY2tfcHRy IChwdHIsIGludCAoeidhYmNkJywgY19pbnRwdHJfdCkpCisgICEkb21wIGVuZCB0YXJnZXQK KyAgaWYgKGlpaSAvPSA1KSAmCisgICAgc3RvcCAzNQorICBjYWxsIGNoZWNrX2ludCAoaWlp LCA1KQorICBkbyBpID0gMSwgNQorICAgIGlmIChqamooaSkgLz0gMyppKSAmCisgICAgICBz dG9wIDM2CisgICAgY2FsbCBjaGVja19pbnQgKGpqaihpKSwgMyppKQorICBlbmQgZG8KKyAg ZG8gaSA9IDEsIDYKKyAgICBpZiAoa2trKGkpIC89IDcqaSkgJgorICAgICAgc3RvcCAzNwor ICAgIGNhbGwgY2hlY2tfaW50IChra2soaSksIDcqaSkKKyAgZW5kIGRvCisgIGlmICh0cmFu c2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6JzEyMzQnLCBjX2ludHB0cl90KSkgJgorICAg IHN0b3AgMzgKKyAgY2FsbCBjaGVja19wdHIgKHB0ciwgaW50ICh6JzEyMzQnLCBjX2ludHB0 cl90KSkKKworICAhJG9tcCB0YXJnZXQgZGVmYXVsdG1hcCh0b2Zyb20pCisgICAgaWYgKGlp aSAvPSA1KSAmCisgICAgICBzdG9wIDM5CisgICAgaWlpID0gNworICAgIGNhbGwgY2hlY2tf aW50IChpaWksIDcpCisgICAgZG8gaSA9IDEsIDUKKyAgICAgIGlmIChqamooaSkgLz0gMypp KSAmCisgICAgICAgIHN0b3AgNDAKKyAgICBlbmQgZG8KKyAgICBkbyBpID0gMSwgNgorICAg ICAgaWYgKGtrayhpKSAvPSA3KmkpICYKKyAgICAgICAgc3RvcCA0MQorICAgIGVuZCBkbwor ICAgIGRvIGkgPSAxLCA1CisgICAgICBqamooaSkgPSA0KmkKKyAgICBlbmQgZG8KKyAgICBk byBpID0gMSwgNgorICAgICAga2trKGkpID0gOCppCisgICAgZW5kIGRvCisgICAgZG8gaSA9 IDEsIDUKKyAgICAgIGNhbGwgY2hlY2tfaW50IChqamooaSksIDQqaSkKKyAgICBlbmQgZG8K KyAgICBkbyBpID0gMSwgNgorICAgICAgY2FsbCBjaGVja19pbnQgKGtrayhpKSwgOCppKQor ICAgIGVuZCBkbworICAgIGlmICh0cmFuc2ZlciAocHRyLCBpbnRwdHIpIC89IGludCh6JzEy MzQnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCA0MgorICAgIHB0ciA9IHRyYW5zZmVy IChpbnQoeidhYmNkJyxjX2ludHB0cl90KSwgcHRyKQorICAgIGlmICh0cmFuc2ZlciAocHRy LCBpbnRwdHIpIC89IGludCh6J2FiY2QnLCBjX2ludHB0cl90KSkgJgorICAgICAgc3RvcCA0 MworICAgIGNhbGwgY2hlY2tfcHRyIChwdHIsIGludCAoeidhYmNkJywgY19pbnRwdHJfdCkp CisgICEkb21wIGVuZCB0YXJnZXQKKworICBpZiAoaWlpIC89IDcpICYKKyAgICBzdG9wIDQ0 CisgIGNhbGwgY2hlY2tfaW50IChpaWksIDcpCisgIGRvIGkgPSAxLCA1CisgICAgaWYgKGpq aihpKSAvPSA0KmkpICYKKyAgICAgIHN0b3AgNDUKKyAgICBjYWxsIGNoZWNrX2ludCAoampq KGkpLCA0KmkpCisgIGVuZCBkbworICBkbyBpID0gMSwgNgorICAgIGlmIChra2soaSkgLz0g OCppKSAmCisgICAgICBzdG9wIDQ2CisgICAgY2FsbCBjaGVja19pbnQgKGtrayhpKSwgOCpp KQorICBlbmQgZG8KKyAgaWYgKHRyYW5zZmVyIChwdHIsIGludHB0cikgLz0gaW50KHonYWJj ZCcsIGNfaW50cHRyX3QpKSAmCisgICAgc3RvcCA0NworICBjYWxsIGNoZWNrX3B0ciAocHRy LCBpbnQgKHonYWJjZCcsIGNfaW50cHRyX3QpKQorIGVuZCBibG9jaworZW5kCitlbmQgbW9k dWxlCisKKwordXNlIG0KKyAgY2FsbCBvbXBfcGFyYWxsZWwgKCkKKyAgY2FsbCBvbXBfdGFy Z2V0ICgpCitlbmQKZGlmZiAtLWdpdCBhL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9y dHJhbi9hbGxvY2F0ZS04LmY5MCBiL2xpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAuZm9ydHJh bi9hbGxvY2F0ZS04LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uYjlkZWE2YzUxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLmZvcnRyYW4vYWxsb2NhdGUtOC5mOTAKQEAgLTAsMCArMSw5OSBAQAorbW9kdWxl IG0KK3VzZSBvbXBfbGliCitpbXBsaWNpdCBub25lCishISRvbXAgcmVxdWlyZXMgZHluYW1p Y19hbGxvY2F0b3JzCisKK2ludGVnZXIgOjogZmluYWxfY291bnQKKwordHlwZSB0CisgIGlu dGVnZXIgOjogaSA9IDAKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogQSg6LDopCitjb250 YWlucworICBmaW5hbCA6OiBjb3VudF9maW5hbGl6YXRpb24KK2VuZCB0eXBlIHQKKworY29u dGFpbnMKKworZWxlbWVudGFsIGltcHVyZSBzdWJyb3V0aW5lIGNvdW50X2ZpbmFsaXphdGlv bihzZWxmKQorICB0eXBlKHQpLCBpbnRlbnQoaW4pIDo6IHNlbGYKKyAgZmluYWxfY291bnQg PSBmaW5hbF9jb3VudCArIDEKK2VuZAorCitzdWJyb3V0aW5lIHRlc3QoYWxsb2NhdG9yKQor aW50ZWdlcihvbXBfYWxsb2NhdG9yX2hhbmRsZV9raW5kKSwgb3B0aW9uYWwsIHZhbHVlIDo6 IGFsbG9jYXRvcgorY2FsbCB6ZXJvX3NpemUoYWxsb2NhdG9yKQorY2FsbCBmaW5hbGl6YXRp b25fdGVzdChhbGxvY2F0b3IpCitlbmQgc3Vicm91dGluZSB0ZXN0CisKK3N1YnJvdXRpbmUg ZmluYWxpemF0aW9uX3Rlc3QoYWxsb2NhdG9yKQoraW50ZWdlcihvbXBfYWxsb2NhdG9yX2hh bmRsZV9raW5kKSwgb3B0aW9uYWwsIHZhbHVlIDo6IGFsbG9jYXRvcgoraW50ZWdlciA6OiBu ID0gNQorCitmaW5hbF9jb3VudCA9IDA7CitibG9jaworICB0eXBlKHQpIDo6IEEKKyEgICEk b21wIGFsbG9jYXRlKEEpIGFsbG9jYXRvcihhbGxvY2F0b3IpCisgIEElaSA9IDEKK2VuZCBi bG9jaworaWYgKGZpbmFsX2NvdW50IC89IDEpICYKKyAgc3RvcCAxMAorCitmaW5hbF9jb3Vu dCA9IDA7CitibG9jaworICB0eXBlKHQpIDo6IEIoNykKKyAgISRvbXAgYWxsb2NhdGUoQikg YWxsb2NhdG9yKGFsbG9jYXRvcikKKyAgQigxKSVpID0gMQorZW5kIGJsb2NrCitpZiAoZmlu YWxfY291bnQgLz0gNykgc3RvcCAxMAorCitmaW5hbF9jb3VudCA9IDA7CitibG9jaworICB0 eXBlKHQpIDo6IEMobikKKyEgICEkb21wIGFsbG9jYXRlKEMpIGFsbG9jYXRvcihhbGxvY2F0 b3IpCisgIEMoMSklaSA9IDEKK2VuZCBibG9jaworaWYgKGZpbmFsX2NvdW50IC89IDUpIHN0 b3AgMTAKKworZmluYWxfY291bnQgPSAwOworYmxvY2sKKyAgdHlwZSh0KSA6OiBEKDApCish ICAhJG9tcCBhbGxvY2F0ZShEKSBhbGxvY2F0b3IoYWxsb2NhdG9yKQorICBEKDE6MCklaSA9 IDEKK2VuZCBibG9jaworaWYgKGZpbmFsX2NvdW50IC89IDApIHN0b3AgMTAKK2VuZCBzdWJy b3V0aW5lCisKK3N1YnJvdXRpbmUgemVyb19zaXplKGFsbG9jYXRvcikKK2ludGVnZXIob21w X2FsbG9jYXRvcl9oYW5kbGVfa2luZCksIG9wdGlvbmFsLCB2YWx1ZSA6OiBhbGxvY2F0b3IK K2ludGVnZXIgOjogbgorbiA9IC0zCisKK2Jsb2NrCisgIGludGVnZXIgOjogQShuKQorICBj aGFyYWN0ZXIobGVuPW4pIDo6IEIKKyEgICEkb21wIGFsbG9jYXRlKEEsYikgYWxsb2NhdG9y KGFsbG9jYXRvcikKKyAgaWYgKHNpemUoQSkgLz0gMCAub3IuIGxlbihiKSAvPSAwKSAmCisg ICAgc3RvcCAxCisgIEIoMTpsZW4oYikpID0nQScKK2VuZCBibG9jaworCishISRvbXAgdGFy Z2V0CitibG9jaworICBpbnRlZ2VyIDo6IEEobikKKyAgY2hhcmFjdGVyKGxlbj1uKSA6OiBC CishICAhJG9tcCBhbGxvY2F0ZShBLGIpIGFsbG9jYXRvcihhbGxvY2F0b3IpCisgIGlmIChz aXplKEEpIC89IDAgLm9yLiBsZW4oYikgLz0gMCkgJgorICAgIHN0b3AgMgorICBCKDE6bGVu KGIpKSA9J0EnCitlbmQgYmxvY2sKK2VuZAorZW5kIG1vZHVsZQorCit1c2UgbQorY2FsbCB0 ZXN0KCkKK2NhbGwgdGVzdChvbXBfZGVmYXVsdF9tZW1fYWxsb2MpCitjYWxsIHRlc3Qob21w X2xhcmdlX2NhcF9tZW1fYWxsb2MpCitjYWxsIHRlc3Qob21wX2hpZ2hfYndfbWVtX2FsbG9j KQorY2FsbCB0ZXN0KG9tcF9sb3dfbGF0X21lbV9hbGxvYykKK2NhbGwgdGVzdChvbXBfY2dy b3VwX21lbV9hbGxvYykKK2VuZAo= --------------Zr4wym1JTKgX260D9r9dpvHh--