From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 440853858298 for ; Wed, 13 Dec 2023 15:46:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 440853858298 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 440853858298 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.141.98 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702482416; cv=none; b=nILWoM2s3sHSd2O94fzAdu1bJe5ntipbagAjc7QhYVTsd33wUoeD38VyP6/KXmfoK+FZ0S1kvVswXVnV4yEyr889btYTePOb1jmpFLyeevsbNCrpZLFSmUq0aV7UVKkIK13up8UAuDTcWHVV21VcLTxgK+nxlcR3cpZTFFYDJ7E= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702482416; c=relaxed/simple; bh=Jhi23XkHVcHe7/cpJGjrG/hCl137HjQjLGYcKgVVs1Q=; h=Message-ID:Date:MIME-Version:From:Subject:To; b=QIiKW4pFnXYPZYOM7q5cfMx5da+nXyhTmAdYKJSPHajPGz1QZoSnlSLRA2BOoaH93PoK7yxR3Loc+a99inlPecsrM1pGdRivZvQ4TnaNq2u/5NEptfcpl0GSahMBJLn7m76IWJwjxDArB+/GeW5N6Dxe2tmy3IxSfSwRn8QMRXw= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: /cN5M4X4QmC5YckLK76+yw== X-CSE-MsgGUID: 3Qt9gK2gQGqAMXT2HJyIgQ== X-IronPort-AV: E=Sophos;i="6.04,273,1695715200"; d="scan'208";a="28174183" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa2.mentor.iphmx.com with ESMTP; 13 Dec 2023 07:46:50 -0800 IronPort-SDR: i8QIxPh+cZuGrJVSRheMwpBKywumCnhzH14CdDNShCITZeGDdXZl5UwuO4g0q2tnKxRGJhw1Ky Kforly4Bv1pnc6stZ6lmA2+PVkbmed9TSrqiWa49vKJPs+qLJWM5cjewRrPHWWczwOoy9nfVPB d++/7hKYK9PiwhkS1jJIA6ImsoI0ty2xkVdD11l4q5jXuqYgO3FLFTTul6zEyR2TrcHT8yxfVK Gj8qxotT4XYcFV/aTkjA70PE/v5jhWRaxzhUGwuSx/DjD7AFaCOUjrcWV+M4ghBZ9cJJauFJsp ltY= Content-Type: multipart/mixed; boundary="------------u2dQ6oTec8GjnlTPkxW2nd4T" Message-ID: Date: Wed, 13 Dec 2023 15:46:45 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-GB From: Andrew Stubbs Subject: [committed] amdgcn: XNACK support To: "gcc-patches@gcc.gnu.org" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-14.mgc.mentorg.com (139.181.222.14) To svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_STOCKGEN,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --------------u2dQ6oTec8GjnlTPkxW2nd4T Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Some AMD GCN devices support an "XNACK" mode in which the device can handle page-misses (and maybe other traps in memory instructions), but it's not completely invisible to software. We need this now to support OpenMP Unified Shared Memory (I plan to post updated patches for that in January), and in future it may enable support for APU devices (such as MI300). The first patch ensures that load instructions are "restartable", meaning that the outputs do not overwrite the input registers (address and offsets). This maps pretty much exactly to the GCC "early-clobber" concept, so we just need to add additional alternatives and then not generate problem instructions explicitly. The second patch is a workaround for the register allocation patch I asked about on gcc@ yesterday. The early clobber increases register pressure which causes compile failure when LRA is unable to spill additional registers without needing yet more registers. This doesn't become a problem on gfx90a (MI200) so soon due to the additional AVGPR spill registers, and that's the only device that really supports USM, so far, so limiting XNACK to that device will work for now. The -mxnack option was already added as a placeholder, so not much is needed there. Committed to master. An older version of these patches is already committed to devel/omp/gcc-13 (OG13). Andrew --------------u2dQ6oTec8GjnlTPkxW2nd4T Content-Type: text/plain; charset="UTF-8"; name="231213-xnack-workaround.patch" Content-Disposition: attachment; filename="231213-xnack-workaround.patch" Content-Transfer-Encoding: base64 YW1kZ2NuOiBXb3JrIGFyb3VuZCBYTkFDSyByZWdpc3RlciBhbGxvY2F0aW9uIHByb2JsZW0K ClRoZSBleHRyYSByZWdpc3RlciBwcmVzc3VyZSBpcyBjYXVzaW5nIGluZmluaXRlIGxvb3Bz IGluIHNvbWUgY2FzZXMsIGVzcGVjaWFsbHkKYXQgLU8wLiAgSSBoYXZlIG5vdCB5ZXQgb2Jz ZXJ2ZWQgYW55IGlzc3VlIG9uIGRldmljZXMgdGhhdCBoYXZlIEFWR1BScyBmb3IKc3BpbGxp bmcsIGFuZCBYTkFDSyBpcyBvbmx5IHJlYWxseSB1c2VmdWwgb24gdGhvc2UgZGV2aWNlcyBh bnl3YXksIHNvIGNoYW5nZQp0aGUgZGVmYXVsdHMuCgpnY2MvQ2hhbmdlTG9nOgoKCSogY29u ZmlnL2djbi9nY24taHNhLmggKE5PX1hOQUNLKTogQ2hhbmdlIHRoZSBkZWZhdWx0cy4KCSog Y29uZmlnL2djbi9nY24tb3B0cy5oIChlbnVtIGhzYWNvX2F0dHJfdHlwZSk6IEFkZCBIU0FD T19BVFRSX0RFRkFVTFQuCgkqIGNvbmZpZy9nY24vZ2NuLmNjIChnY25fb3B0aW9uX292ZXJy aWRlKTogU2V0IHRoZSBkZWZhdWx0IGZsYWdfeG5hY2suCgkqIGNvbmZpZy9nY24vZ2NuLm9w dDogQWRkIC1teG5hY2s9ZGVmYXVsdC4KCSogZG9jL2ludm9rZS50ZXhpOiBEb2N1bWVudCB0 aGUgLW14bmFjayBkZWZhdWx0LgoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvZ2NuL2djbi1o c2EuaCBiL2djYy9jb25maWcvZ2NuL2djbi1oc2EuaAppbmRleCBiZmIxMDQ1MjZjNS4uYjQ0 ZDQyYjAyZDYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvZ2NuL2djbi1oc2EuaAorKysgYi9n Y2MvY29uZmlnL2djbi9nY24taHNhLmgKQEAgLTc1LDcgKzc1LDkgQEAgZXh0ZXJuIHVuc2ln bmVkIGludCBnY25fbG9jYWxfc3ltX2hhc2ggKGNvbnN0IGNoYXIgKm5hbWUpOwogICAgc3Vw cG9ydGVkIGZvciBnY24uICAqLwogI2RlZmluZSBHT01QX1NFTEZfU1BFQ1MgIiIKIAotI2Rl ZmluZSBOT19YTkFDSyAibWFyY2g9ZmlqaTo7bWFyY2g9Z2Z4MTAzMDo7IgorI2RlZmluZSBO T19YTkFDSyAibWFyY2g9ZmlqaTo7bWFyY2g9Z2Z4MTAzMDo7IiBcCisgICAgLyogVGhlc2Ug bWF0Y2ggdGhlIGRlZmF1bHRzIHNldCBpbiBnY24uY2MuICAqLyBcCisgICAgIiFteG5hY2sq fG14bmFjaz1kZWZhdWx0OiV7bWFyY2g9Z2Z4OTAwfG1hcmNoPWdmeDkwNnxtYXJjaD1nZng5 MDg6LW1hdHRyPS14bmFja307IgogI2RlZmluZSBOT19TUkFNX0VDQyAiIW1hcmNoPSo6O21h cmNoPWZpamk6O21hcmNoPWdmeDkwMDo7bWFyY2g9Z2Z4OTA2OjsiCiAKIC8qIEluIEhTQUNP djQgbm8gYXR0cmlidXRlIHNldHRpbmcgbWVhbnMgdGhlIGJpbmFyeSBzdXBwb3J0cyAiYW55 IiBoYXJkd2FyZQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLW9wdHMuaCBiL2dj Yy9jb25maWcvZ2NuL2djbi1vcHRzLmgKaW5kZXggYjRmNDk0ZDg2OGMuLjYzNGNlYzZkODMy IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2djbi9nY24tb3B0cy5oCisrKyBiL2djYy9jb25m aWcvZ2NuL2djbi1vcHRzLmgKQEAgLTY1LDcgKzY1LDggQEAgZW51bSBoc2Fjb19hdHRyX3R5 cGUKIHsKICAgSFNBQ09fQVRUUl9PRkYsCiAgIEhTQUNPX0FUVFJfT04sCi0gIEhTQUNPX0FU VFJfQU5ZCisgIEhTQUNPX0FUVFJfQU5ZLAorICBIU0FDT19BVFRSX0RFRkFVTFQKIH07CiAK ICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjIGIvZ2NjL2NvbmZp Zy9nY24vZ2NuLmNjCmluZGV4IGQ5MmNkMDFkMDNmLi5iNjc1NTFhMmU4ZSAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLmNjCisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5jYwpA QCAtMTcyLDYgKzE3MiwyOSBAQCBnY25fb3B0aW9uX292ZXJyaWRlICh2b2lkKQogICAgICAg LyogQWxsb3cgSFNBQ09fQVRUUl9BTlkgc2lsZW50bHkgYmVjYXVzZSB0aGF0J3MgdGhlIGRl ZmF1bHQuICAqLwogICAgICAgZmxhZ194bmFjayA9IEhTQUNPX0FUVFJfT0ZGOwogICAgIH0K KworICAvKiBUaGVyZSdzIG5vIG5lZWQgZm9yIFhOQUNLIG9uIGRldmljZXMgd2l0aG91dCBV U00sIGFuZCB0aGVyZSBhcmUgcmVnaXN0ZXIKKyAgICAgYWxsb2NhdGlvbiBwcm9ibGVtcyBj YXVzZWQgYnkgdGhlIGVhcmx5LWNsb2JiZXIgd2hlbiBBVkdQUiBzcGlsbHMgYXJlIG5vdAor ICAgICBhdmFpbGFibGUuCisgICAgIEZJWE1FOiBjYW4gdGhlIHJlZ2FsbG9jIG1lYW4gdGhl IGRlZmF1bHQgY2FuIGJlIHJlYWxseSAiYW55Ij8gICovCisgIGlmIChmbGFnX3huYWNrID09 IEhTQUNPX0FUVFJfREVGQVVMVCkKKyAgICBzd2l0Y2ggKGdjbl9hcmNoKQorICAgICAgewor ICAgICAgY2FzZSBQUk9DRVNTT1JfRklKSToKKyAgICAgIGNhc2UgUFJPQ0VTU09SX1ZFR0Ex MDoKKyAgICAgIGNhc2UgUFJPQ0VTU09SX1ZFR0EyMDoKKyAgICAgIGNhc2UgUFJPQ0VTU09S X0dGWDkwODoKKwlmbGFnX3huYWNrID0gSFNBQ09fQVRUUl9PRkY7CisJYnJlYWs7CisgICAg ICBjYXNlIFBST0NFU1NPUl9HRlg5MGE6CisJZmxhZ194bmFjayA9IEhTQUNPX0FUVFJfQU5Z OworCWJyZWFrOworICAgICAgZGVmYXVsdDoKKwlnY2NfdW5yZWFjaGFibGUgKCk7CisgICAg ICB9CisKKyAgaWYgKGZsYWdfc3JhbV9lY2MgPT0gSFNBQ09fQVRUUl9ERUZBVUxUKQorICAg IGZsYWdfc3JhbV9lY2MgPSBIU0FDT19BVFRSX0FOWTsKIH0KIAogLyogfX19ICAqLwpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9nY24vZ2NuLm9wdCBiL2djYy9jb25maWcvZ2NuL2djbi5v cHQKaW5kZXggYzM1NmEwY2JiMDguLjMyNDg2ZDk2MTVmIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2djbi9nY24ub3B0CisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5vcHQKQEAgLTk3LDkg Kzk3LDEyIEBAIEVudW0oaHNhY29fYXR0cl90eXBlKSBTdHJpbmcob24pIFZhbHVlKEhTQUNP X0FUVFJfT04pCiBFbnVtVmFsdWUKIEVudW0oaHNhY29fYXR0cl90eXBlKSBTdHJpbmcoYW55 KSBWYWx1ZShIU0FDT19BVFRSX0FOWSkKIAorRW51bVZhbHVlCitFbnVtKGhzYWNvX2F0dHJf dHlwZSkgU3RyaW5nKGRlZmF1bHQpIFZhbHVlKEhTQUNPX0FUVFJfREVGQVVMVCkKKwogbXhu YWNrPQotVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZCBUb0xvd2VyIEVudW0oaHNhY29f YXR0cl90eXBlKSBWYXIoZmxhZ194bmFjaykgSW5pdChIU0FDT19BVFRSX0FOWSkKLUNvbXBp bGUgZm9yIGRldmljZXMgcmVxdWlyaW5nIFhOQUNLIGVuYWJsZWQuIERlZmF1bHQgXCJhbnlc Ii4KK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQgVG9Mb3dlciBFbnVtKGhzYWNvX2F0 dHJfdHlwZSkgVmFyKGZsYWdfeG5hY2spIEluaXQoSFNBQ09fQVRUUl9ERUZBVUxUKQorQ29t cGlsZSBmb3IgZGV2aWNlcyByZXF1aXJpbmcgWE5BQ0sgZW5hYmxlZC4gRGVmYXVsdCBcImFu eVwiIGlmIFVTTSBpcyBzdXBwb3J0ZWQuCiAKIG1zcmFtLWVjYz0KIFRhcmdldCBSZWplY3RO ZWdhdGl2ZSBKb2luZWQgVG9Mb3dlciBFbnVtKGhzYWNvX2F0dHJfdHlwZSkgVmFyKGZsYWdf c3JhbV9lY2MpIEluaXQoSFNBQ09fQVRUUl9BTlkpCmRpZmYgLS1naXQgYS9nY2MvZG9jL2lu dm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCBkYjAzOWM0NzIyMC4uOGY4 ODViOGM2ZDYgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2Rv Yy9pbnZva2UudGV4aQpAQCAtMjE2MjgsNyArMjE2MjgsOCBAQCBydW4tdGltZSBwZXJmb3Jt YW5jZS4gIFRoZSBkZWZhdWx0IGlzIDMyS0Igd2hlbiB1c2luZyBPcGVuQUNDIG9yIE9wZW5N UCwgYW5kCiBDb21waWxlIGJpbmFyaWVzIHN1aXRhYmxlIGZvciBkZXZpY2VzIHdpdGggdGhl IFhOQUNLIGZlYXR1cmUgZW5hYmxlZCwgZGlzYWJsZWQsCiBvciBlaXRoZXIgbW9kZS4gIFNv bWUgZGV2aWNlcyBhbHdheXMgcmVxdWlyZSBYTkFDSyBhbmQgc29tZSBhbGxvdyB0aGUgdXNl ciB0bwogY29uZmlndXJlIFhOQUNLLiAgVGhlIGNvbXBpbGVkIGNvZGUgbXVzdCBtYXRjaCB0 aGUgZGV2aWNlIG1vZGUuCi1UaGUgZGVmYXVsdCBpcyBAc2FtcHstbXhuYWNrPWFueX0uCitU aGUgZGVmYXVsdCBpcyBAc2FtcHstbXhuYWNrPWFueX0gb24gZGV2aWNlcyB0aGF0IHN1cHBv cnQgVW5pZmllZCBTaGFyZWQKK01lbW9yeSwgYW5kIEBzYW1wey1teG5hY2s9bm99IG90aGVy d2lzZS4KIAogQGVuZCB0YWJsZQogCg== --------------u2dQ6oTec8GjnlTPkxW2nd4T Content-Type: text/plain; charset="UTF-8"; name="231213-xnack.patch" Content-Disposition: attachment; filename="231213-xnack.patch" Content-Transfer-Encoding: base64 YW1kZ2NuOiBTdXBwb3J0IFhOQUNLIG1vZGUKClRoZSBYTkFDSyBmZWF0dXJlIGFsbG93cyBt ZW1vcnkgbG9hZCBpbnN0cnVjdGlvbnMgdG8gcmVzdGFydCBzYWZlbHkgZm9sbG93aW5nCmEg cGFnZS1taXNzIGludGVycnVwdC4gIFRoaXMgaXMgdXNlZnVsIGZvciBzaGFyZWQtbWVtb3J5 IGRldmljZXMsIGxpa2UgQVBVcywKYW5kIHRvIGltcGxlbWVudCBPcGVuTVAgVW5pZmllZCBT aGFyZWQgTWVtb3J5LgoKVG8gc3VwcG9ydCB0aGUgZmVhdHVyZSB3ZSBtdXN0IGJlIGFibGUg dG8gc2V0IHRoZSBhcHByb3ByaWF0ZSBtZXRhLWRhdGEgYW5kCnNldCB0aGUgbG9hZCBpbnN0 cnVjdGlvbnMgdG8gZWFybHktY2xvYmJlci4gIFdoZW4gdGhlIHBvcnQgc3VwcG9ydHMgc2No ZWR1bGluZwpvZiBzX3dhaXRjbnQgaW5zdHJ1Y3Rpb25zIHRoZXJlIHdpbGwgYmUgZnVydGhl ciByZXF1aXJlbWVudHMuCgpnY2MvQ2hhbmdlTG9nOgoKCSogY29uZmlnL2djbi9nY24taHNh LmggKE5PX1hOQUNLKTogSWdub3JlIG1pc3NpbmcgLW1hcmNoLgoJKFhOQUNLT1BUKTogTWF0 Y2ggb24vb2ZmOyBpZ25vcmUgYW55LgoJKiBjb25maWcvZ2NuL2djbi12YWx1Lm1kIChnYXRo ZXI8bW9kZT5faW5zbl8xb2Zmc2V0PGV4ZWM+KToKCUFkZCB4bmFjayBjb21wYXRpYmxlIGFs dGVybmF0aXZlcy4KCShnYXRoZXI8bW9kZT5faW5zbl8yb2Zmc2V0czxleGVjPik6IExpa2V3 aXNlLgoJKiBjb25maWcvZ2NuL2djbi5jYyAoZ2NuX29wdGlvbl9vdmVycmlkZSk6IFBlcm1p dCAtbXhuYWNrIGZvciBkZXZpY2VzCglvdGhlciB0aGFuIEZpamkgYW5kIGdmeDEwMzAuCgko Z2NuX2V4cGFuZF9lcGlsb2d1ZSk6IFJlbW92ZSBlYXJseS1jbG9iYmVyIHByb2JsZW1zLgoJ KGdjbl9oc2FfZGVjbGFyZV9mdW5jdGlvbl9uYW1lKTogT2JleSAtbXhuYWNrIHNldHRpbmcu CgkqIGNvbmZpZy9nY24vZ2NuLm1kICh4bmFjayk6IE5ldyBhdHRyaWJ1dGUuCgkoZW5hYmxl ZCk6IFJld29yayB0byBpbmNsdWRlICJ4bmFjayIgYXR0cmlidXRlLgoJKCptb3ZiaSk6IEFk ZCB4bmFjayBjb21wYXRpYmxlIGFsdGVybmF0aXZlcy4KCSgqbW92PG1vZGU+X2luc24pOiBM aWtld2lzZS4KCSgqbW92PG1vZGU+X2luc24pOiBMaWtld2lzZS4KCSgqbW92PG1vZGU+X2lu c24pOiBMaWtld2lzZS4KCSgqbW92dGlfaW5zbik6IExpa2V3aXNlLgoJKiBjb25maWcvZ2Nu L2djbi5vcHQgKC1teG5hY2spOiBDaGFuZ2UgdGhlIGRlZmF1bHQgdG8gImFueSIuCgkqIGRv Yy9pbnZva2UudGV4aTogUmVtb3ZlIHBsYWNlaG9sZGVyIG5vdGljZSBmb3IgLW14bmFjay4K CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2djbi9nY24taHNhLmggYi9nY2MvY29uZmlnL2dj bi9nY24taHNhLmgKaW5kZXggNGQ3MjI5OWRhOWIuLmJmYjEwNDUyNmM1IDEwMDY0NAotLS0g YS9nY2MvY29uZmlnL2djbi9nY24taHNhLmgKKysrIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLWhz YS5oCkBAIC03NSwxNiArNzUsMTMgQEAgZXh0ZXJuIHVuc2lnbmVkIGludCBnY25fbG9jYWxf c3ltX2hhc2ggKGNvbnN0IGNoYXIgKm5hbWUpOwogICAgc3VwcG9ydGVkIGZvciBnY24uICAq LwogI2RlZmluZSBHT01QX1NFTEZfU1BFQ1MgIiIKIAotI2RlZmluZSBOT19YTkFDSyAiIW1h cmNoPSo6O21hcmNoPWZpamk6O21hcmNoPWdmeDEwMzA6OyIKKyNkZWZpbmUgTk9fWE5BQ0sg Im1hcmNoPWZpamk6O21hcmNoPWdmeDEwMzA6OyIKICNkZWZpbmUgTk9fU1JBTV9FQ0MgIiFt YXJjaD0qOjttYXJjaD1maWppOjttYXJjaD1nZng5MDA6O21hcmNoPWdmeDkwNjo7IgogCiAv KiBJbiBIU0FDT3Y0IG5vIGF0dHJpYnV0ZSBzZXR0aW5nIG1lYW5zIHRoZSBiaW5hcnkgc3Vw cG9ydHMgImFueSIgaGFyZHdhcmUKICAgIGNvbmZpZ3VyYXRpb24uICBUaGUgbmFtZSBvZiB0 aGUgYXR0cmlidXRlIGFsc28gY2hhbmdlZC4gICovCiAjZGVmaW5lIFNSQU1PUFQgIm1zcmFt LWVjYz1vbjotbWF0dHI9K3NyYW1lY2M7bXNyYW0tZWNjPW9mZjotbWF0dHI9LXNyYW1lY2Mi Ci0KLS8qIFJlcGxhY2Ugb25jZSBYTkFDSyBpcyBzdXBwb3J0ZWQ6Ci0gICAjZGVmaW5lIFhO QUNLT1BUICJteG5hY2s9b246LW1hdHRyPSt4bmFjaztteG5hY2s9b2ZmOi1tYXR0cj0teG5h Y2siICAqLwotI2RlZmluZSBYTkFDS09QVCAiIW1uYWNrPSo6LW1hdHRyPS14bmFjazttbmFj az0qOi1tYXR0cj0teG5hY2siCisjZGVmaW5lIFhOQUNLT1BUICJteG5hY2s9b246LW1hdHRy PSt4bmFjaztteG5hY2s9b2ZmOi1tYXR0cj0teG5hY2siCiAKIC8qIFVzZSBMTFZNIGFzc2Vt YmxlciBhbmQgbGlua2VyIG9wdGlvbnMuICAqLwogI2RlZmluZSBBU01fU1BFQyAgIi10cmlw bGU9YW1kZ2NuLS1hbWRoc2EgIiAgXApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9nY24vZ2Nu LXZhbHUubWQgYi9nY2MvY29uZmlnL2djbi9nY24tdmFsdS5tZAppbmRleCBhOTI4ZGVjZDQw OC4uNjRiOGVhMTA1N2YgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvZ2NuL2djbi12YWx1Lm1k CisrKyBiL2djYy9jb25maWcvZ2NuL2djbi12YWx1Lm1kCkBAIC0xMTQ1LDEzICsxMTQ1LDEz IEBAIChkZWZpbmVfZXhwYW5kICJnYXRoZXI8bW9kZT5fZXhwcjxleGVjPiIKICAgICB7fSkK IAogKGRlZmluZV9pbnNuICJnYXRoZXI8bW9kZT5faW5zbl8xb2Zmc2V0PGV4ZWM+IgotICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWX01PViAwICJyZWdpc3Rlcl9vcGVyYW5kIgkJICAgIj12 LGEiKQorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX01PViAwICJyZWdpc3Rlcl9vcGVyYW5k IgkJICAgIj12LGEsJnYsJmEiKQogCSh1bnNwZWM6Vl9NT1YKLQkgIFsocGx1czo8Vm5EST4g KG1hdGNoX29wZXJhbmQ6PFZuREk+IDEgInJlZ2lzdGVyX29wZXJhbmQiICIgdix2IikKKwkg IFsocGx1czo8Vm5EST4gKG1hdGNoX29wZXJhbmQ6PFZuREk+IDEgInJlZ2lzdGVyX29wZXJh bmQiICIgdix2LCB2LCB2IikKIAkJCSh2ZWNfZHVwbGljYXRlOjxWbkRJPgotCQkJICAobWF0 Y2hfb3BlcmFuZCAyICJpbW1lZGlhdGVfb3BlcmFuZCIJICAgIiBuLG4iKSkpCi0JICAgKG1h dGNoX29wZXJhbmQgMyAiaW1tZWRpYXRlX29wZXJhbmQiCQkJICAgIiBuLG4iKQotCSAgKG1h dGNoX29wZXJhbmQgNCAiaW1tZWRpYXRlX29wZXJhbmQiCQkJICAgIiBuLG4iKQorCQkJICAo bWF0Y2hfb3BlcmFuZCAyICJpbW1lZGlhdGVfb3BlcmFuZCIJICAgIiBuLG4sIG4sIG4iKSkp CisJICAgKG1hdGNoX29wZXJhbmQgMyAiaW1tZWRpYXRlX29wZXJhbmQiCQkJICAgIiBuLG4s IG4sIG4iKQorCSAgIChtYXRjaF9vcGVyYW5kIDQgImltbWVkaWF0ZV9vcGVyYW5kIgkJCSAg ICIgbixuLCBuLCBuIikKIAkgICAobWVtOkJMSyAoc2NyYXRjaCkpXQogCSAgVU5TUEVDX0dB VEhFUikpXQogICAiKEFTX0ZMQVRfUCAoSU5UVkFMIChvcGVyYW5kc1szXSkpCkBAIC0xMTgy LDcgKzExODIsOCBAQCAoZGVmaW5lX2luc24gImdhdGhlcjxtb2RlPl9pbnNuXzFvZmZzZXQ8 ZXhlYz4iCiAgIH0KICAgWyhzZXRfYXR0ciAidHlwZSIgImZsYXQiKQogICAgKHNldF9hdHRy ICJsZW5ndGgiICIxMiIpCi0gICAoc2V0X2F0dHIgImdjbl92ZXJzaW9uIiAiKixjZG5hMiIp XSkKKyAgIChzZXRfYXR0ciAiZ2NuX3ZlcnNpb24iICIqLGNkbmEyLCosY2RuYTIiKQorICAg KHNldF9hdHRyICJ4bmFjayIgIm9mZixvZmYsb24sb24iKV0pCiAKIChkZWZpbmVfaW5zbiAi Z2F0aGVyPG1vZGU+X2luc25fMW9mZnNldF9kczxleGVjPiIKICAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6Vl9NT1YgMCAicmVnaXN0ZXJfb3BlcmFuZCIJCSAgICI9dixhIikKQEAgLTEyMDgs MTggKzEyMDksMTggQEAgKGRlZmluZV9pbnNuICJnYXRoZXI8bW9kZT5faW5zbl8xb2Zmc2V0 X2RzPGV4ZWM+IgogICAgKHNldF9hdHRyICJnY25fdmVyc2lvbiIgIiosY2RuYTIiKV0pCiAK IChkZWZpbmVfaW5zbiAiZ2F0aGVyPG1vZGU+X2luc25fMm9mZnNldHM8ZXhlYz4iCi0gIFso c2V0IChtYXRjaF9vcGVyYW5kOlZfTU9WIDAgInJlZ2lzdGVyX29wZXJhbmQiCQkgICAgICAi PXYsYSIpCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZfTU9WIDAgInJlZ2lzdGVyX29wZXJh bmQiCQkiPXYsYSwmdiwmYSIpCiAJKHVuc3BlYzpWX01PVgogCSAgWyhwbHVzOjxWbkRJPgog CSAgICAgKHBsdXM6PFZuREk+CiAJICAgICAgICh2ZWNfZHVwbGljYXRlOjxWbkRJPgotCQkg KG1hdGNoX29wZXJhbmQ6REkgMSAicmVnaXN0ZXJfb3BlcmFuZCIJCSAgICAgICJTdixTdiIp KQorCQkgKG1hdGNoX29wZXJhbmQ6REkgMSAicmVnaXN0ZXJfb3BlcmFuZCIJCSJTdixTdixT dixTdiIpKQogCSAgICAgICAoc2lnbl9leHRlbmQ6PFZuREk+Ci0JCSAobWF0Y2hfb3BlcmFu ZDo8Vm5TST4gMiAicmVnaXN0ZXJfb3BlcmFuZCIJICAgICAgIiB2LHYiKSkpCisJCSAobWF0 Y2hfb3BlcmFuZDo8Vm5TST4gMiAicmVnaXN0ZXJfb3BlcmFuZCIJIiB2LCB2LCB2LCB2Iikp KQogCSAgICAgKHZlY19kdXBsaWNhdGU6PFZuREk+IChtYXRjaF9vcGVyYW5kIDMgImltbWVk aWF0ZV9vcGVyYW5kIgotCQkJCQkJCQkgICAgICAiIG4sbiIpKSkKLQkgICAobWF0Y2hfb3Bl cmFuZCA0ICJpbW1lZGlhdGVfb3BlcmFuZCIJCQkgICAgICAiIG4sbiIpCi0JICAgKG1hdGNo X29wZXJhbmQgNSAiaW1tZWRpYXRlX29wZXJhbmQiCQkJICAgICAgIiBuLG4iKQorCQkJCQkJ CQkiIG4sIG4sIG4sIG4iKSkpCisJICAgKG1hdGNoX29wZXJhbmQgNCAiaW1tZWRpYXRlX29w ZXJhbmQiCQkJIiBuLCBuLCBuLCBuIikKKwkgICAobWF0Y2hfb3BlcmFuZCA1ICJpbW1lZGlh dGVfb3BlcmFuZCIJCQkiIG4sIG4sIG4sIG4iKQogCSAgIChtZW06QkxLIChzY3JhdGNoKSld CiAJICBVTlNQRUNfR0FUSEVSKSldCiAgICIoQVNfR0xPQkFMX1AgKElOVFZBTCAob3BlcmFu ZHNbNF0pKQpAQCAtMTIzOSw3ICsxMjQwLDggQEAgKGRlZmluZV9pbnNuICJnYXRoZXI8bW9k ZT5faW5zbl8yb2Zmc2V0czxleGVjPiIKICAgfQogICBbKHNldF9hdHRyICJ0eXBlIiAiZmxh dCIpCiAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjEyIikKLSAgIChzZXRfYXR0ciAiZ2NuX3Zl cnNpb24iICIqLGNkbmEyIildKQorICAgKHNldF9hdHRyICJnY25fdmVyc2lvbiIgIiosY2Ru YTIsKixjZG5hMiIpCisgICAoc2V0X2F0dHIgInhuYWNrIiAib2ZmLG9mZixvbixvbiIpXSkK IAogKGRlZmluZV9leHBhbmQgInNjYXR0ZXJfc3RvcmU8bW9kZT48dm5zaT4iCiAgIFsobWF0 Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIikKZGlmZiAtLWdpdCBhL2djYy9j b25maWcvZ2NuL2djbi5jYyBiL2djYy9jb25maWcvZ2NuL2djbi5jYwppbmRleCAwMzFiNDA1 ZTgxMC4uZDkyY2QwMWQwM2YgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvZ2NuL2djbi5jYwor KysgYi9nY2MvY29uZmlnL2djbi9nY24uY2MKQEAgLTE2MCwxMSArMTYwLDE4IEBAIGdjbl9v cHRpb25fb3ZlcnJpZGUgKHZvaWQpCiAJYWNjX2xkc19zaXplID0gMzI3Njg7CiAgICAgfQog Ci0gIC8qIFRoZSB4bmFjayBvcHRpb24gaXMgYSBwbGFjZWhvbGRlciwgZm9yIG5vdy4gIEJl Zm9yZSByZW1vdmluZywgdXBkYXRlCi0gICAgIGdjbi1oc2EuaCdzIFhOQUNLT1BULCBnY24u b3B0J3MgbXhuYWNrPSBkZWZhdWx0IGluaXQrZGVzY3IsIGFuZAotICAgICBpbnZva2UudGV4 aSdzIGRlZmF1bHQgZGVzY3JpcHRpb24uICAqLwotICBpZiAoZmxhZ194bmFjayAhPSBIU0FD T19BVFRSX09GRikKLSAgICBzb3JyeSAoIlhOQUNLIHN1cHBvcnQiKTsKKyAgLyogZ2Z4ODAz ICJGaWppIiBhbmQgZ2Z4MTAzMCBkbyBub3Qgc3VwcG9ydCBYTkFDSy4gICovCisgIGlmIChn Y25fYXJjaCA9PSBQUk9DRVNTT1JfRklKSQorICAgICAgfHwgZ2NuX2FyY2ggPT0gUFJPQ0VT U09SX0dGWDEwMzApCisgICAgeworICAgICAgaWYgKGZsYWdfeG5hY2sgPT0gSFNBQ09fQVRU Ul9PTikKKwllcnJvciAoIi1teG5hY2s9b24gaXMgaW5jb21wYXRpYmxlIHdpdGggLW1hcmNo PSVzIiwKKwkgICAgICAgKGdjbl9hcmNoID09IFBST0NFU1NPUl9GSUpJID8gImZpamkiCisJ ICAgICAgICA6IGdjbl9hcmNoID09IFBST0NFU1NPUl9HRlgxMDMwID8gImdmeDEwMzAiCisJ ICAgICAgICA6IE5VTEwpKTsKKyAgICAgIC8qIEFsbG93IEhTQUNPX0FUVFJfQU5ZIHNpbGVu dGx5IGJlY2F1c2UgdGhhdCdzIHRoZSBkZWZhdWx0LiAgKi8KKyAgICAgIGZsYWdfeG5hY2sg PSBIU0FDT19BVFRSX09GRjsKKyAgICB9CiB9CiAKIC8qIH19fSAgKi8KQEAgLTM1ODUsMTgg KzM1OTIsMjAgQEAgZ2NuX2V4cGFuZF9lcGlsb2d1ZSAodm9pZCkKICAgICAgIC8qIEFzc3Vt ZSB0aGF0IGFuIGV4aXQgdmFsdWUgY29tcGF0aWJsZSB3aXRoIGdjbi1ydW4gaXMgZXhwZWN0 ZWQuCiAgICAgICAgICBUaGF0IGlzLCB0aGUgdGhpcmQgaW5wdXQgcGFyYW1ldGVyIGlzIGFu IGludCouCiAKLSAgICAgICAgIFdlIGNhbid0IGFsbG9jYXRlIGFueSBuZXcgcmVnaXN0ZXJz LCBidXQgdGhlIGtlcm5hcmdfcmVnIGlzCi0gICAgICAgICBkZWFkIGFmdGVyIHRoaXMsIHNv IHdlJ2xsIHVzZSB0aGF0LiAgKi8KKyAgICAgICAgIFdlIGNhbid0IGFsbG9jYXRlIGFueSBu ZXcgcmVnaXN0ZXJzLCBidXQgdGhlIGRpc3BhdGNoX3B0ciBhbmQKKwkga2VybmFyZ19yZWcg YXJlIGRlYWQgYWZ0ZXIgdGhpcywgc28gd2UnbGwgdXNlIHRob3NlLiAgKi8KKyAgICAgIHJ0 eCBkaXNwYXRjaF9wdHJfcmVnID0gZ2VuX3J0eF9SRUcgKERJbW9kZSwgY2Z1bi0+bWFjaGlu ZS0+YXJncy5yZWcKKwkJCQkJICBbRElTUEFUQ0hfUFRSX0FSR10pOwogICAgICAgcnR4IGtl cm5hcmdfcmVnID0gZ2VuX3J0eF9SRUcgKERJbW9kZSwgY2Z1bi0+bWFjaGluZS0+YXJncy5y ZWcKIAkJCQkgICAgIFtLRVJOQVJHX1NFR01FTlRfUFRSX0FSR10pOwogICAgICAgcnR4IHJl dHB0cl9tZW0gPSBnZW5fcnR4X01FTSAoREltb2RlLAogCQkJCSAgICBnZW5fcnR4X1BMVVMg KERJbW9kZSwga2VybmFyZ19yZWcsCiAJCQkJCQkgIEdFTl9JTlQgKDE2KSkpOwogICAgICAg c2V0X21lbV9hZGRyX3NwYWNlIChyZXRwdHJfbWVtLCBBRERSX1NQQUNFX1NDQUxBUl9GTEFU KTsKLSAgICAgIGVtaXRfbW92ZV9pbnNuIChrZXJuYXJnX3JlZywgcmV0cHRyX21lbSk7Cisg ICAgICBlbWl0X21vdmVfaW5zbiAoZGlzcGF0Y2hfcHRyX3JlZywgcmV0cHRyX21lbSk7CiAK ICAgICAgIHJ0eCByZXR2YWxfYWRkciA9IGdlbl9ydHhfUkVHIChESW1vZGUsIEZJUlNUX1ZQ QVJNX1JFRyArIDIpOwotICAgICAgZW1pdF9tb3ZlX2luc24gKHJldHZhbF9hZGRyLCBrZXJu YXJnX3JlZyk7CisgICAgICBlbWl0X21vdmVfaW5zbiAocmV0dmFsX2FkZHIsIGRpc3BhdGNo X3B0cl9yZWcpOwogICAgICAgcnR4IHJldHZhbF9tZW0gPSBnZW5fcnR4X01FTSAoU0ltb2Rl LCByZXR2YWxfYWRkcik7CiAgICAgICBzZXRfbWVtX2FkZHJfc3BhY2UgKHJldHZhbF9tZW0s IEFERFJfU1BBQ0VfRkxBVCk7CiAgICAgICBlbWl0X21vdmVfaW5zbiAocmV0dmFsX21lbSwg Z2VuX3J0eF9SRUcgKFNJbW9kZSwgUkVUVVJOX1ZBTFVFX1JFRykpOwpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9nY24vZ2NuLm1kIGIvZ2NjL2NvbmZpZy9nY24vZ2NuLm1kCmluZGV4IGI3 ZmJiYWY4MzBiLi5jN2Y2M2QwYTNhYyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9nY24vZ2Nu Lm1kCisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5tZApAQCAtMjk1LDYgKzI5NSw4IEBAIChk ZWZpbmVfYXR0ciAibGVuZ3RoIiAiIgogKGRlZmluZV9hdHRyICJnY25fdmVyc2lvbiIgImdj bjMsZ2NuNSxjZG5hMiIgKGNvbnN0X3N0cmluZyAiZ2NuMyIpKQogKGRlZmluZV9hdHRyICJy ZG5hIiAiYW55LG5vLHllcyIgKGNvbnN0X3N0cmluZyAiYW55IikpCiAKKyhkZWZpbmVfYXR0 ciAieG5hY2siICJuYSxvZmYsb24iIChjb25zdF9zdHJpbmcgIm5hIikpCisKIChkZWZpbmVf YXR0ciAiZW5hYmxlZCIgIiIKICAgKGNvbmQgWyhhbmQgKGVxX2F0dHIgInJkbmEiICJubyIp CiAJICAgICAgKG5lIChzeW1ib2xfcmVmICJUQVJHRVRfUkROQTIiKSAoY29uc3RfaW50IDAp KSkKQEAgLTMwMiwxNCArMzA0LDE5IEBAIChkZWZpbmVfYXR0ciAiZW5hYmxlZCIgIiIKIAkg KGFuZCAoZXFfYXR0ciAicmRuYSIgInllcyIpCiAJICAgICAgKGVxIChzeW1ib2xfcmVmICJU QVJHRVRfUkROQTIiKSAoY29uc3RfaW50IDApKSkKIAkgICAoY29uc3RfaW50IDApCi0JIChl cV9hdHRyICJnY25fdmVyc2lvbiIgImdjbjMiKSAoY29uc3RfaW50IDEpCiAJIChhbmQgKGVx X2F0dHIgImdjbl92ZXJzaW9uIiAiZ2NuNSIpCi0JICAgICAgKG5lIChzeW1ib2xfcmVmICJU QVJHRVRfR0NONV9QTFVTIikgKGNvbnN0X2ludCAwKSkpCi0JICAgKGNvbnN0X2ludCAxKQor CSAgICAgIChlcSAoc3ltYm9sX3JlZiAiVEFSR0VUX0dDTjVfUExVUyIpIChjb25zdF9pbnQg MCkpKQorCSAgIChjb25zdF9pbnQgMCkKIAkgKGFuZCAoZXFfYXR0ciAiZ2NuX3ZlcnNpb24i ICJjZG5hMiIpCi0JICAgICAgKG5lIChzeW1ib2xfcmVmICJUQVJHRVRfQ0ROQTJfUExVUyIp IChjb25zdF9pbnQgMCkpKQotCSAgIChjb25zdF9pbnQgMSldCi0JKGNvbnN0X2ludCAwKSkp CisJICAgICAgKGVxIChzeW1ib2xfcmVmICJUQVJHRVRfQ0ROQTJfUExVUyIpIChjb25zdF9p bnQgMCkpKQorCSAgIChjb25zdF9pbnQgMCkKKwkgKGFuZCAoZXFfYXR0ciAieG5hY2siICJv ZmYiKQorCSAgICAgIChuZSAoc3ltYm9sX3JlZiAiVEFSR0VUX1hOQUNLIikgKGNvbnN0X2lu dCAwKSkpCisJICAgKGNvbnN0X2ludCAwKQorCSAoYW5kIChlcV9hdHRyICJ4bmFjayIgIm9u IikKKwkgICAgICAoZXEgKHN5bWJvbF9yZWYgIlRBUkdFVF9YTkFDSyIpIChjb25zdF9pbnQg MCkpKQorCSAgIChjb25zdF9pbnQgMCldCisJKGNvbnN0X2ludCAxKSkpCiAKIDsgV2UgbmVl ZCB0byBiZSBhYmxlIHRvIGlkZW50aWZ5IHZfcmVhZGxhbmUgYW5kIHZfd3JpdGVsYW5lIHdp dGgKIDsgU0dQUiBsYW5lIHNlbGVjdGlvbiBpbiBvcmRlciB0byBoYW5kbGUgIk1hbnVhbGx5 IEluc2VydGVkIFdhaXQgU3RhdGVzIi4KQEAgLTUwOCw5ICs1MTUsOSBAQCAoZGVmaW5lX3Nw bGl0CiAKIChkZWZpbmVfaW5zbiAiKm1vdmJpIgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpC SSAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIKLQkJCQkgICAgIj1TZywgICB2LFNnLGNzLGNW LGNWLFNtLFJTLCB2LFJGLCB2LFJNIikKKwkJCSAgIj1TZywgICB2LFNnLGNzLGNWLGNWLFNt LCZTbSxSUywgdiwmdixSRiwgdiwmdixSTSIpCiAJKG1hdGNoX29wZXJhbmQ6QkkgMSAiZ2Nu X2xvYWRfb3BlcmFuZCIKLQkJCQkgICAgIlNTQSx2U3ZBLCB2LFNTLCB2LFNTLFJTLFNtLFJG LCB2LFJNLCB2IikpXQorCQkJICAiU1NBLHZTdkEsIHYsU1MsIHYsU1MsUlMsIFJTLFNtLFJG LFJGLCB2LFJNLFJNLCB2IikpXQogICAiIgogICB7CiAgICAgLyogU0NDIGFzIGFuIG9wZXJh bmQgaXMgY3VycmVudGx5IG5vdCBhY2NlcHRlZCBieSB0aGUgTExWTSBhc3NlbWJsZXIsIHNv CkBAIC01MzcsMjUgKzU0NCwyOSBAQCAoZGVmaW5lX2luc24gIiptb3ZiaSIKICAgICAgIHJl dHVybiAic19tb3ZfYjMyXHR2Y2NfbG8sICUxXDsiCiAJICAgICAic19tb3ZfYjMyXHR2Y2Nf aGksIDAiOwogICAgIGNhc2UgNjoKLSAgICAgIHJldHVybiAic19sb2FkX2R3b3JkXHQlMCwg JUExXDtzX3dhaXRjbnRcdGxna21jbnQoMCkiOwogICAgIGNhc2UgNzoKLSAgICAgIHJldHVy biAic19zdG9yZV9kd29yZFx0JTEsICVBMCI7CisgICAgICByZXR1cm4gInNfbG9hZF9kd29y ZFx0JTAsICVBMVw7c193YWl0Y250XHRsZ2ttY250KDApIjsKICAgICBjYXNlIDg6Ci0gICAg ICByZXR1cm4gImZsYXRfbG9hZF9kd29yZFx0JTAsICVBMSVPMSVnMVw7c193YWl0Y250XHQw IjsKKyAgICAgIHJldHVybiAic19zdG9yZV9kd29yZFx0JTEsICVBMCI7CiAgICAgY2FzZSA5 OgotICAgICAgcmV0dXJuICJmbGF0X3N0b3JlX2R3b3JkXHQlQTAsICUxJU8wJWcwIjsKICAg ICBjYXNlIDEwOgotICAgICAgcmV0dXJuICJnbG9iYWxfbG9hZF9kd29yZFx0JTAsICVBMSVP MSVnMVw7c193YWl0Y250XHR2bWNudCgwKSI7CisgICAgICByZXR1cm4gImZsYXRfbG9hZF9k d29yZFx0JTAsICVBMSVPMSVnMVw7c193YWl0Y250XHQwIjsKICAgICBjYXNlIDExOgorICAg ICAgcmV0dXJuICJmbGF0X3N0b3JlX2R3b3JkXHQlQTAsICUxJU8wJWcwIjsKKyAgICBjYXNl IDEyOgorICAgIGNhc2UgMTM6CisgICAgICByZXR1cm4gImdsb2JhbF9sb2FkX2R3b3JkXHQl MCwgJUExJU8xJWcxXDtzX3dhaXRjbnRcdHZtY250KDApIjsKKyAgICBjYXNlIDE0OgogICAg ICAgcmV0dXJuICJnbG9iYWxfc3RvcmVfZHdvcmRcdCVBMCwgJTElTzAlZzAiOwogICAgIGRl ZmF1bHQ6CiAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgICAgfQogICB9Ci0gIFsoc2V0 X2F0dHIgInR5cGUiICJzb3AxLHZvcDEsdm9wM2Esc29wayx2b3BjLG11bHQsc21lbSxzbWVt LGZsYXQsZmxhdCwKLQkJICAgICBmbGF0LGZsYXQiKQotICAgKHNldF9hdHRyICJleGVjIiAi KiwqLG5vbmUsKiwqLCosKiwqLCosKiwqLCoiKQotICAgKHNldF9hdHRyICJsZW5ndGgiICI0 LDQsNCw0LDQsOCwxMiwxMiwxMiwxMiwxMiwxMiIpXSkKKyAgWyhzZXRfYXR0ciAidHlwZSIg InNvcDEsdm9wMSx2b3AzYSxzb3BrLHZvcGMsbXVsdCxzbWVtLHNtZW0sc21lbSxmbGF0LGZs YXQsCisJCSAgICAgZmxhdCxmbGF0LGZsYXQsZmxhdCIpCisgICAoc2V0X2F0dHIgImV4ZWMi ICIqLCosbm9uZSwqLCosKiwqLCosKiwqLCosKiwqLCosKiIpCisgICAoc2V0X2F0dHIgImxl bmd0aCIgIjQsNCw0LDQsNCw4LDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyLDEyIikKKyAgIChz ZXRfYXR0ciAieG5hY2siICIqLCosKiwqLCosKixvZmYsb24sKixvZmYsb24sKixvZmYsb24s KiIpXSkKIAogOyAzMmJpdCBtb3ZlIHBhdHRlcm4KIApAQCAtNTYzLDMyICs1NzQsMzggQEAg KGRlZmluZV9pbnNuICIqbW92PG1vZGU+X2luc24iCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlNJU0YgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQogCShtYXRjaF9vcGVyYW5kOlNJU0Yg MSAiZ2NuX2xvYWRfb3BlcmFuZCIpKV0KICAgIiIKLSAge0AgW2NvbnM6ID0wLCAxOyBhdHRy czogdHlwZSwgZXhlYywgbGVuZ3RoLCBnY25fdmVyc2lvbl0KLSAgIFtTRCAgLFNTQSA7c29w MSAsKiAgICw0ICwqICAgIF0gc19tb3ZfYjMyXHQlMCwgJTEKLSAgIFtTRCAgLEogICA7c29w ayAsKiAgICw0ICwqICAgIF0gc19tb3ZrX2kzMlx0JTAsICUxCi0gICBbU0QgICxCICAgO3Nv cDEgLCogICAsOCAsKiAgICBdIHNfbW92X2IzMlx0JTAsICUxCi0gICBbU0QgICxSQiAgO3Nt ZW0gLCogICAsMTIsKiAgICBdIHNfYnVmZmVyX2xvYWQlczBcdCUwLCBzWzA6M10sICUxXDtz X3dhaXRjbnRcdGxna21jbnQoMCkKLSAgIFtSQiAgLFNtICA7c21lbSAsKiAgICwxMiwqICAg IF0gc19idWZmZXJfc3RvcmUlczFcdCUxLCBzWzA6M10sICUwCi0gICBbU20gICxSUyAgO3Nt ZW0gLCogICAsMTIsKiAgICBdIHNfbG9hZF9kd29yZFx0JTAsICVBMVw7c193YWl0Y250XHRs Z2ttY250KDApCi0gICBbUlMgICxTbSAgO3NtZW0gLCogICAsMTIsKiAgICBdIHNfc3RvcmVf ZHdvcmRcdCUxLCAlQTAKLSAgIFt2ICAgLHYgICA7dm9wMSAsKiAgICw0ICwqICAgIF0gdl9t b3ZfYjMyXHQlMCwgJTEKLSAgIFtTZyAgLHYgICA7dm9wM2Esbm9uZSw4ICwqICAgIF0gdl9y ZWFkbGFuZV9iMzJcdCUwLCAlMSwgMAotICAgW3YgICAsU3YgIDt2b3AzYSxub25lLDggLCog ICAgXSB2X3dyaXRlbGFuZV9iMzJcdCUwLCAlMSwgMAotICAgW3YgICAsXmEgIDt2b3AzcF9t YWksKiw4LCogICAgXSB2X2FjY3ZncHJfcmVhZF9iMzJcdCUwLCAlMQotICAgW2EgICAsdiAg IDt2b3AzcF9tYWksKiw4LCogICAgXSB2X2FjY3ZncHJfd3JpdGVfYjMyXHQlMCwgJTEKLSAg IFthICAgLGEgICA7dm9wMSAsKiAgICAsNCxjZG5hMl0gdl9hY2N2Z3ByX21vdl9iMzJcdCUw LCAlMQotICAgW3YgICAsUkYgIDtmbGF0ICwqICAgLDEyLCogICAgXSBmbGF0X2xvYWRfZHdv cmRcdCUwLCAlQTElTzElZzFcO3Nfd2FpdGNudFx0MAotICAgW15hICAsUkYgIDtmbGF0ICwq ICAgLDEyLGNkbmEyXSBeCi0gICBbUkYgICx2ICAgO2ZsYXQgLCogICAsMTIsKiAgICBdIGZs YXRfc3RvcmVfZHdvcmRcdCVBMCwgJTElTzAlZzAKLSAgIFtSRiAgLGEgICA7ZmxhdCAsKiAg ICwxMixjZG5hMl0gXgotICAgW3YgICAsQiAgIDt2b3AxICwqICAgLDggLCogICAgXSB2X21v dl9iMzJcdCUwLCAlMQotICAgW1JMUkcsdiAgIDtkcyAgICwqICAgLDEyLCogICAgXSBkc193 cml0ZV9iMzJcdCVBMCwgJTElTzBcO3Nfd2FpdGNudFx0bGdrbWNudCgwKQotICAgW3YgICAs UkxSRztkcyAgICwqICAgLDEyLCogICAgXSBkc19yZWFkX2IzMlx0JTAsICVBMSVPMVw7c193 YWl0Y250XHRsZ2ttY250KDApCi0gICBbU0QgICxZICAgO3NvcDEgLCogICAsOCAsKiAgICBd IHNfbW92X2IzMlx0JTAsICUxCi0gICBbdiAgICxSTSAgO2ZsYXQgLCogICAsMTIsKiAgICBd IGdsb2JhbF9sb2FkX2R3b3JkXHQlMCwgJUExJU8xJWcxXDtzX3dhaXRjbnRcdHZtY250KDAp Ci0gICBbXmEgICxSTSAgO2ZsYXQgLCogICAsMTIsY2RuYTJdIF4KLSAgIFtSTSAgLHYgICA7 ZmxhdCAsKiAgICwxMiwqICAgIF0gZ2xvYmFsX3N0b3JlX2R3b3JkXHQlQTAsICUxJU8wJWcw Ci0gICBbUk0gICxhICAgO2ZsYXQgLCogICAsMTIsY2RuYTJdIF4KKyAge0AgW2NvbnM6ID0w LCAxOyBhdHRyczogdHlwZSwgZXhlYywgbGVuZ3RoLCBnY25fdmVyc2lvbiwgeG5hY2tdCisg ICBbU0QgICxTU0EgO3NvcDEgLCogICAsNCAsKiAgICAsKiAgXSBzX21vdl9iMzJcdCUwLCAl MQorICAgW1NEICAsSiAgIDtzb3BrICwqICAgLDQgLCogICAgLCogIF0gc19tb3ZrX2kzMlx0 JTAsICUxCisgICBbU0QgICxCICAgO3NvcDEgLCogICAsOCAsKiAgICAsKiAgXSBzX21vdl9i MzJcdCUwLCAlMQorICAgW1NEICAsUkIgIDtzbWVtICwqICAgLDEyLCogICAgLG9mZl0gc19i dWZmZXJfbG9hZCVzMFx0JTAsIHNbMDozXSwgJTFcO3Nfd2FpdGNudFx0bGdrbWNudCgwKQor ICAgWyZTRCAsUkIgIDtzbWVtICwqICAgLDEyLCogICAgLG9uIF0gXgorICAgW1JCICAsU20g IDtzbWVtICwqICAgLDEyLCogICAgLCogIF0gc19idWZmZXJfc3RvcmUlczFcdCUxLCBzWzA6 M10sICUwCisgICBbU20gICxSUyAgO3NtZW0gLCogICAsMTIsKiAgICAsb2ZmXSBzX2xvYWRf ZHdvcmRcdCUwLCAlQTFcO3Nfd2FpdGNudFx0bGdrbWNudCgwKQorICAgWyZTbSAsUlMgIDtz bWVtICwqICAgLDEyLCogICAgLG9uIF0gXgorICAgW1JTICAsU20gIDtzbWVtICwqICAgLDEy LCogICAgLCogIF0gc19zdG9yZV9kd29yZFx0JTEsICVBMAorICAgW3YgICAsdiAgIDt2b3Ax ICwqICAgLDQgLCogICAgLCogIF0gdl9tb3ZfYjMyXHQlMCwgJTEKKyAgIFtTZyAgLHYgICA7 dm9wM2Esbm9uZSw4ICwqICAgICwqICBdIHZfcmVhZGxhbmVfYjMyXHQlMCwgJTEsIDAKKyAg IFt2ICAgLFN2ICA7dm9wM2Esbm9uZSw4ICwqICAgICwqICBdIHZfd3JpdGVsYW5lX2IzMlx0 JTAsICUxLCAwCisgICBbdiAgICxeYSAgO3ZvcDNwX21haSwqLDgsKiAgICAsKiAgXSB2X2Fj Y3ZncHJfcmVhZF9iMzJcdCUwLCAlMQorICAgW2EgICAsdiAgIDt2b3AzcF9tYWksKiw4LCog ICAgLCogIF0gdl9hY2N2Z3ByX3dyaXRlX2IzMlx0JTAsICUxCisgICBbYSAgICxhICAgO3Zv cDEgLCogICAgLDQsY2RuYTIsKiAgXSB2X2FjY3ZncHJfbW92X2IzMlx0JTAsICUxCisgICBb diAgICxSRiAgO2ZsYXQgLCogICAsMTIsKiAgICAsb2ZmXSBmbGF0X2xvYWRfZHdvcmRcdCUw LCAlQTElTzElZzFcO3Nfd2FpdGNudFx0MAorICAgWyZ2ICAsUkYgIDtmbGF0ICwqICAgLDEy LCogICAgLG9uIF0gXgorICAgW15hICAsUkYgIDtmbGF0ICwqICAgLDEyLGNkbmEyLG9mZl0g XgorICAgWyZeYSAsUkYgIDtmbGF0ICwqICAgLDEyLGNkbmEyLG9uIF0gXgorICAgW1JGICAs diAgIDtmbGF0ICwqICAgLDEyLCogICAgLCogIF0gZmxhdF9zdG9yZV9kd29yZFx0JUEwLCAl MSVPMCVnMAorICAgW1JGICAsYSAgIDtmbGF0ICwqICAgLDEyLGNkbmEyLCogIF0gXgorICAg W3YgICAsQiAgIDt2b3AxICwqICAgLDggLCogICAgLCogIF0gdl9tb3ZfYjMyXHQlMCwgJTEK KyAgIFtSTFJHLHYgICA7ZHMgICAsKiAgICwxMiwqICAgICwqICBdIGRzX3dyaXRlX2IzMlx0 JUEwLCAlMSVPMFw7c193YWl0Y250XHRsZ2ttY250KDApCisgICBbdiAgICxSTFJHO2RzICAg LCogICAsMTIsKiAgICAsKiAgXSBkc19yZWFkX2IzMlx0JTAsICVBMSVPMVw7c193YWl0Y250 XHRsZ2ttY250KDApCisgICBbU0QgICxZICAgO3NvcDEgLCogICAsOCAsKiAgICAsKiAgXSBz X21vdl9iMzJcdCUwLCAlMQorICAgW3YgICAsUk0gIDtmbGF0ICwqICAgLDEyLCogICAgLG9m Zl0gZ2xvYmFsX2xvYWRfZHdvcmRcdCUwLCAlQTElTzElZzFcO3Nfd2FpdGNudFx0dm1jbnQo MCkKKyAgIFsmdiAgLFJNICA7ZmxhdCAsKiAgICwxMiwqICAgICxvbiBdIF4KKyAgIFteYSAg LFJNICA7ZmxhdCAsKiAgICwxMixjZG5hMixvZmZdIF4KKyAgIFsmXmEgLFJNICA7ZmxhdCAs KiAgICwxMixjZG5hMixvbiBdIF4KKyAgIFtSTSAgLHYgICA7ZmxhdCAsKiAgICwxMiwqICAg ICwqICBdIGdsb2JhbF9zdG9yZV9kd29yZFx0JUEwLCAlMSVPMCVnMAorICAgW1JNICAsYSAg IDtmbGF0ICwqICAgLDEyLGNkbmEyLCogIF0gXgogICB9KQogCiA7IDgvMTZiaXQgbW92ZSBw YXR0ZXJuCkBAIC01OTgsMjcgKzYxNSwzMSBAQCAoZGVmaW5lX2luc24gIiptb3Y8bW9kZT5f aW5zbiIKICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6UUlISSAwICJub25pbW1lZGlhdGVfb3Bl cmFuZCIpCiAJKG1hdGNoX29wZXJhbmQ6UUlISSAxICJnY25fbG9hZF9vcGVyYW5kIikpXQog ICAiZ2NuX3ZhbGlkX21vdmVfcCAoPE1PREU+bW9kZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRz WzFdKSIKLSAge0AgW2NvbnM6ID0wLCAxOyBhdHRyczogdHlwZSwgZXhlYywgbGVuZ3RoLCBn Y25fdmVyc2lvbl0KLSAgW1NEICAsU1NBIDtzb3AxICwqICAgLDQgLCogICAgXSBzX21vdl9i MzJcdCUwLCAlMQotICBbU0QgICxKICAgO3NvcGsgLCogICAsNCAsKiAgICBdIHNfbW92a19p MzJcdCUwLCAlMQotICBbU0QgICxCICAgO3NvcDEgLCogICAsOCAsKiAgICBdIHNfbW92X2Iz Mlx0JTAsICUxCi0gIFt2ICAgLHYgICA7dm9wMSAsKiAgICw0ICwqICAgIF0gdl9tb3ZfYjMy XHQlMCwgJTEKLSAgW1NnICAsdiAgIDt2b3AzYSxub25lLDQgLCogICAgXSB2X3JlYWRsYW5l X2IzMlx0JTAsICUxLCAwCi0gIFt2ICAgLFN2ICA7dm9wM2Esbm9uZSw0ICwqICAgIF0gdl93 cml0ZWxhbmVfYjMyXHQlMCwgJTEsIDAKLSAgW3YgICAsXmEgIDt2b3AzcF9tYWksKiw4LCog ICAgXSB2X2FjY3ZncHJfcmVhZF9iMzJcdCUwLCAlMQotICBbYSAgICx2ICAgO3ZvcDNwX21h aSwqLDgsKiAgICBdIHZfYWNjdmdwcl93cml0ZV9iMzJcdCUwLCAlMQotICBbYSAgICxhICAg O3ZvcDEgLCogICAgLDgsY2RuYTJdIHZfYWNjdmdwcl9tb3ZfYjMyXHQlMCwgJTEKLSAgW3Yg ICAgLFJGIDtmbGF0ICwqICAgLDEyLCogICAgXSBmbGF0X2xvYWQlbzFcdCUwLCAlQTElTzEl ZzFcO3Nfd2FpdGNudFx0MAotICBbXmEgICAsUkYgO2ZsYXQgLCogICAsMTIsY2RuYTJdIF4K LSAgW1JGICAsdiAgIDtmbGF0ICwqICAgLDEyLCogICAgXSBmbGF0X3N0b3JlJXMwXHQlQTAs ICUxJU8wJWcwCi0gIFtSRiAgLGEgICA7ZmxhdCAsKiAgICwxMixjZG5hMl0gXgotICBbdiAg ICxCICAgO3ZvcDEgLCogICAsOCAsKiAgICBdIHZfbW92X2IzMlx0JTAsICUxCi0gIFtSTFJH LHYgICA7ZHMgICAsKiAgICwxMiwqICAgIF0gZHNfd3JpdGUlYjBcdCVBMCwgJTElTzBcO3Nf d2FpdGNudFx0bGdrbWNudCgwKQotICBbdiAgICxSTFJHO2RzICAgLCogICAsMTIsKiAgICBd IGRzX3JlYWQldTFcdCUwLCAlQTElTzFcO3Nfd2FpdGNudFx0bGdrbWNudCgwKQotICBbdiAg ICxSTSAgO2ZsYXQgLCogICAsMTIsKiAgICBdIGdsb2JhbF9sb2FkJW8xXHQlMCwgJUExJU8x JWcxXDtzX3dhaXRjbnRcdHZtY250KDApCi0gIFteYSAgLFJNICA7ZmxhdCAsKiAgICwxMixj ZG5hMl0gXgotICBbUk0gICx2ICAgO2ZsYXQgLCogICAsMTIsKiAgICBdIGdsb2JhbF9zdG9y ZSVzMFx0JUEwLCAlMSVPMCVnMAotICBbUk0gICxhICAgO2ZsYXQgLCogICAsMTIsY2RuYTJd IF4KKyAge0AgW2NvbnM6ID0wLCAxOyBhdHRyczogdHlwZSwgZXhlYywgbGVuZ3RoLCBnY25f dmVyc2lvbiwgeG5hY2tdCisgIFtTRCAgLFNTQSA7c29wMSAsKiAgICw0ICwqICAgICwqICBd IHNfbW92X2IzMlx0JTAsICUxCisgIFtTRCAgLEogICA7c29wayAsKiAgICw0ICwqICAgICwq ICBdIHNfbW92a19pMzJcdCUwLCAlMQorICBbU0QgICxCICAgO3NvcDEgLCogICAsOCAsKiAg ICAsKiAgXSBzX21vdl9iMzJcdCUwLCAlMQorICBbdiAgICx2ICAgO3ZvcDEgLCogICAsNCAs KiAgICAsKiAgXSB2X21vdl9iMzJcdCUwLCAlMQorICBbU2cgICx2ICAgO3ZvcDNhLG5vbmUs NCAsKiAgICAsKiAgXSB2X3JlYWRsYW5lX2IzMlx0JTAsICUxLCAwCisgIFt2ICAgLFN2ICA7 dm9wM2Esbm9uZSw0ICwqICAgICwqICBdIHZfd3JpdGVsYW5lX2IzMlx0JTAsICUxLCAwCisg IFt2ICAgLF5hICA7dm9wM3BfbWFpLCosOCwqICAgICwqICBdIHZfYWNjdmdwcl9yZWFkX2Iz Mlx0JTAsICUxCisgIFthICAgLHYgICA7dm9wM3BfbWFpLCosOCwqICAgICwqICBdIHZfYWNj dmdwcl93cml0ZV9iMzJcdCUwLCAlMQorICBbYSAgICxhICAgO3ZvcDEgLCogICAgLDgsY2Ru YTIsKiAgXSB2X2FjY3ZncHJfbW92X2IzMlx0JTAsICUxCisgIFt2ICAgLFJGICA7ZmxhdCAs KiAgICwxMiwqICAgICxvZmZdIGZsYXRfbG9hZCVvMVx0JTAsICVBMSVPMSVnMVw7c193YWl0 Y250XHQwCisgIFsmdiAgLFJGICA7ZmxhdCAsKiAgICwxMiwqICAgICxvbiBdIF4KKyAgW15h ICAsUkYgIDtmbGF0ICwqICAgLDEyLGNkbmEyLG9mZl0gXgorICBbJl5hICxSRiAgO2ZsYXQg LCogICAsMTIsY2RuYTIsb24gXSBeCisgIFtSRiAgLHYgICA7ZmxhdCAsKiAgICwxMiwqICAg ICwqICBdIGZsYXRfc3RvcmUlczBcdCVBMCwgJTElTzAlZzAKKyAgW1JGICAsYSAgIDtmbGF0 ICwqICAgLDEyLGNkbmEyLCogIF0gXgorICBbdiAgICxCICAgO3ZvcDEgLCogICAsOCAsKiAg ICAsKiAgXSB2X21vdl9iMzJcdCUwLCAlMQorICBbUkxSRyx2ICAgO2RzICAgLCogICAsMTIs KiAgICAsKiAgXSBkc193cml0ZSViMFx0JUEwLCAlMSVPMFw7c193YWl0Y250XHRsZ2ttY250 KDApCisgIFt2ICAgLFJMUkc7ZHMgICAsKiAgICwxMiwqICAgICwqICBdIGRzX3JlYWQldTFc dCUwLCAlQTElTzFcO3Nfd2FpdGNudFx0bGdrbWNudCgwKQorICBbdiAgICxSTSAgO2ZsYXQg LCogICAsMTIsKiAgICAsb2ZmXSBnbG9iYWxfbG9hZCVvMVx0JTAsICVBMSVPMSVnMVw7c193 YWl0Y250XHR2bWNudCgwKQorICBbJnYgICxSTSAgO2ZsYXQgLCogICAsMTIsKiAgICAsb24g XSBeCisgIFteYSAgLFJNICA7ZmxhdCAsKiAgICwxMixjZG5hMixvZmZdIF4KKyAgWyZeYSAs Uk0gIDtmbGF0ICwqICAgLDEyLGNkbmEyLG9uIF0gXgorICBbUk0gICx2ICAgO2ZsYXQgLCog ICAsMTIsKiAgICAsKiAgXSBnbG9iYWxfc3RvcmUlczBcdCVBMCwgJTElTzAlZzAKKyAgW1JN ICAsYSAgIDtmbGF0ICwqICAgLDEyLGNkbmEyLCogIF0gXgogICB9KQogCiA7IDY0Yml0IG1v dmUgcGF0dGVybgpAQCAtNjI3LDI5ICs2NDgsMzQgQEAgKGRlZmluZV9pbnNuX2FuZF9zcGxp dCAiKm1vdjxtb2RlPl9pbnNuIgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESURGIDAgIm5v bmltbWVkaWF0ZV9vcGVyYW5kIikKIAkobWF0Y2hfb3BlcmFuZDpESURGIDEgImdlbmVyYWxf b3BlcmFuZCIpKV0KICAgIkdFVF9DT0RFKG9wZXJhbmRzWzFdKSAhPSBTWU1CT0xfUkVGIgot ICB7QCBbY29uczogPTAsIDE7IGF0dHJzOiB0eXBlLCBsZW5ndGgsIGdjbl92ZXJzaW9uXQot ICBbU0QgICxTU0EgO3NvcDEgLDQgLCogICAgXSBzX21vdl9iNjRcdCUwLCAlMQotICBbU0Qg ICxDICAgO3NvcDEgLDggLCogICAgXSBeCi0gIFtTRCAgLERCICA7bXVsdCAsKiAsKiAgICBd ICMKLSAgW1JTICAsU20gIDtzbWVtICwxMiwqICAgIF0gc19zdG9yZV9kd29yZHgyXHQlMSwg JUEwCi0gIFtTbSAgLFJTICA7c21lbSAsMTIsKiAgICBdIHNfbG9hZF9kd29yZHgyXHQlMCwg JUExXDtzX3dhaXRjbnRcdGxna21jbnQoMCkKLSAgW3YgICAsdiAgIDt2bXVsdCwqICwqICAg IF0gIwotICBbdiAgICxEQiAgO3ZtdWx0LCogLCogICAgXSAjCi0gIFtTZyAgLHYgICA7dm11 bHQsKiAsKiAgICBdICMKLSAgW3YgICAsU3YgIDt2bXVsdCwqICwqICAgIF0gIwotICBbdiAg ICxeYSAgO3ZtdWx0LCogLCogICAgXSAjCi0gIFthICAgLHYgICA7dm11bHQsKiAsKiAgICBd ICMKLSAgW2EgICAsYSAgIDt2bXVsdCwqICxjZG5hMl0gIwotICBbdiAgICxSRiAgO2ZsYXQg LDEyLCogICAgXSBmbGF0X2xvYWRfZHdvcmR4Mlx0JTAsICVBMSVPMSVnMVw7c193YWl0Y250 XHQwCi0gIFteYSAgLFJGICA7ZmxhdCAsMTIsY2RuYTJdIF4KLSAgW1JGICAsdiAgIDtmbGF0 ICwxMiwqICAgIF0gZmxhdF9zdG9yZV9kd29yZHgyXHQlQTAsICUxJU8wJWcwCi0gIFtSRiAg LGEgICA7ZmxhdCAsMTIsY2RuYTJdIF4KLSAgW1JMUkcsdiAgIDtkcyAgICwxMiwqICAgIF0g ZHNfd3JpdGVfYjY0XHQlQTAsICUxJU8wXDtzX3dhaXRjbnRcdGxna21jbnQoMCkKLSAgW3Yg ICAsUkxSRztkcyAgICwxMiwqICAgIF0gZHNfcmVhZF9iNjRcdCUwLCAlQTElTzFcO3Nfd2Fp dGNudFx0bGdrbWNudCgwKQotICBbdiAgICxSTSAgO2ZsYXQgLDEyLCogICAgXSBnbG9iYWxf bG9hZF9kd29yZHgyXHQlMCwgJUExJU8xJWcxXDtzX3dhaXRjbnRcdHZtY250KDApCi0gIFte YSAgLFJNICA7ZmxhdCAsMTIsY2RuYTJdIF4KLSAgW1JNICAsdiAgIDtmbGF0ICwxMiwqICAg IF0gZ2xvYmFsX3N0b3JlX2R3b3JkeDJcdCVBMCwgJTElTzAlZzAKLSAgW1JNICAsYSAgIDtm bGF0ICwxMixjZG5hMl0gXgorICB7QCBbY29uczogPTAsIDE7IGF0dHJzOiB0eXBlLCBsZW5n dGgsIGdjbl92ZXJzaW9uLCB4bmFja10KKyAgW1NEICAsU1NBIDtzb3AxICw0ICwqICAgICwq ICBdIHNfbW92X2I2NFx0JTAsICUxCisgIFtTRCAgLEMgICA7c29wMSAsOCAsKiAgICAsKiAg XSBeCisgIFtTRCAgLERCICA7bXVsdCAsKiAsKiAgICAsKiAgXSAjCisgIFtSUyAgLFNtICA7 c21lbSAsMTIsKiAgICAsKiAgXSBzX3N0b3JlX2R3b3JkeDJcdCUxLCAlQTAKKyAgW1NtICAs UlMgIDtzbWVtICwxMiwqICAgICxvZmZdIHNfbG9hZF9kd29yZHgyXHQlMCwgJUExXDtzX3dh aXRjbnRcdGxna21jbnQoMCkKKyAgWyZTbSAsUlMgIDtzbWVtICwxMiwqICAgICxvbiBdIF4K KyAgW3YgICAsdiAgIDt2bXVsdCwqICwqICAgICwqICBdICMKKyAgW3YgICAsREIgIDt2bXVs dCwqICwqICAgICwqICBdICMKKyAgW1NnICAsdiAgIDt2bXVsdCwqICwqICAgICwqICBdICMK KyAgW3YgICAsU3YgIDt2bXVsdCwqICwqICAgICwqICBdICMKKyAgW3YgICAsXmEgIDt2bXVs dCwqICwqICAgICwqICBdICMKKyAgW2EgICAsdiAgIDt2bXVsdCwqICwqICAgICwqICBdICMK KyAgW2EgICAsYSAgIDt2bXVsdCwqICxjZG5hMiwqICBdICMKKyAgW3YgICAsUkYgIDtmbGF0 ICwxMiwqICAgICxvZmZdIGZsYXRfbG9hZF9kd29yZHgyXHQlMCwgJUExJU8xJWcxXDtzX3dh aXRjbnRcdDAKKyAgWyZ2ICAsUkYgIDtmbGF0ICwxMiwqICAgICxvbiBdIF4KKyAgW15hICAs UkYgIDtmbGF0ICwxMixjZG5hMixvZmZdIF4KKyAgWyZeYSAsUkYgIDtmbGF0ICwxMixjZG5h MixvbiBdIF4KKyAgW1JGICAsdiAgIDtmbGF0ICwxMiwqICAgICwqICBdIGZsYXRfc3RvcmVf ZHdvcmR4Mlx0JUEwLCAlMSVPMCVnMAorICBbUkYgICxhICAgO2ZsYXQgLDEyLGNkbmEyLCog IF0gXgorICBbUkxSRyx2ICAgO2RzICAgLDEyLCogICAgLCogIF0gZHNfd3JpdGVfYjY0XHQl QTAsICUxJU8wXDtzX3dhaXRjbnRcdGxna21jbnQoMCkKKyAgW3YgICAsUkxSRztkcyAgICwx MiwqICAgICwqICBdIGRzX3JlYWRfYjY0XHQlMCwgJUExJU8xXDtzX3dhaXRjbnRcdGxna21j bnQoMCkKKyAgW3YgICAsUk0gIDtmbGF0ICwxMiwqICAgICxvZmZdIGdsb2JhbF9sb2FkX2R3 b3JkeDJcdCUwLCAlQTElTzElZzFcO3Nfd2FpdGNudFx0dm1jbnQoMCkKKyAgWyZ2ICAsUk0g IDtmbGF0ICwxMiwqICAgICxvbiBdIF4KKyAgW15hICAsUk0gIDtmbGF0ICwxMixjZG5hMixv ZmZdIF4KKyAgWyZeYSAsUk0gIDtmbGF0ICwxMixjZG5hMixvbiBdIF4KKyAgW1JNICAsdiAg IDtmbGF0ICwxMiwqICAgICwqICBdIGdsb2JhbF9zdG9yZV9kd29yZHgyXHQlQTAsICUxJU8w JWcwCisgIFtSTSAgLGEgICA7ZmxhdCAsMTIsY2RuYTIsKiAgXSBeCiAgIH0KICAgInJlbG9h ZF9jb21wbGV0ZWQKICAgICYmICgoIU1FTV9QIChvcGVyYW5kc1swXSkgJiYgIU1FTV9QIChv cGVyYW5kc1sxXSkKQEAgLTY4NywyNiArNzEzLDMxIEBAIChkZWZpbmVfaW5zbl9hbmRfc3Bs aXQgIiptb3Z0aV9pbnNuIgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpUSSAwICJub25pbW1l ZGlhdGVfb3BlcmFuZCIpCiAJKG1hdGNoX29wZXJhbmQ6VEkgMSAiZ2VuZXJhbF9vcGVyYW5k IiAgKSldCiAgICIiCi0gIHtAIFtjb25zOiA9MCwgMTsgYXR0cnM6IHR5cGUsIGRlbGF5ZWR1 c2UsIGxlbmd0aCwgZ2NuX3ZlcnNpb25dCi0gIFtTRCxTU0I7bXVsdCAsKiAgLCogLCogICAg XSAjCi0gIFtSUyxTbSA7c21lbSAsKiAgLDEyLCogICAgXSBzX3N0b3JlX2R3b3JkeDRcdCUx LCAlQTAKLSAgW1NtLFJTIDtzbWVtICx5ZXMsMTIsKiAgICBdIHNfbG9hZF9kd29yZHg0XHQl MCwgJUExXDtzX3dhaXRjbnRcdGxna21jbnQoMCkKLSAgW1JGLHYgIDtmbGF0ICwqICAsMTIs KiAgICBdIGZsYXRfc3RvcmVfZHdvcmR4NFx0JUEwLCAlMSVPMCVnMAotICBbUkYsYSAgO2Zs YXQgLCogICwxMixjZG5hMl0gXgotICBbdiAsUkYgO2ZsYXQgLCogICwxMiwqICAgIF0gZmxh dF9sb2FkX2R3b3JkeDRcdCUwLCAlQTElTzElZzFcO3Nfd2FpdGNudFx0MAotICBbXmEsUkYg O2ZsYXQgLCogICwxMixjZG5hMl0gXgotICBbdiAsdiAgO3ZtdWx0LCogICwqICwqICAgIF0g IwotICBbdiAsU3YgO3ZtdWx0LCogICwqICwqICAgIF0gIwotICBbU0QsdiAgO3ZtdWx0LCog ICwqICwqICAgIF0gIwotICBbUk0sdiAgO2ZsYXQgLHllcywxMiwqICAgIF0gZ2xvYmFsX3N0 b3JlX2R3b3JkeDRcdCVBMCwgJTElTzAlZzAKLSAgW1JNLGEgIDtmbGF0ICx5ZXMsMTIsY2Ru YTJdIF4KLSAgW3YgLFJNIDtmbGF0ICwqICAsMTIsKiAgICBdIGdsb2JhbF9sb2FkX2R3b3Jk eDRcdCUwLCAlQTElTzElZzFcO3Nfd2FpdGNudFx0dm1jbnQoMCkKLSAgW15hLFJNIDtmbGF0 ICwqICAsMTIsY2RuYTJdIF4KLSAgW1JMLHYgIDtkcyAgICwqICAsMTIsKiAgICBdIGRzX3dy aXRlX2IxMjhcdCVBMCwgJTElTzBcO3Nfd2FpdGNudFx0bGdrbWNudCgwKQotICBbdiAsUkwg O2RzICAgLCogICwxMiwqICAgIF0gZHNfcmVhZF9iMTI4XHQlMCwgJUExJU8xXDtzX3dhaXRj bnRcdGxna21jbnQoMCkKLSAgW3YgLF5hIDt2bXVsdCwqICAsKiAsKiAgICBdICMKLSAgW2Eg LHYgIDt2bXVsdCwqICAsKiAsKiAgICBdICMKLSAgW2EgLGEgIDt2bXVsdCwqICAsKiAsY2Ru YTJdICMKKyAge0AgW2NvbnM6ID0wLCAxOyBhdHRyczogdHlwZSwgZGVsYXllZHVzZSwgbGVu Z3RoLCBnY25fdmVyc2lvbiwgeG5hY2tdCisgIFtTRCAsU1NCO211bHQgLCogICwqICwqICAg ICwqICBdICMKKyAgW1JTICxTbSA7c21lbSAsKiAgLDEyLCogICAgLCogIF0gc19zdG9yZV9k d29yZHg0XHQlMSwgJUEwCisgIFtTbSAsUlMgO3NtZW0gLHllcywxMiwqICAgICxvZmZdIHNf bG9hZF9kd29yZHg0XHQlMCwgJUExXDtzX3dhaXRjbnRcdGxna21jbnQoMCkKKyAgWyZTbSxS UyA7c21lbSAseWVzLDEyLCogICAgLG9uIF0gXgorICBbUkYgLHYgIDtmbGF0ICwqICAsMTIs KiAgICAsKiAgXSBmbGF0X3N0b3JlX2R3b3JkeDRcdCVBMCwgJTElTzAlZzAKKyAgW1JGICxh ICA7ZmxhdCAsKiAgLDEyLGNkbmEyLCogIF0gXgorICBbdiAgLFJGIDtmbGF0ICwqICAsMTIs KiAgICAsb2ZmXSBmbGF0X2xvYWRfZHdvcmR4NFx0JTAsICVBMSVPMSVnMVw7c193YWl0Y250 XHQwCisgIFsmdiAsUkYgO2ZsYXQgLCogICwxMiwqICAgICxvbiBdIF4KKyAgW15hICxSRiA7 ZmxhdCAsKiAgLDEyLGNkbmEyLG9mZl0gXgorICBbJl5hLFJGIDtmbGF0ICwqICAsMTIsY2Ru YTIsb24gXSBeCisgIFt2ICAsdiAgO3ZtdWx0LCogICwqICwqICAgICwqICBdICMKKyAgW3Yg ICxTdiA7dm11bHQsKiAgLCogLCogICAgLCogIF0gIworICBbU0QgLHYgIDt2bXVsdCwqICAs KiAsKiAgICAsKiAgXSAjCisgIFtSTSAsdiAgO2ZsYXQgLHllcywxMiwqICAgICwqICBdIGds b2JhbF9zdG9yZV9kd29yZHg0XHQlQTAsICUxJU8wJWcwCisgIFtSTSAsYSAgO2ZsYXQgLHll cywxMixjZG5hMiwqICBdIF4KKyAgW3YgICxSTSA7ZmxhdCAsKiAgLDEyLCogICAgLG9mZl0g Z2xvYmFsX2xvYWRfZHdvcmR4NFx0JTAsICVBMSVPMSVnMVw7c193YWl0Y250XHR2bWNudCgw KQorICBbJnYgLFJNIDtmbGF0ICwqICAsMTIsKiAgICAsb24gXSBeCisgIFteYSAsUk0gO2Zs YXQgLCogICwxMixjZG5hMixvZmZdIF4KKyAgWyZeYSxSTSA7ZmxhdCAsKiAgLDEyLGNkbmEy LG9uIF0gXgorICBbUkwgLHYgIDtkcyAgICwqICAsMTIsKiAgICAsKiAgXSBkc193cml0ZV9i MTI4XHQlQTAsICUxJU8wXDtzX3dhaXRjbnRcdGxna21jbnQoMCkKKyAgW3YgICxSTCA7ZHMg ICAsKiAgLDEyLCogICAgLCogIF0gZHNfcmVhZF9iMTI4XHQlMCwgJUExJU8xXDtzX3dhaXRj bnRcdGxna21jbnQoMCkKKyAgW3YgICxeYSA7dm11bHQsKiAgLCogLCogICAgLCogIF0gIwor ICBbYSAgLHYgIDt2bXVsdCwqICAsKiAsKiAgICAsKiAgXSAjCisgIFthICAsYSAgO3ZtdWx0 LCogICwqICxjZG5hMiwqICBdICMKICAgfQogICAicmVsb2FkX2NvbXBsZXRlZAogICAgJiYg UkVHX1AgKG9wZXJhbmRzWzBdKQpAQCAtODg5LDYgKzkyMCw4IEBAIChkZWZpbmVfaW5zbiAi bW92ZGlfc3ltYm9sIgogICAoY2xvYmJlciAocmVnOkJJIFNDQ19SRUcpKV0KICAiR0VUX0NP REUgKG9wZXJhbmRzWzFdKSA9PSBTWU1CT0xfUkVGIHx8IEdFVF9DT0RFIChvcGVyYW5kc1sx XSkgPT0gTEFCRUxfUkVGIgogICB7CisgICAgLyogVGhpcyBzX2xvYWQgbWF5IG5vdCBiZSBY TkFDSy1zYWZlIG9uIGRldmljZXMgd2hlcmUgdGhlIEdPVCBtYXkgZmF1bHQuCisgICAgICAg REdQVXMgYXJlIG1vc3QgbGlrZWx5IGZpbmUuICAqLwogICAgIGlmIChTWU1CT0xfUkVGX1Ag KG9wZXJhbmRzWzFdKQogCSYmIFNZTUJPTF9SRUZfV0VBSyAob3BlcmFuZHNbMV0pKQogCXJl dHVybiAic19nZXRwY19iNjRcdCUwXDsiCkBAIC05MTMsNiArOTQ2LDggQEAgKGRlZmluZV9p bnNuICJtb3ZkaV9zeW1ib2xfc2F2ZV9zY2MiCiAgIHsKICAgICAvKiAhISEgVGhlc2Ugc2Vx dWVuY2VzIGNsb2JiZXIgQ0NfU0FWRV9SRUcuICAqLwogCisgICAgLyogVGhpcyBzX2xvYWQg bWF5IG5vdCBiZSBYTkFDSy1zYWZlIG9uIGRldmljZXMgd2hlcmUgdGhlIEdPVCBtYXkgZmF1 bHQuCisgICAgICAgREdQVXMgYXJlIG1vc3QgbGlrZWx5IGZpbmUuICAqLwogICAgIGlmIChT WU1CT0xfUkVGX1AgKG9wZXJhbmRzWzFdKQogCSYmIFNZTUJPTF9SRUZfV0VBSyAob3BlcmFu ZHNbMV0pKQogCXJldHVybiAic19tb3ZfYjMyXHRzMjIsIHNjY1w7IgpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9nY24vZ2NuLm9wdCBiL2djYy9jb25maWcvZ2NuL2djbi5vcHQKaW5kZXgg ZTVkYjZkZjkyZDcuLmMzNTZhMGNiYjA4IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2djbi9n Y24ub3B0CisrKyBiL2djYy9jb25maWcvZ2NuL2djbi5vcHQKQEAgLTk4LDggKzk4LDggQEAg RW51bVZhbHVlCiBFbnVtKGhzYWNvX2F0dHJfdHlwZSkgU3RyaW5nKGFueSkgVmFsdWUoSFNB Q09fQVRUUl9BTlkpCiAKIG14bmFjaz0KLVRhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQg VG9Mb3dlciBFbnVtKGhzYWNvX2F0dHJfdHlwZSkgVmFyKGZsYWdfeG5hY2spIEluaXQoSFNB Q09fQVRUUl9PRkYpCi1Db21waWxlIGZvciBkZXZpY2VzIHJlcXVpcmluZyBYTkFDSyBlbmFi bGVkLiBEZWZhdWx0IFwib2ZmXCIuCitUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIFRv TG93ZXIgRW51bShoc2Fjb19hdHRyX3R5cGUpIFZhcihmbGFnX3huYWNrKSBJbml0KEhTQUNP X0FUVFJfQU5ZKQorQ29tcGlsZSBmb3IgZGV2aWNlcyByZXF1aXJpbmcgWE5BQ0sgZW5hYmxl ZC4gRGVmYXVsdCBcImFueVwiLgogCiBtc3JhbS1lY2M9CiBUYXJnZXQgUmVqZWN0TmVnYXRp dmUgSm9pbmVkIFRvTG93ZXIgRW51bShoc2Fjb19hdHRyX3R5cGUpIFZhcihmbGFnX3NyYW1f ZWNjKSBJbml0KEhTQUNPX0FUVFJfQU5ZKQpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2Uu dGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKaW5kZXggMTlmZWJhNDY3YTQuLmRiMDM5YzQ3 MjIwIDEwMDY0NAotLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKyBiL2djYy9kb2MvaW52 b2tlLnRleGkKQEAgLTIxNjI4LDggKzIxNjI4LDcgQEAgcnVuLXRpbWUgcGVyZm9ybWFuY2Uu ICBUaGUgZGVmYXVsdCBpcyAzMktCIHdoZW4gdXNpbmcgT3BlbkFDQyBvciBPcGVuTVAsIGFu ZAogQ29tcGlsZSBiaW5hcmllcyBzdWl0YWJsZSBmb3IgZGV2aWNlcyB3aXRoIHRoZSBYTkFD SyBmZWF0dXJlIGVuYWJsZWQsIGRpc2FibGVkLAogb3IgZWl0aGVyIG1vZGUuICBTb21lIGRl dmljZXMgYWx3YXlzIHJlcXVpcmUgWE5BQ0sgYW5kIHNvbWUgYWxsb3cgdGhlIHVzZXIgdG8K IGNvbmZpZ3VyZSBYTkFDSy4gIFRoZSBjb21waWxlZCBjb2RlIG11c3QgbWF0Y2ggdGhlIGRl dmljZSBtb2RlLgotQGMgVGhlIGRlZmF1bHQgaXMgQHNhbXB7LW14bmFjaz1hbnl9LgotQXQg cHJlc2VudCB0aGlzIG9wdGlvbiBpcyBhIHBsYWNlaG9sZGVyIGZvciBzdXBwb3J0IHRoYXQg aXMgbm90IHlldCBpbXBsZW1lbnRlZC4KK1RoZSBkZWZhdWx0IGlzIEBzYW1wey1teG5hY2s9 YW55fS4KIAogQGVuZCB0YWJsZQogCg== --------------u2dQ6oTec8GjnlTPkxW2nd4T--