Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uikJP-00FJBV-Pv for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Aug 2025 01:48:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uikIQ-00Erlv-Jc for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Aug 2025 01:47:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uikIQ-00Erln-5i for pgsql-hackers@lists.postgresql.org; Mon, 04 Aug 2025 01:47:26 +0000 Received: from mail-vs1-xe36.google.com ([2607:f8b0:4864:20::e36]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uikIN-000c81-0e for pgsql-hackers@lists.postgresql.org; Mon, 04 Aug 2025 01:47:25 +0000 Received: by mail-vs1-xe36.google.com with SMTP id ada2fe7eead31-4fc05400905so1136770137.3 for ; Sun, 03 Aug 2025 18:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754272041; x=1754876841; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=V+4RS5M8GPcoawNxZzdbvPrZrlBCqBt41Qh4KFIuG6o=; b=ZEPwywT0cuWNAfWvPXPU1SlH2LKZeDMsER1eIze9WeZcrnUUZbIZm/NWuJ2NkK+p1m SpdsmdAZYJ2W8HcW/dOn7MbA2myYCEZptUjP2Hxyw93r6eVkkIPlrGwSdtTztx8xm78S eHNPI9qVD0KcBCZSFwjPQMIex9RoC000aXNkoH16DvUU5jF9FRLOJXRv7EML1NnHDmiD lmbogAGiK5pFc/gd+FpobzAeZ48Uh48x+jCG4geQTAIBygKwUw/+fn2yTbYZv8mjtd3O OQn+6tLOHVxiqK2lDcqJfrepjhIM7I5GoLlSPK6eXe6VpxU6mpSip3+TaDIkp+htOita /SNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754272041; x=1754876841; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=V+4RS5M8GPcoawNxZzdbvPrZrlBCqBt41Qh4KFIuG6o=; b=NU6xggofvpFiSTvLWICHTcuAvztVfK5/TBQjL4LuI1bK0B3jxZLgQXg9W4Bc0xuzm3 Pv+twQUWhcBiFA6naa+BOrcYFgZ/E+kdlj4vAsElkN/RL+JpLW4/I5aSVH30w8eUW0FD 673xu0zR4XicP+AsoqLRVOOZeFcY7CiQS0B4YrIfQPrG13ruenrZ7kkGtb8wY3mdVaxi xYjyHkKDqh/rQS/3aYf63BRNtDtw1UD4vXBrClNuV/kbRL/GahpJxuGU81WU2D7RVc8W b4ksMvbSvWlkV4iYAlOfxoQBIHFz00i0SBU+fs4In/ZhnS3wNyZqv129WI7DkolB4o0L DQEQ== X-Forwarded-Encrypted: i=1; AJvYcCVXYLSQLCJYyS/nYCth7rBmoKKhKAtweA72XoDaSU0juJWnGc7GzdwRG2IS6L2Ig+wGa0xotqh4HzG99Eva@lists.postgresql.org X-Gm-Message-State: AOJu0YwdqkIM3yIh/6jt8ci7dqL7Z6WD63FO+rKyZID3G1vd7/rl08eW WhBcO0uOXo7hAS9GGtCIV+K2NEe24wfPksPg/1agzIE43dP33ltwPma1Safa4GEPnL+Aj5f6y1D VKP56WWFCYYhU0pt6bEkF20G1HMymFQI= X-Gm-Gg: ASbGnctg1vPRUZzJAqI9cNP5/xzj4wutULAA33XL6+3r8roXPDKil1Q/Bimu4OEP+/L Bou6CpqPF42bb6wQhHTSe9sCqgjqI7q2d8uNjqSyUXnGnxD8iuASs2HCAf3S1slKOCPJJepgjch Lfk2zaPaf131jPD67cmf3bMqL6Tnln6fcXgYWKviKJzE2kyzf0gpGsLOB7ihgeG5TeaxLETi6Zh YvtNp+rUQJAwfJVBGGCn+b1MvfeS8zMDR//nC7oFvkCrHNPaw== X-Google-Smtp-Source: AGHT+IGyvnHdC0G69IchzMLfz6iqt4xoZqzslYV1FXMGZSFDUn740vSvx7k7JQW5Ww4iRIntO1JHNuaQzVEc4uxdp7o= X-Received: by 2002:a05:6102:162a:b0:4e9:8f71:bd6e with SMTP id ada2fe7eead31-4fdbeae2b0bmr3331395137.0.1754272041497; Sun, 03 Aug 2025 18:47:21 -0700 (PDT) MIME-Version: 1.0 References: <04afcd1f-ed7d-4c0a-add1-50e3719ccbf9@postgresfriends.org> <762ae707-7fdc-43d8-a77a-3a10d12ce21d@postgresfriends.org> In-Reply-To: From: jian he Date: Mon, 4 Aug 2025 09:46:45 +0800 X-Gm-Features: Ac12FXyr5EHX_b6k7VvnxIAHqN8BSPCY6Xcx4-EDQlHYU9bgTKAgMbpRsx2LFuU Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Corey Huinker Cc: Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000dfa85e063b8049a5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dfa85e063b8049a5 Content-Type: text/plain; charset="UTF-8" hi. fix the regress tests failure in https://api.cirrus-ci.com/v1/artifact/task/5894868779663360/testrun/build/testrun/regress/regress/regression.diffs --000000000000dfa85e063b8049a5 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0002-make-ArrayCoerceExpr-error-safe.patch" Content-Disposition: attachment; filename="v4-0002-make-ArrayCoerceExpr-error-safe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdwfzhaz1 RnJvbSBlNjBlNTE5MDUxMTMyNjU2OGViYThlNjc0ODA2MmFkYjQ3ZjExMzRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTggSnVsIDIwMjUgMTM6MDA6MTkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY0 IDIvM10gbWFrZSBBcnJheUNvZXJjZUV4cHIgZXJyb3Igc2FmZQoKc2ltaWxhciB0byBodHRwczov L2dpdC5wb3N0Z3Jlc3FsLm9yZy9jZ2l0L3Bvc3RncmVzcWwuZ2l0L2NvbW1pdC8/aWQ9YWFhZjk0 NDllYzZiZTYyY2IwZDMwZWQzNTg4ZGMzODRmNTYyNzRiZgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMgICAgICAgfCAzICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYyB8IDQgKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYyAg ICB8IDcgKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMKaW5kZXggZjE1Njk4NzliNS4uMWYzZjg5OTg3NCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jCkBAIC0xNzAyLDYgKzE3MDIsOSBAQCBFeGVjSW5pdEV4cHJSZWMoRXhwciAq bm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQllbGVtc3RhdGUtPmlubmVybW9zdF9jYXNldmFs ID0gKERhdHVtICopIHBhbGxvYyhzaXplb2YoRGF0dW0pKTsKIAkJCQllbGVtc3RhdGUtPmlubmVy bW9zdF9jYXNlbnVsbCA9IChib29sICopIHBhbGxvYyhzaXplb2YoYm9vbCkpOwogCisJCQkJaWYg KHN0YXRlLT5lc2NvbnRleHQgIT0gTlVMTCkKKwkJCQkJZWxlbXN0YXRlLT5lc2NvbnRleHQgPSBz dGF0ZS0+ZXNjb250ZXh0OworCiAJCQkJRXhlY0luaXRFeHByUmVjKGFjb2VyY2UtPmVsZW1leHBy LCBlbGVtc3RhdGUsCiAJCQkJCQkJCSZlbGVtc3RhdGUtPnJlc3ZhbHVlLCAmZWxlbXN0YXRlLT5y ZXNudWxsKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRl cnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggOGE3MmI1 ZTcwYS4uNjM2ZDllZjllNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4 cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBA IC0zNjQ0LDYgKzM2NDQsMTAgQEAgRXhlY0V2YWxBcnJheUNvZXJjZShFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiAJCQkJCQkJICBlY29u dGV4dCwKIAkJCQkJCQkgIG9wLT5kLmFycmF5Y29lcmNlLnJlc3VsdGVsZW10eXBlLAogCQkJCQkJ CSAgb3AtPmQuYXJyYXljb2VyY2UuYW1zdGF0ZSk7CisKKwlpZiAoU09GVF9FUlJPUl9PQ0NVUlJF RChvcC0+ZC5hcnJheWNvZXJjZS5lbGVtZXhwcnN0YXRlLT5lc2NvbnRleHQpCisJCSYmICgqb3At PnJlc3ZhbHVlID0gKERhdHVtKSAwKSkKKwkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvYXJyYXlmdW5jcy5jCmluZGV4IGM4ZjUzYzZmYmUuLmI1Zjk4YmYyMmYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5ZnVuY3MuYwpAQCAtMzI4OCw2ICszMjg4LDEzIEBAIGFy cmF5X21hcChEYXR1bSBhcnJheWQsCiAJCS8qIEFwcGx5IHRoZSBnaXZlbiBleHByZXNzaW9uIHRv IHNvdXJjZSBlbGVtZW50ICovCiAJCXZhbHVlc1tpXSA9IEV4ZWNFdmFsRXhwcihleHByc3RhdGUs IGVjb250ZXh0LCAmbnVsbHNbaV0pOwogCisJCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKGV4cHJz dGF0ZS0+ZXNjb250ZXh0KSkKKwkJeworCQkJcGZyZWUodmFsdWVzKTsKKwkJCXBmcmVlKG51bGxz KTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CisJCX0KKwogCQlpZiAobnVsbHNbaV0pCiAJCQloYXNu dWxscyA9IHRydWU7CiAJCWVsc2UKLS0gCjIuMzQuMQoK --000000000000dfa85e063b8049a5 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-make-some-numeric-cast-function-error-safe.patch" Content-Disposition: attachment; filename="v4-0001-make-some-numeric-cast-function-error-safe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdwfzhb62 RnJvbSBlMzg1NGVlMWQzNjI2NDZlYTk3YThiYWE0ZTI2MmNjM2E5ZTk1OTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMSBBdWcgMjAyNSAxMzoyMjo1OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MS8zXSBtYWtlIHNvbWUgbnVtZXJpYyBjYXN0IGZ1bmN0aW9uIGVycm9yIHNhZmUKClRoZSBmb2xs b3dpbmcgZnVuY3Rpb24gYXJlIGNoYW5nZWQgdG8gbWFrZSBpdCBlcnJvciBzYWZlLgpudW1lcmlj X2ludDIKbnVtZXJpY19pbnQ0Cm51bWVyaWNfaW50OApudW1lcmljX2Zsb2F0NApudW1lcmljX2Zs b2F0OApkdG9pOApkdG9pNApkdG9pMgpmdG9pOApmdG9pNApmdG9pMgpmdG9kCmR0b2YKZmxvYXQ0 X251bWVyaWMKZmxvYXQ4X251bWVyaWMKbnVtZXJpYyAob2lkIDE3MDMpCgpUaGlzIGlzIG5lZWQg Zm9yIGV2YXVsYXRpb24gQ0FTVCguLi4gREVGQVVMVC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SKS4K ZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJq UWl4TlZpc2tROGpadTNUel9wNjU2aV80aFFAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvZmxvYXQuYyAgIHwgMTYgKysrKystLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9pbnQ4LmMgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYyB8IDY3 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA2NyBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvZmxvYXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCmluZGV4IDdi OTdkMmJlNmMuLjY0NjFlOWM5NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9m bG9hdC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mbG9hdC5jCkBAIC0xMTk5LDkgKzEx OTksMTMgQEAgZHRvZihQR19GVU5DVElPTl9BUkdTKQogCiAJcmVzdWx0ID0gKGZsb2F0NCkgbnVt OwogCWlmICh1bmxpa2VseShpc2luZihyZXN1bHQpKSAmJiAhaXNpbmYobnVtKSkKLQkJZmxvYXRf b3ZlcmZsb3dfZXJyb3IoKTsKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwK KwkJCQllcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCWVy cm1zZygidmFsdWUgb3V0IG9mIHJhbmdlOiBvdmVyZmxvdyIpKTsKIAlpZiAodW5saWtlbHkocmVz dWx0ID09IDAuMGYpICYmIG51bSAhPSAwLjApCi0JCWZsb2F0X3VuZGVyZmxvd19lcnJvcigpOwor CQllcmV0dXJuKGZjaW5mby0+Y29udGV4dCwgKERhdHVtKSAwLAorCQkJCWVycmNvZGUoRVJSQ09E RV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJZXJybXNnKCJ2YWx1ZSBvdXQgb2Yg cmFuZ2U6IHVuZGVyZmxvdyIpKTsKIAogCVBHX1JFVFVSTl9GTE9BVDQocmVzdWx0KTsKIH0KQEAg LTEyMjQsNyArMTIyOCw3IEBAIGR0b2k0KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBSYW5nZSBj aGVjayAqLwogCWlmICh1bmxpa2VseShpc25hbihudW0pIHx8ICFGTE9BVDhfRklUU19JTl9JTlQz MihudW0pKSkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChE YXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdF KSwKIAkJCQkgZXJybXNnKCJpbnRlZ2VyIG91dCBvZiByYW5nZSIpKSk7CiAKQEAgLTEyNDksNyAr MTI1Myw3IEBAIGR0b2kyKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAkvKiBSYW5nZSBjaGVjayAqLwog CWlmICh1bmxpa2VseShpc25hbihudW0pIHx8ICFGTE9BVDhfRklUU19JTl9JTlQxNihudW0pKSkK LQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVybihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwK IAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkg ZXJybXNnKCJzbWFsbGludCBvdXQgb2YgcmFuZ2UiKSkpOwogCkBAIC0xMjk4LDcgKzEzMDIsNyBA QCBmdG9pNChQR19GVU5DVElPTl9BUkdTKQogCiAJLyogUmFuZ2UgY2hlY2sgKi8KIAlpZiAodW5s aWtlbHkoaXNuYW4obnVtKSB8fCAhRkxPQVQ0X0ZJVFNfSU5fSU5UMzIobnVtKSkpCi0JCWVyZXBv cnQoRVJST1IsCisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygi aW50ZWdlciBvdXQgb2YgcmFuZ2UiKSkpOwogCkBAIC0xMzIzLDcgKzEzMjcsNyBAQCBmdG9pMihQ R19GVU5DVElPTl9BUkdTKQogCiAJLyogUmFuZ2UgY2hlY2sgKi8KIAlpZiAodW5saWtlbHkoaXNu YW4obnVtKSB8fCAhRkxPQVQ0X0ZJVFNfSU5fSU5UMTYobnVtKSkpCi0JCWVyZXBvcnQoRVJST1Is CisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygic21hbGxpbnQg b3V0IG9mIHJhbmdlIikpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2lu dDguYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKaW5kZXggOWRkNTg4OWYzNC4uNGI5 YTc2MjA2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvaW50OC5jCkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBkdG9pOChQ R19GVU5DVElPTl9BUkdTKQogCiAJLyogUmFuZ2UgY2hlY2sgKi8KIAlpZiAodW5saWtlbHkoaXNu YW4obnVtKSB8fCAhRkxPQVQ4X0ZJVFNfSU5fSU5UNjQobnVtKSkpCi0JCWVyZXBvcnQoRVJST1Is CisJCWVyZXR1cm4oZmNpbmZvLT5jb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygiYmlnaW50IG91 dCBvZiByYW5nZSIpKSk7CiAKQEAgLTEzNDIsNyArMTM0Miw3IEBAIGZ0b2k4KFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAkvKiBSYW5nZSBjaGVjayAqLwogCWlmICh1bmxpa2VseShpc25hbihudW0pIHx8 ICFGTE9BVDRfRklUU19JTl9JTlQ2NChudW0pKSkKLQkJZXJlcG9ydChFUlJPUiwKKwkJZXJldHVy bihmY2luZm8tPmNvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVS SUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJiaWdpbnQgb3V0IG9mIHJhbmdl IikpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMKaW5kZXggYzkyMzM1NjVkNS4uY2Y0OTg2Mjdh OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCkBAIC0xMjYxLDcgKzEyNjEsOCBAQCBudW1lcmlj CQkoUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAlpZiAoTlVNRVJJQ19JU19TUEVDSUFMKG51bSkp CiAJewotCQkodm9pZCkgYXBwbHlfdHlwbW9kX3NwZWNpYWwobnVtLCB0eXBtb2QsIE5VTEwpOwor CQlpZiAoIWFwcGx5X3R5cG1vZF9zcGVjaWFsKG51bSwgdHlwbW9kLCBmY2luZm8tPmNvbnRleHQp KQorCQkJUEdfUkVUVVJOX05VTEwoKTsKIAkJUEdfUkVUVVJOX05VTUVSSUMoZHVwbGljYXRlX251 bWVyaWMobnVtKSk7CiAJfQogCkBAIC00NTY0LDcgKzQ1NjUsMjIgQEAgbnVtZXJpY19pbnQ0KFBH X0ZVTkNUSU9OX0FSR1MpCiB7CiAJTnVtZXJpYwkJbnVtID0gUEdfR0VUQVJHX05VTUVSSUMoMCk7 CiAKLQlQR19SRVRVUk5fSU5UMzIobnVtZXJpY19pbnQ0X29wdF9lcnJvcihudW0sIE5VTEwpKTsK KwlpZiAobGlrZWx5KGZjaW5mby0+Y29udGV4dCA9PSBOVUxMKSkKKwkJUEdfUkVUVVJOX0lOVDMy KG51bWVyaWNfaW50NF9vcHRfZXJyb3IobnVtLCBOVUxMKSk7CisJZWxzZQorCXsKKwkJYm9vbAlo YXNfZXJyb3I7CisJCWludDMyCXJlc3VsdDsKKwkJTm9kZQkqZXNjb250ZXh0ID0gZmNpbmZvLT5j b250ZXh0OworCisJCXJlc3VsdCA9IG51bWVyaWNfaW50NF9vcHRfZXJyb3IobnVtLCAmaGFzX2Vy cm9yKTsKKwkJaWYgKGhhc19lcnJvcikKKwkJCWVyZXR1cm4oZXNjb250ZXh0LCAoRGF0dW0pIDAs CisJCQkJCWVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJ CWVycm1zZygiaW50ZWdlciBvdXQgb2YgcmFuZ2UiKSk7CisKKwkJUEdfUkVUVVJOX0lOVDMyKHJl c3VsdCk7CisJfQogfQogCiAvKgpAQCAtNDY1Miw3ICs0NjY4LDIyIEBAIG51bWVyaWNfaW50OChQ R19GVU5DVElPTl9BUkdTKQogewogCU51bWVyaWMJCW51bSA9IFBHX0dFVEFSR19OVU1FUklDKDAp OwogCi0JUEdfUkVUVVJOX0lOVDY0KG51bWVyaWNfaW50OF9vcHRfZXJyb3IobnVtLCBOVUxMKSk7 CisJaWYgKGxpa2VseShmY2luZm8tPmNvbnRleHQgPT0gTlVMTCkpCisJCVBHX1JFVFVSTl9JTlQ2 NChudW1lcmljX2ludDhfb3B0X2Vycm9yKG51bSwgTlVMTCkpOworCWVsc2UKKwl7CisJCWJvb2wJ aGFzX2Vycm9yOworCQlpbnQ2NAlyZXN1bHQ7CisJCU5vZGUJKmVzY29udGV4dCA9IGZjaW5mby0+ Y29udGV4dDsKKworCQlyZXN1bHQgPSBudW1lcmljX2ludDhfb3B0X2Vycm9yKG51bSwgJmhhc19l cnJvcik7CisJCWlmIChoYXNfZXJyb3IpCisJCQllcmV0dXJuKGVzY29udGV4dCwgKERhdHVtKSAw LAorCQkJCQllcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJ CQllcnJtc2coImJpZ2ludCBvdXQgb2YgcmFuZ2UiKSk7CisKKwkJUEdfUkVUVVJOX0lOVDY0KHJl c3VsdCk7CisJfQogfQogCiAKQEAgLTQ2NjksNiArNDcwMCw3IEBAIERhdHVtCiBudW1lcmljX2lu dDIoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlOdW1lcmljCQludW0gPSBQR19HRVRBUkdfTlVNRVJJ QygwKTsKKwlOb2RlCSAgICplc2NvbnRleHQgPSBmY2luZm8tPmNvbnRleHQ7CiAJTnVtZXJpY1Zh cgl4OwogCWludDY0CQl2YWw7CiAJaW50MTYJCXJlc3VsdDsKQEAgLTQ2NzYsMTEgKzQ3MDgsMTEg QEAgbnVtZXJpY19pbnQyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJaWYgKE5VTUVSSUNfSVNfU1BFQ0lB TChudW0pKQogCXsKIAkJaWYgKE5VTUVSSUNfSVNfTkFOKG51bSkpCi0JCQllcmVwb3J0KEVSUk9S LAorCQkJZXJldHVybihlc2NvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjYW5ub3QgY29udmVydCBO YU4gdG8gJXMiLCAic21hbGxpbnQiKSkpOwogCQllbHNlCi0JCQllcmVwb3J0KEVSUk9SLAorCQkJ ZXJldHVybihlc2NvbnRleHQsIChEYXR1bSkgMCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJjYW5ub3QgY29udmVydCBpbmZpbml0 eSB0byAlcyIsICJzbWFsbGludCIpKSk7CiAJfQpAQCAtNDY4OSwxMiArNDcyMSwxMiBAQCBudW1l cmljX2ludDIoUEdfRlVOQ1RJT05fQVJHUykKIAlpbml0X3Zhcl9mcm9tX251bShudW0sICZ4KTsK IAogCWlmICghbnVtZXJpY3Zhcl90b19pbnQ2NCgmeCwgJnZhbCkpCi0JCWVyZXBvcnQoRVJST1Is CisJCWVyZXR1cm4oZXNjb250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9O VU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygic21hbGxpbnQgb3V0IG9m IHJhbmdlIikpKTsKIAogCWlmICh1bmxpa2VseSh2YWwgPCBQR19JTlQxNl9NSU4pIHx8IHVubGlr ZWx5KHZhbCA+IFBHX0lOVDE2X01BWCkpCi0JCWVyZXBvcnQoRVJST1IsCisJCWVyZXR1cm4oZXNj b250ZXh0LCAoRGF0dW0pIDAsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09V VF9PRl9SQU5HRSksCiAJCQkJIGVycm1zZygic21hbGxpbnQgb3V0IG9mIHJhbmdlIikpKTsKIApA QCAtNDc1OSwxMCArNDc5MSwxNCBAQCBudW1lcmljX2Zsb2F0OChQR19GVU5DVElPTl9BUkdTKQog CiAJdG1wID0gRGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQs CiAJCQkJCQkJCQkJCSAgTnVtZXJpY0dldERhdHVtKG51bSkpKTsKLQotCXJlc3VsdCA9IERpcmVj dEZ1bmN0aW9uQ2FsbDEoZmxvYXQ4aW4sIENTdHJpbmdHZXREYXR1bSh0bXApKTsKLQotCXBmcmVl KHRtcCk7CisJaWYgKCFEaXJlY3RJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoZmxvYXQ4aW4sIHRtcCwK KwkJCQkJCQkJCSBJbnZhbGlkT2lkLCAtMSwKKwkJCQkJCQkJCSAoTm9kZSAqKSBmY2luZm8tPmNv bnRleHQsCisJCQkJCQkJCQkgJnJlc3VsdCkpCisJeworCQlwZnJlZSh0bXApOworCQlQR19SRVRV Uk5fTlVMTCgpOworCX0KIAogCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOwogfQpAQCAtNDg1NCw3 ICs0ODkwLDE0IEBAIG51bWVyaWNfZmxvYXQ0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJdG1wID0gRGF0 dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCiAJCQkJCQkJCQkJ CSAgTnVtZXJpY0dldERhdHVtKG51bSkpKTsKIAotCXJlc3VsdCA9IERpcmVjdEZ1bmN0aW9uQ2Fs bDEoZmxvYXQ0aW4sIENTdHJpbmdHZXREYXR1bSh0bXApKTsKKwlpZiAoIURpcmVjdElucHV0RnVu Y3Rpb25DYWxsU2FmZShmbG9hdDRpbiwgdG1wLAorCQkJCQkJCQkJIEludmFsaWRPaWQsIC0xLAor CQkJCQkJCQkJIChOb2RlICopIGZjaW5mby0+Y29udGV4dCwKKwkJCQkJCQkJCSAmcmVzdWx0KSkK Kwl7CisJCXBmcmVlKHRtcCk7CisJCVBHX1JFVFVSTl9OVUxMKCk7CisJfQogCiAJcGZyZWUodG1w KTsKIAotLSAKMi4zNC4xCgo= --000000000000dfa85e063b8049a5 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0003-CAST-expr-AS-newtype-DEFAULT-ON-ERROR.patch" Content-Disposition: attachment; filename="v4-0003-CAST-expr-AS-newtype-DEFAULT-ON-ERROR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mdwfzha10 RnJvbSAxMzhjNmRiNjM4NmQ1YzkzN2ZjZTZkOTAzYjM2MDhmNTA5NTBlZTNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgNCBBdWcgMjAyNSAwOTowMzoyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQg My8zXSBDQVNUKGV4cHIgQVMgbmV3dHlwZSBERUZBVUxUIE9OIEVSUk9SKQoKV2hlbiBjYXN0aW5n IGRhdGEgdHlwZXMsIHdlIGdlbmVyYWxseSB1c2VzIG9uZSBvZiB0aHJlZSBub2RlIHR5cGVzOiBG dW5jRXhwciwKQ29lcmNlVmlhSU8sIG9yIEFycmF5Q29lcmNlRXhwciByZXByZXNlbnQgdGhlIHR5 cGUgY29lcmNpb24uCgoqIENvZXJjZVZpYUlPIGlzIGFscmVhZHkgZXJyb3Itc2FmZSwgc2VlWzBd CiogQXJyYXlDb2VyY2VFeHByIGlzIGFsc28gZXJyb3Igc2FmZSwgc2VlIHByZXZpb3VzIGNvbW1p dC4KKiBIb3dldmVyLCBub3QgYWxsICoqRnVuY0V4cHIqKiBub2RlcyBpcyBlcnJvci1zYWZlLiBG b3IgZXhhbXBsZSwgYSBmdW5jdGlvbgpsaWtlIGludDg0IGlzIG5vdCBlcnJvciBzYWZlLiBJbiB0 aGVzZSBzaXR1YXRpb25zLCB3ZSBjcmVhdGUgYSBDb2VyY2VWaWFJTyBub2RlCmFuZCB1c2UgdGhl IG9yaWdpbmFsIGV4cHJlc3Npb24gYXMgaXRzIGFyZ3VtZW50LCBhbGxvd2luZyB1cyB0byBzYWZl bHkgaGFuZGxlCnRoZSBjYXN0LgoKTm93IHRoYXQgdGhlIHR5cGUgY29lcmNpb24gbm9kZSBpcyBl cnJvci1zYWZlLCB3ZSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2hlbgphIGNvZXJjaW9uIGZh aWxzLCBpdCBmYWxscyBiYWNrIHRvIGV2YWx1YXRpbmcgdGhlIGRlZmF1bHQgbm9kZS4KClswXTog aHR0cHM6Ly9naXQucG9zdGdyZXNxbC5vcmcvY2dpdC9wb3N0Z3Jlc3FsLmdpdC9jb21taXQvP2lk PWFhYWY5NDQ5ZWM2YmU2MmNiMGQzMGVkMzU4OGRjMzg0ZjU2Mjc0YmYKZGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9DQURrTE09ZnYxSmZZNFVmYS1qY3d3TmJqUWl4TlZpc2tROGpadTNU el9wNjU2aV80aFFAbWFpbC5nbWFpbC5jb20KCmRlbW86ClNFTEVDVCBDQVNUKCcxJyBBUyBkYXRl ICBERUZBVUxUICcyMDExLTAxLTAxJyBPTiBFUlJPUiksCiAgICAgICBDQVNUKCd7MjM0LGRlZiw1 Njd9Jzo6dGV4dFtdIEFTIGludGVnZXJbXSBERUZBVUxUICd7LTEwMTF9JyBPTiBFUlJPUik7Cgog ICAgZGF0ZSAgICB8ICBpbnQ0Ci0tLS0tLS0tLS0tLSstLS0tLS0tLS0KIDIwMTEtMDEtMDEgfCB7 LTEwMTF9Ci0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICB8IDExNyAr KysrKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIHwgIDMwICsr Kwogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICB8ICA0OSArKysrCiBzcmMv YmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgIHwgIDY3ICsrKysrKwogc3JjL2JhY2tl bmQvbm9kZXMvcXVlcnlqdW1ibGVmdW5jcy5jICB8ICAxNCArKwogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvY2xhdXNlcy5jICB8ICAxOSArKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAg ICAgICAgICAgICB8ICAzMSArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAg ICAgfCAzMTYgKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV90YXJnZXQuYyAgICAgfCAgMTQgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBl LmMgICAgICAgfCAgMTMgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgICAg fCAgIDYgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICB8ICAxNSArKwog c3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgICAgICAgICB8ICAxMyArKwogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS9mbWdyLmgg ICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgfCAgMzAgKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg IHwgICA2ICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgfCAgMzUgKysr CiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oICAgICAgIHwgICAyICsKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY2FzdC5vdXQgICAgfCAyMzAgKysrKysrKysrKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICB8ICAgMiArLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY2FzdC5zcWwgICAgICAgICB8IDEwOSArKysrKysrKysKIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgfCAgIDMgKwogMjMgZmlsZXMgY2hhbmdlZCwgMTEy MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzcy9zcWwvY2FzdC5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCAxZjNm ODk5ODc0Li4wM2NhZmFkNTI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTk5LDYgKzk5 LDkgQEAgc3RhdGljIHZvaWQgRXhlY0J1aWxkQWdnVHJhbnNDYWxsKEV4cHJTdGF0ZSAqc3RhdGUs IEFnZ1N0YXRlICphZ2dzdGF0ZSwKIHN0YXRpYyB2b2lkIEV4ZWNJbml0SnNvbkV4cHIoSnNvbkV4 cHIgKmpzZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wg KnJlc251bGwsCiAJCQkJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCk7CitzdGF0aWMgdm9pZCBF eGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVDYXN0RXhwciAqc3RjZXhwciwgRXhwclN0 YXRlICpzdGF0ZSwKKwkJCQkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKKwkJCQkJ CQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpOwogc3RhdGljIHZvaWQgRXhlY0luaXRKc29uQ29l cmNpb24oRXhwclN0YXRlICpzdGF0ZSwgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAogCQkJCQkJ CQkgRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0LCBib29sIG9taXRfcXVvdGVzLAogCQkJCQkJ CQkgYm9vbCBleGlzdHNfY29lcmNlLApAQCAtMjE4MCw2ICsyMTgzLDE0IEBAIEV4ZWNJbml0RXhw clJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCWJyZWFrOwogCQkJfQogCisJ CWNhc2UgVF9TYWZlVHlwZUNhc3RFeHByOgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgICAq c3RjZXhwciA9IGNhc3ROb2RlKFNhZmVUeXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJRXhlY0lu aXRTYWZlVHlwZUNhc3RFeHByKHN0Y2V4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsLCAmc2NyYXRj aCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJCXsKIAkJ CQlDb2FsZXNjZUV4cHIgKmNvYWxlc2NlID0gKENvYWxlc2NlRXhwciAqKSBub2RlOwpAQCAtMjc0 Niw3ICsyNzU3LDcgQEAgRXhlY0luaXRGdW5jKEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwgRXhwciAq bm9kZSwgTGlzdCAqYXJncywgT2lkIGZ1bmNpZCwKIAogCS8qIEluaXRpYWxpemUgZnVuY3Rpb24g Y2FsbCBwYXJhbWV0ZXIgc3RydWN0dXJlIHRvbyAqLwogCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0 YSgqZmNpbmZvLCBmbGluZm8sCi0JCQkJCQkJIG5hcmdzLCBpbnB1dGNvbGxpZCwgTlVMTCwgTlVM TCk7CisJCQkJCQkJIG5hcmdzLCBpbnB1dGNvbGxpZCwgKE5vZGUgKikgc3RhdGUtPmVzY29udGV4 dCwgTlVMTCk7CiAKIAkvKiBLZWVwIGV4dHJhIGNvcGllcyBvZiB0aGlzIGluZm8gdG8gc2F2ZSBh biBpbmRpcmVjdGlvbiBhdCBydW50aW1lICovCiAJc2NyYXRjaC0+ZC5mdW5jLmZuX2FkZHIgPSBm bGluZm8tPmZuX2FkZHI7CkBAIC00NzQ0LDYgKzQ3NTUsMTEwIEBAIEV4ZWNCdWlsZFBhcmFtU2V0 RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAJcmV0dXJuIHN0YXRlOwogfQogCisvKgorICogUHVzaCBz dGVwcyB0byBldmFsdWF0ZSBhIFNhZmVUeXBlQ2FzdEV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNp ZGlhcnkKKyAqIGV4cHJlc3Npb25zLiBXZSBhbHJlYWR5IGhhbmRsZSBlcnJvcnMgc29mdGx5IGZv ciBjb2VyY2lvbiBub2RlcyBsaWtlCisgKiBDb2VyY2VWaWFJTywgQ29lcmNlVG9Eb21haW4sIEFy cmF5Q29lcmNlRXhwciwgYW5kIHNvbWUgRnVuY0V4cHJzLiBIb3dldmVyLAorICogbW9zdCBvZiBG dW5jRXhwcnMgbm9kZSAoZm9yIGV4YW1wbGUsIGludDg0KSBpcyBub3QgZXJyb3Itc2FmZS4gRm9y IHRoZXNlCisgKiBjYXNlcywgd2UgaW5zdGVhZCB3cmFwIHRoZSBzb3VyY2UgZXhwcmVzc2lvbiBh bmQgdGFyZ2V0IHR5cGUgaW5mb3JtYXRpb24KKyAqIHdpdGhpbiBhIENvZXJjZVZpYUlPIG5vZGUu CisgKi8KK3N0YXRpYyB2b2lkCitFeGVjSW5pdFNhZmVUeXBlQ2FzdEV4cHIoU2FmZVR5cGVDYXN0 RXhwciAqc3RjZXhwciAsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkgRGF0dW0gKnJlc3YsIGJv b2wgKnJlc251bGwsCisJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNoKQoreworCS8qCisJICog SWYgY29lcmNpb24gdG8gdGhlIHRhcmdldCB0eXBlIGZhaWxzLCBmYWxsYmFjayB0byB0aGUgZGVm YXVsdCBleHByZXNzaW9uCisJICogc3BlY2lmaWVkIGluIHRoZSBPTiBDT05WRVJTSU9OIEVSUk9S IGNsYXVzZS4KKwkqLworCWlmIChzdGNleHByLT5jYXN0X2V4cHIgPT0gTlVMTCkKKwl7CisJCUV4 ZWNJbml0RXhwclJlYygoRXhwciAqKSBzdGNleHByLT5kZWZhdWx0X2V4cHIsCisJCQkJCQlzdGF0 ZSwgcmVzdiwgcmVzbnVsbCk7CisJCXJldHVybjsKKwl9CisJZWxzZQorCXsKKwkJQ29lcmNlVmlh SU8gKm5ld2V4cHI7CisJCVNhZmVUeXBlQ2FzdFN0YXRlICpzdGNzdGF0ZTsKKwkJRXJyb3JTYXZl Q29udGV4dCAqZXNjb250ZXh0OworCQlFcnJvclNhdmVDb250ZXh0ICpzYXZlZF9lc2NvbnRleHQ7 CisJCUxpc3QJICAgKmp1bXBzX3RvX2VuZCA9IE5JTDsKKwkJYm9vbAkJbnVtZXJpY19mcmFjdGlv biA9IGZhbHNlOworCQlPaWQJCQlzb3VyY2Vfb2lkOworCisJCXN0Y3N0YXRlID0gcGFsbG9jMChz aXplb2YoU2FmZVR5cGVDYXN0U3RhdGUpKTsKKwkJc3Rjc3RhdGUtPnN0Y2V4cHIgPSBzdGNleHBy OworCQlzdGNzdGF0ZS0+ZXNjb250ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJCWVz Y29udGV4dCA9ICZzdGNzdGF0ZS0+ZXNjb250ZXh0OworCQlzdGF0ZS0+ZXNjb250ZXh0ID0gZXNj b250ZXh0OworCisJCXNvdXJjZV9vaWQgPSBnZXRCYXNlVHlwZShleHByVHlwZShzdGNleHByLT5z b3VyY2VfZXhwcikpOworCisJCS8qCisJCSAqIFdlIGNhbid0IHVzZSBDb2VyY2VWaWFJTyB0byBz YWZlbHkgY2FzdCBudW1lcmljIHZhbHVlcyB3aXRoCisJCSAqIGZyYWN0aW9uYWwgcGFydHMgdG8g b3RoZXIgbnVtZXJpY2FsIHR5cGVzLCBiZWNhdXNlIG9mIHJvdW5kaW5nCisJCSAqIGlzc3Vlcy4g Rm9yIGV4YW1wbGUsICcxMS4xJzo6TlVNRVJJQzo6SU5UIHdvdWxkIGZhaWwgYmVjYXVzZSAnMTEu MScKKwkJICogaXNuJ3QgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludGVn ZXIuICBJbnN0ZWFkLCB3ZQorCQkgKiBzaG91bGQgdXNlIEZ1bmNFeHByIGZvciB0aGVzZSBjYXNl cy4KKwkJKi8KKwkJaWYgKHNvdXJjZV9vaWQgPT0gTlVNRVJJQ09JRCB8fAorCQkJc291cmNlX29p ZCA9PSBGTE9BVDRPSUQgfHwKKwkJCXNvdXJjZV9vaWQgPT0gRkxPQVQ4T0lEKQorCQkJbnVtZXJp Y19mcmFjdGlvbiA9IHRydWU7CisKKwkJLyogZXZhbHVhdGUgYXJndW1lbnQgZXhwcmVzc2lvbiBp bnRvIHN0ZXAncyByZXN1bHQgYXJlYSAqLworCQlpZiAoSXNBKHN0Y2V4cHItPmNhc3RfZXhwciwg Q29lcmNlVmlhSU8pIHx8CisJCQlJc0Eoc3RjZXhwci0+Y2FzdF9leHByLCBDb2VyY2VUb0RvbWFp bikgfHwKKwkJCUlzQShzdGNleHByLT5jYXN0X2V4cHIsIEFycmF5Q29lcmNlRXhwcikgfHwKKwkJ CUlzQShzdGNleHByLT5jYXN0X2V4cHIsIFZhcikgfHwKKwkJCW51bWVyaWNfZnJhY3Rpb24pCisJ CQlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgc3RjZXhwci0+Y2FzdF9leHByLAorCQkJCQkJCXN0 YXRlLCByZXN2LCByZXNudWxsKTsKKwkJZWxzZQorCQl7CisJCQluZXdleHByID0gbWFrZU5vZGUo Q29lcmNlVmlhSU8pOworCQkJbmV3ZXhwci0+YXJnID0gKEV4cHIgKikgc3RjZXhwci0+c291cmNl X2V4cHI7CisJCQluZXdleHByLT5yZXN1bHR0eXBlID0gc3RjZXhwci0+cmVzdWx0dHlwZTsKKwkJ CW5ld2V4cHItPnJlc3VsdGNvbGxpZCA9IGV4cHJDb2xsYXRpb24oc3RjZXhwci0+c291cmNlX2V4 cHIpOworCQkJbmV3ZXhwci0+Y29lcmNlZm9ybWF0ID0gQ09FUkNFX0VYUExJQ0lUX0NBU1Q7CisJ CQluZXdleHByLT5sb2NhdGlvbiA9IGV4cHJMb2NhdGlvbihzdGNleHByLT5zb3VyY2VfZXhwcik7 CisKKwkJCUV4ZWNJbml0RXhwclJlYygoRXhwciAqKSBuZXdleHByLAorCQkJCQkJCXN0YXRlLCBy ZXN2LCByZXNudWxsKTsKKwkJfQorCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1BfU0FGRVRZUEVf Q0FTVDsKKwkJc2NyYXRjaC0+ZC5zdGNleHByLnN0Y3N0YXRlID0gc3Rjc3RhdGU7CisJCUV4cHJF dmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCisJCXN0Y3N0YXRlLT5qdW1wX2Vycm9yID0g c3RhdGUtPnN0ZXBzX2xlbjsKKwkJLyogSlVNUCB0byBlbmQgaWYgZmFsc2UsIHRoYXQgaXMsIHNr aXAgdGhlIE9OIEVSUk9SIGV4cHJlc3Npb24uICovCisJCWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRf aW50KGp1bXBzX3RvX2VuZCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJCXNjcmF0Y2gtPm9wY29kZSA9 IEVFT1BfSlVNUF9JRl9OT1RfVFJVRTsKKwkJc2NyYXRjaC0+cmVzdmFsdWUgPSAmc3Rjc3RhdGUt PmVycm9yLnZhbHVlOworCQlzY3JhdGNoLT5yZXNudWxsID0gJnN0Y3N0YXRlLT5lcnJvci5pc251 bGw7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJ RXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkJLyogU3RlcHMgdG8gZXZhbHVh dGUgdGhlIE9OIEVSUk9SIGV4cHJlc3Npb24gKi8KKwkJc2F2ZWRfZXNjb250ZXh0ID0gc3RhdGUt PmVzY29udGV4dDsKKwkJc3RhdGUtPmVzY29udGV4dCA9IE5VTEw7CisJCUV4ZWNJbml0RXhwclJl YygoRXhwciAqKSBzdGNzdGF0ZS0+c3RjZXhwci0+ZGVmYXVsdF9leHByLAorCQkJCQkJc3RhdGUs IHJlc3YsIHJlc251bGwpOworCQlzdGF0ZS0+ZXNjb250ZXh0ID0gc2F2ZWRfZXNjb250ZXh0Owor CisJCWZvcmVhY2hfaW50KGxjLCBqdW1wc190b19lbmQpCisJCXsKKwkJCUV4cHJFdmFsU3RlcCAq YXMgPSAmc3RhdGUtPnN0ZXBzW2xjXTsKKworCQkJYXMtPmQuanVtcC5qdW1wZG9uZSA9IHN0YXRl LT5zdGVwc19sZW47CisJCX0KKwkJc3Rjc3RhdGUtPmp1bXBfZW5kID0gc3RhdGUtPnN0ZXBzX2xl bjsKKwl9Cit9CisKIC8qCiAgKiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgSnNvbkV4cHIgYW5k IGl0cyB2YXJpb3VzIHN1YnNpZGlhcnkgZXhwcmVzc2lvbnMuCiAgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwckludGVycC5jCmluZGV4IDYzNmQ5ZWY5ZTYuLmY2ZWQ1OTUzYzIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNTY4LDYgKzU2OCw3IEBAIEV4ZWNJbnRl cnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNu dWxsKQogCQkmJkNBU0VfRUVPUF9YTUxFWFBSLAogCQkmJkNBU0VfRUVPUF9KU09OX0NPTlNUUlVD VE9SLAogCQkmJkNBU0VfRUVPUF9JU19KU09OLAorCQkmJkNBU0VfRUVPUF9TQUZFVFlQRV9DQVNU LAogCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9QQVRILAogCQkmJkNBU0VfRUVPUF9KU09ORVhQUl9D T0VSQ0lPTiwKIAkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNILApAQCAtMTky Niw2ICsxOTI3LDExIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250 ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVF T19DQVNFKEVFT1BfU0FGRVRZUEVfQ0FTVCkKKwkJeworCQkJRUVPX0pVTVAoRXhlY0V2YWxTYWZl VHlwZUNhc3Qoc3RhdGUsIG9wKSk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBSX1BB VEgpCiAJCXsKIAkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24g Ki8KQEAgLTUxODcsNiArNTE5MywzMCBAQCBHZXRKc29uQmVoYXZpb3JWYWx1ZVN0cmluZyhKc29u QmVoYXZpb3IgKmJlaGF2aW9yKQogCXJldHVybiBwc3RyZHVwKGJlaGF2aW9yX25hbWVzW2JlaGF2 aW9yLT5idHlwZV0pOwogfQogCitpbnQKK0V4ZWNFdmFsU2FmZVR5cGVDYXN0KEV4cHJTdGF0ZSAq c3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApCit7CisJU2FmZVR5cGVDYXN0U3RhdGUgKnN0Y3N0YXRl ID0gb3AtPmQuc3RjZXhwci5zdGNzdGF0ZTsKKworCWlmIChTT0ZUX0VSUk9SX09DQ1VSUkVEKCZz dGNzdGF0ZS0+ZXNjb250ZXh0KSkKKwl7CisJCSpvcC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJ CSpvcC0+cmVzbnVsbCA9IHRydWU7CisKKwkJc3Rjc3RhdGUtPmVycm9yLnZhbHVlID0gQm9vbEdl dERhdHVtKHRydWUpOworCisJCS8qCisJCSAqIFJlc2V0IGZvciBuZXh0IHVzZSBzdWNoIGFzIGZv ciBjYXRjaGluZyBlcnJvcnMgd2hlbiBjb2VyY2luZyBhCisJCSAqIHN0Y2V4cHIgZXhwcmVzc2lv bi4KKwkJICovCisJCXN0Y3N0YXRlLT5lc2NvbnRleHQuZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsK KwkJc3Rjc3RhdGUtPmVzY29udGV4dC5kZXRhaWxzX3dhbnRlZCA9IGZhbHNlOworCisJCXJldHVy biBzdGNzdGF0ZS0+anVtcF9lcnJvcjsKKwl9CisJcmV0dXJuIHN0Y3N0YXRlLT5qdW1wX2VuZDsK K30KKwogLyoKICAqIENoZWNrcyBpZiBhbiBlcnJvciBvY2N1cnJlZCBpbiBFeGVjRXZhbEpzb25D b2VyY2lvbigpLiAgSWYgc28sIHRoaXMgc2V0cwogICogSnNvbkV4cHJTdGF0ZS5lcnJvciB0byB0 cmlnZ2VyIHRoZSBPTiBFUlJPUiBoYW5kbGluZyBzdGVwcywgdW5sZXNzIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X2V4cHIuYwppbmRleCA4OTBiY2IwYjBhLi5hMmRmYjgyMzkzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2Vu ZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMjI1Niw2ICsyMjU2LDU1IEBAIGxsdm1fY29t cGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nb b3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9QX1NBRkVUWVBFX0NBU1Q6CisJ CQkJeworCQkJCQlTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3RhdGUgPSBvcC0+ZC5zdGNleHByLnN0 Y3N0YXRlOworCQkJCQlMTFZNVmFsdWVSZWYgdl9yZXQ7CisKKwkJCQkJLyoKKwkJCQkJICogQ2Fs bCBFeGVjRXZhbFNhZmVUeXBlQ2FzdCgpLiAgSXQgcmV0dXJucyB0aGUgYWRkcmVzcyBvZgorCQkJ CQkgKiB0aGUgc3RlcCB0byBwZXJmb3JtIG5leHQuCisJCQkJCSAqLworCQkJCQl2X3JldCA9IGJ1 aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbFNhZmVUeXBlQ2FzdCIsCisJCQkJCQkJCQkJ CXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKworCQkJCQkvKgorCQkJCQkgKiBCdWlsZCBhIHN3 aXRjaCB0byBtYXAgdGhlIHJldHVybiB2YWx1ZSAodl9yZXQgYWJvdmUpLAorCQkJCQkgKiB3aGlj aCBpcyBhIHJ1bnRpbWUgdmFsdWUgb2YgdGhlIHN0ZXAgYWRkcmVzcyB0byBwZXJmb3JtCisJCQkJ CSAqIG5leHQgdG8ganVtcF9lcnJvcgorCQkJCQkgKi8KKwkJCQkJaWYgKHN0Y3N0YXRlLT5qdW1w X2Vycm9yID49IDApCisJCQkJCXsKKwkJCQkJCUxMVk1WYWx1ZVJlZiB2X2p1bXBfZXJyb3I7CisJ CQkJCQlMTFZNVmFsdWVSZWYgdl9zd2l0Y2g7CisJCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2Rv bmUsCisJCQkJCQkJCQliX2Vycm9yOworCisJCQkJCQliX2Vycm9yID0KKwkJCQkJCQlsX2JiX2Jl Zm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkgICJvcC4lZC5zdGNleHByX2Vy cm9yIiwgb3Bubyk7CisJCQkJCQliX2RvbmUgPQorCQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9j a3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVkLnN0Y2V4cHJfZG9uZSIsIG9wbm8pOwor CisJCQkJCQl2X3N3aXRjaCA9IExMVk1CdWlsZFN3aXRjaChiLAorCQkJCQkJCQkJCQkJICAgdl9y ZXQsCisJCQkJCQkJCQkJCQkgICBiX2RvbmUsCisJCQkJCQkJCQkJCQkgICAxKTsKKworCQkJCQkJ LyogUmV0dXJuZWQgc3Rjc3RhdGUtPmp1bXBfZXJyb3I/ICovCisJCQkJCQl2X2p1bXBfZXJyb3Ig PSBsX2ludDMyX2NvbnN0KGxjLCBzdGNzdGF0ZS0+anVtcF9lcnJvcik7CisJCQkJCQlMTFZNQWRk Q2FzZSh2X3N3aXRjaCwgdl9qdW1wX2Vycm9yLCBiX2Vycm9yKTsKKworCQkJCQkJLyogT04gRVJS T1IgY29kZSAqLworCQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfZXJyb3IpOwor CQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbc3Rjc3RhdGUtPmp1bXBfZXJyb3JdKTsKKwor CQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfZG9uZSk7CisJCQkJCX0KKwkJCQkJ TExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbc3Rjc3RhdGUtPmp1bXBfZW5kXSk7CisJCQkJCWJyZWFr OworCQkJCX0KIAkJCWNhc2UgRUVPUF9KU09ORVhQUl9QQVRIOgogCQkJCXsKIAkJCQkJSnNvbkV4 cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29uZXhwci5qc2VzdGF0ZTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMKaW5kZXggN2JjODIzNTA3Zi4uMjEyZjNlM2M1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMK QEAgLTIwNiw2ICsyMDYsOSBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRf Um93Q29tcGFyZUV4cHI6CiAJCQl0eXBlID0gQk9PTE9JRDsKIAkJCWJyZWFrOworCQljYXNlIFRf U2FmZVR5cGVDYXN0RXhwcjoKKwkJCXR5cGUgPSAoKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikg ZXhwciktPnJlc3VsdHR5cGU7CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJ CXR5cGUgPSAoKGNvbnN0IENvYWxlc2NlRXhwciAqKSBleHByKS0+Y29hbGVzY2V0eXBlOwogCQkJ YnJlYWs7CkBAIC00NTAsNiArNDUzLDggQEAgZXhwclR5cG1vZChjb25zdCBOb2RlICpleHByKQog CQkJCXJldHVybiB0eXBtb2Q7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2Fz dEV4cHI6CisJCQlyZXR1cm4gKChjb25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4cHIpLT5yZXN1 bHR0eXBtb2Q7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQl7CiAJCQkJLyoKQEAgLTk2NSw2 ICs5NzAsOSBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBSb3dDb21w YXJlRXhwcidzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJY29sbCA9IEludmFsaWRPaWQ7 CS8qIC4uLiBzbyBpdCBoYXMgbm8gY29sbGF0aW9uICovCiAJCQlicmVhazsKKwkJY2FzZSBUX1Nh ZmVUeXBlQ2FzdEV4cHI6CisJCQljb2xsID0gKChjb25zdCBTYWZlVHlwZUNhc3RFeHByICopIGV4 cHIpLT5yZXN1bHRjb2xsaWQ7CisJCQlicmVhazsKIAkJY2FzZSBUX0NvYWxlc2NlRXhwcjoKIAkJ CWNvbGwgPSAoKGNvbnN0IENvYWxlc2NlRXhwciAqKSBleHByKS0+Y29hbGVzY2Vjb2xsaWQ7CiAJ CQlicmVhazsKQEAgLTEyMzIsNiArMTI0MCw5IEBAIGV4cHJTZXRDb2xsYXRpb24oTm9kZSAqZXhw ciwgT2lkIGNvbGxhdGlvbikKIAkJCS8qIFJvd0NvbXBhcmVFeHByJ3MgcmVzdWx0IGlzIGJvb2xl YW4gLi4uICovCiAJCQlBc3NlcnQoIU9pZElzVmFsaWQoY29sbGF0aW9uKSk7IC8qIC4uLiBzbyBu ZXZlciBzZXQgYSBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0 RXhwcjoKKwkJCSgoU2FmZVR5cGVDYXN0RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkID0gY29s bGF0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2FsZXNjZUV4cHI6CiAJCQkoKENvYWxlc2Nl RXhwciAqKSBleHByKS0+Y29hbGVzY2Vjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAg LTE1NTQsNiArMTU2NSwxNSBAQCBleHByTG9jYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJCS8q IGp1c3QgdXNlIGxlZnRtb3N0IGFyZ3VtZW50J3MgbG9jYXRpb24gKi8KIAkJCWxvYyA9IGV4cHJM b2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IFJvd0NvbXBhcmVFeHByICopIGV4cHIpLT5sYXJncyk7 CiAJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7CisJCQkJY29uc3Qg U2FmZVR5cGVDYXN0RXhwciAqY2FzdF9leHByID0gKGNvbnN0IFNhZmVUeXBlQ2FzdEV4cHIgKikg ZXhwcjsKKwkJCQlpZiAoY2FzdF9leHByLT5jYXN0X2V4cHIpCisJCQkJCWxvYyA9IGV4cHJMb2Nh dGlvbihjYXN0X2V4cHItPmNhc3RfZXhwcik7CisJCQkJZWxzZQorCQkJCQlsb2MgPSBleHByTG9j YXRpb24oY2FzdF9leHByLT5kZWZhdWx0X2V4cHIpOworCQkJCWJyZWFrOworCQkJfQogCQljYXNl IFRfQ29hbGVzY2VFeHByOgogCQkJLyogQ09BTEVTQ0Uga2V5d29yZCBzaG91bGQgYWx3YXlzIGJl IHRoZSBmaXJzdCB0aGluZyAqLwogCQkJbG9jID0gKChjb25zdCBDb2FsZXNjZUV4cHIgKikgZXhw ciktPmxvY2F0aW9uOwpAQCAtMjMyNSw2ICsyMzQ1LDE4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxr ZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwor CQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICAg KnNjZXhwciA9IChTYWZlVHlwZUNhc3RFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhzY2V4 cHItPnNvdXJjZV9leHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoc2NleHBy LT5jYXN0X2V4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhzY2V4cHItPmRl ZmF1bHRfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9Db2FsZXNjZUV4cHI6CiAJCQlyZXR1cm4gV0FMSygoKENvYWxlc2NlRXhwciAqKSBub2RlKS0+ YXJncyk7CiAJCWNhc2UgVF9NaW5NYXhFeHByOgpAQCAtMzMzNCw2ICszMzY2LDE5IEBAIGV4cHJl c3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikg bmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJ CXsKKwkJCQlTYWZlVHlwZUNhc3RFeHByICAgKnNjZXhwciA9IChTYWZlVHlwZUNhc3RFeHByICop IG5vZGU7CisJCQkJU2FmZVR5cGVDYXN0RXhwciAgICpuZXdub2RlOworCisJCQkJRkxBVENPUFko bmV3bm9kZSwgc2NleHByLCBTYWZlVHlwZUNhc3RFeHByKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+ c291cmNlX2V4cHIsIHNjZXhwci0+c291cmNlX2V4cHIsIE5vZGUgKik7CisJCQkJTVVUQVRFKG5l d25vZGUtPmNhc3RfZXhwciwgc2NleHByLT5jYXN0X2V4cHIsIE5vZGUgKik7CisJCQkJTVVUQVRF KG5ld25vZGUtPmRlZmF1bHRfZXhwciwgc2NleHByLT5kZWZhdWx0X2V4cHIsIE5vZGUgKik7CisK KwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRf Q29hbGVzY2VFeHByOgogCQkJewogCQkJCUNvYWxlc2NlRXhwciAqY29hbGVzY2VleHByID0gKENv YWxlc2NlRXhwciAqKSBub2RlOwpAQCAtNDQ2OCw2ICs0NTEzLDI4IEBAIHJhd19leHByZXNzaW9u X3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJ CQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdDoKKwkJCXsKKwkJCQlTYWZlVHlwZUNhc3Qg ICAqc2MgPSAoU2FmZVR5cGVDYXN0ICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhzYy0+Y2FzdCkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHNjLT5leHByKSkKKwkJCQkJcmV0dXJu IHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBUX1NhZmVUeXBlQ2FzdEV4cHI6CisJCQl7 CisJCQkJU2FmZVR5cGVDYXN0RXhwciAgICpzdGMgPSAoU2FmZVR5cGVDYXN0RXhwciAqKSBub2Rl OworCisJCQkJaWYgKFdBTEsoc3RjLT5zb3VyY2VfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOwor CQkJCWlmIChXQUxLKHN0Yy0+Y2FzdF9leHByKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYg KFdBTEsoc3RjLT5kZWZhdWx0X2V4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJy ZWFrOwogCQljYXNlIFRfQ29sbGF0ZUNsYXVzZToKIAkJCXJldHVybiBXQUxLKCgoQ29sbGF0ZUNs YXVzZSAqKSBub2RlKS0+YXJnKTsKIAkJY2FzZSBUX1NvcnRCeToKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL25vZGVzL3F1ZXJ5anVtYmxlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3F1ZXJ5 anVtYmxlZnVuY3MuYwppbmRleCAzMWY5NzE1MTk3Li43NjQyNmM4OGU5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9ub2Rlcy9xdWVyeWp1bWJsZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvcXVlcnlqdW1ibGVmdW5jcy5jCkBAIC03NCw2ICs3NCw3IEBAIHN0YXRpYyB2b2lkIF9qdW1i bGVFbGVtZW50cyhKdW1ibGVTdGF0ZSAqanN0YXRlLCBMaXN0ICplbGVtZW50cywgTm9kZSAqbm9k ZSk7CiBzdGF0aWMgdm9pZCBfanVtYmxlUGFyYW0oSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAq bm9kZSk7CiBzdGF0aWMgdm9pZCBfanVtYmxlQV9Db25zdChKdW1ibGVTdGF0ZSAqanN0YXRlLCBO b2RlICpub2RlKTsKIHN0YXRpYyB2b2lkIF9qdW1ibGVWYXJpYWJsZVNldFN0bXQoSnVtYmxlU3Rh dGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBfanVtYmxlU2FmZVR5cGVDYXN0 RXhwcihKdW1ibGVTdGF0ZSAqanN0YXRlLCBOb2RlICpub2RlKTsKIHN0YXRpYyB2b2lkIF9qdW1i bGVSYW5nZVRibEVudHJ5X2VyZWYoSnVtYmxlU3RhdGUgKmpzdGF0ZSwKIAkJCQkJCQkJCSAgUmFu Z2VUYmxFbnRyeSAqcnRlLAogCQkJCQkJCQkJICBBbGlhcyAqZXhwcik7CkBAIC03NTgsNiArNzU5 LDE5IEBAIF9qdW1ibGVWYXJpYWJsZVNldFN0bXQoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAq bm9kZSkKIAlKVU1CTEVfTE9DQVRJT04obG9jYXRpb24pOwogfQogCitzdGF0aWMgdm9pZAorX2p1 bWJsZVNhZmVUeXBlQ2FzdEV4cHIoSnVtYmxlU3RhdGUgKmpzdGF0ZSwgTm9kZSAqbm9kZSkKK3sK KwlTYWZlVHlwZUNhc3RFeHByICpleHByID0gKFNhZmVUeXBlQ2FzdEV4cHIgKikgbm9kZTsKKwor CWlmIChleHByLT5jYXN0X2V4cHIgPT0gTlVMTCkKKwkJSlVNQkxFX05PREUoc291cmNlX2V4cHIp OworCWVsc2UKKwkJSlVNQkxFX05PREUoY2FzdF9leHByKTsKKworCUpVTUJMRV9OT0RFKGRlZmF1 bHRfZXhwcik7Cit9CisKIC8qCiAgKiBDdXN0b20gcXVlcnkganVtYmxlIGZ1bmN0aW9uIGZvciBS YW5nZVRibEVudHJ5LmVyZWYuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2NsYXVzZXMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwpp bmRleCBmNDUxMzFjMzRjLi5hN2I0ZTgwOTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9jbGF1c2VzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xh dXNlcy5jCkBAIC0yOTM4LDYgKzI5MzgsMjUgQEAgZXZhbF9jb25zdF9leHByZXNzaW9uc19tdXRh dG9yKE5vZGUgKm5vZGUsCiAJCQkJCQkJCQkJCQkgIGNvcHlPYmplY3QoanZlLT5mb3JtYXQpKTsK IAkJCX0KIAorCQljYXNlIFRfU2FmZVR5cGVDYXN0RXhwcjoKKwkJCXsKKwkJCQlTYWZlVHlwZUNh c3RFeHByICpzdGMgPSAoU2FmZVR5cGVDYXN0RXhwciAqKSBub2RlOworCQkJCVNhZmVUeXBlQ2Fz dEV4cHIJICAgKm5ld2V4cHI7CisJCQkJTm9kZQkgICAqc291cmNlX2V4cHIgPSBzdGMtPnNvdXJj ZV9leHByOworCQkJCU5vZGUJICAgKmRlZmF1bHRfZXhwciA9IHN0Yy0+ZGVmYXVsdF9leHByOwor CisJCQkJc291cmNlX2V4cHIgPSBldmFsX2NvbnN0X2V4cHJlc3Npb25zX211dGF0b3Ioc291cmNl X2V4cHIsIGNvbnRleHQpOworCQkJCWRlZmF1bHRfZXhwciA9IGV2YWxfY29uc3RfZXhwcmVzc2lv bnNfbXV0YXRvcihkZWZhdWx0X2V4cHIsIGNvbnRleHQpOworCisJCQkJbmV3ZXhwciA9IG1ha2VO b2RlKFNhZmVUeXBlQ2FzdEV4cHIpOworCQkJCW5ld2V4cHItPnNvdXJjZV9leHByID0gc291cmNl X2V4cHI7CisJCQkJbmV3ZXhwci0+Y2FzdF9leHByID0gc3RjLT5jYXN0X2V4cHI7CisJCQkJbmV3 ZXhwci0+ZGVmYXVsdF9leHByID0gZGVmYXVsdF9leHByOworCQkJCW5ld2V4cHItPnJlc3VsdHR5 cGUgPSBzdGMtPnJlc3VsdHR5cGU7CisJCQkJbmV3ZXhwci0+cmVzdWx0dHlwbW9kID0gc3RjLT5y ZXN1bHR0eXBtb2Q7CisJCQkJbmV3ZXhwci0+cmVzdWx0Y29sbGlkID0gc3RjLT5yZXN1bHRjb2xs aWQ7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld2V4cHI7CisJCQl9CiAJCWNhc2UgVF9TdWJQbGFu OgogCQljYXNlIFRfQWx0ZXJuYXRpdmVTdWJQbGFuOgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3MGEwZDgz MmExLi41MTc2ZDdlNGQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTY0Miw2ICs2NDIsOCBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNl cywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRib3VuZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3Bl YwogJXR5cGUgPGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFy dGJvdW5kX2VsZW0KKyV0eXBlIDxub2RlPgljYXN0X29uX2Vycm9yX2NsYXVzZQorJXR5cGUgPG5v ZGU+CWNhc3Rfb25fZXJyb3JfYWN0aW9uCiAKICV0eXBlIDxub2RlPglqc29uX2Zvcm1hdF9jbGF1 c2UKIAkJCQlqc29uX2Zvcm1hdF9jbGF1c2Vfb3B0CkBAIC0xNTkzNiw4ICsxNTkzOCwyNSBAQCBm dW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJewogCQkJCQkkJCA9IG1ha2VTUUxWYWx1ZUZ1 bmN0aW9uKFNWRk9QX0NVUlJFTlRfU0NIRU1BLCAtMSwgQDEpOwogCQkJCX0KLQkJCXwgQ0FTVCAn KCcgYV9leHByIEFTIFR5cGVuYW1lICcpJwotCQkJCXsgJCQgPSBtYWtlVHlwZUNhc3QoJDMsICQ1 LCBAMSk7IH0KKwkJCXwgQ0FTVCAnKCcgYV9leHByIEFTIFR5cGVuYW1lIGNhc3Rfb25fZXJyb3Jf Y2xhdXNlICcpJworCQkJCXsKKwkJCQkJVHlwZUNhc3QgKmNhc3QgPSAoVHlwZUNhc3QgKikgbWFr ZVR5cGVDYXN0KCQzLCAkNSwgQDEpOworCQkJCQlpZiAoJDYgPT0gTlVMTCkKKwkJCQkJCSQkID0g KE5vZGUgKikgY2FzdDsKKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQlTYWZlVHlwZUNhc3QgKnNh ZmVjYXN0ID0gbWFrZU5vZGUoU2FmZVR5cGVDYXN0KTsKKworCQkJCQkJc2FmZWNhc3QtPmNhc3Qg PSAoTm9kZSAqKSBjYXN0OworCQkJCQkJc2FmZWNhc3QtPmV4cHIgPSAkNjsKKworCQkJCQkJLyoK KwkJCQkJCSAqIE9uLWVycm9yIGFjdGlvbnMgbXVzdCB0aGVtc2VsdmVzIGJlIHR5cGVjYXN0IHRv IHRoZQorCQkJCQkJICogc2FtZSB0eXBlIGFzIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uLgorCQkJ CQkJICovCisJCQkJCQkkJCA9IChOb2RlICopIHNhZmVjYXN0OworCQkJCQl9CisJCQkJfQogCQkJ fCBFWFRSQUNUICcoJyBleHRyYWN0X2xpc3QgJyknCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICop IG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZSgiZXh0cmFjdCIpLApAQCAtMTYzMjMsNiArMTYz NDIsMTQgQEAgZnVuY19leHByX2NvbW1vbl9zdWJleHByOgogCQkJCX0KIAkJCTsKIAorY2FzdF9v bl9lcnJvcl9jbGF1c2U6IGNhc3Rfb25fZXJyb3JfYWN0aW9uIE9OIENPTlZFUlNJT05fUCBFUlJP Ul9QIHsgJCQgPSAkMTsgfQorCQkJfCAvKiBFTVBUWSAqLyB7ICQkID0gTlVMTDsgfQorCQk7CisK K2Nhc3Rfb25fZXJyb3JfYWN0aW9uOiBFUlJPUl9QIHsgJCQgPSBOVUxMOyB9CisJCQl8IE5VTExf UCB7ICQkID0gbWFrZU51bGxBQ29uc3QoLTEpOyB9CisJCQl8IERFRkFVTFQgYV9leHByIHsgJCQg PSAkMjsgfQorCQk7CiAKIC8qCiAgKiBTUUwvWE1MIHN1cHBvcnQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jCmluZGV4IGQ2NjI3NjgwMWMuLjJmNWEzMDU5YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIu YwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJj YXRhbG9nL3BnX2FnZ3JlZ2F0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RiY29tbWFuZHMu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTM3LDYgKzM4LDcgQEAKICNpbmNsdWRlICJ1 dGlscy9kYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3htbC5oIgogCkBAIC02MCw3ICs2Miwx MCBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtTXVsdGlBc3NpZ25SZWYoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBNdWx0aUFzc2lnblJlZiAqbWFyZWYpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNhc2VF eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2FzZUV4cHIgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5z Zm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKTsKIHN0YXRp YyBOb2RlICp0cmFuc2Zvcm1BcnJheUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhw ciAqYSwKLQkJCQkJCQkJT2lkIGFycmF5X3R5cGUsIE9pZCBlbGVtZW50X3R5cGUsIGludDMyIHR5 cG1vZCk7CisJCQkJCQkJCU9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0 eXBtb2QsCisJCQkJCQkJCWJvb2wgKmNhbl9jb2VyY2UpOworc3RhdGljIE5vZGUgKnRyYW5zZm9y bUFycmF5RXhwclNhZmUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwKKwkJCQkJ CQkJCU9pZCBhcnJheV90eXBlLCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QpOwogc3Rh dGljIE5vZGUgKnRyYW5zZm9ybVJvd0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSb3dFeHByICpy LCBib29sIGFsbG93RGVmYXVsdCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29hbGVzY2VFeHBy KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29hbGVzY2VFeHByICpjKTsKIHN0YXRpYyBOb2RlICp0cmFu c2Zvcm1NaW5NYXhFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTWluTWF4RXhwciAqbSk7CkBAIC03 Niw2ICs4MSw3IEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1XaG9sZVJvd1JlZihQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCQkJCSAgaW50IHN1YmxldmVsc191cCwgaW50IGxvY2F0aW9uKTsKIHN0 YXRpYyBOb2RlICp0cmFuc2Zvcm1JbmRpcmVjdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFfSW5k aXJlY3Rpb24gKmluZCk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtVHlwZUNhc3QoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpOworc3RhdGljIE5vZGUgKnRyYW5zZm9ybVR5cGVTYWZl Q2FzdChQYXJzZVN0YXRlICpwc3RhdGUsIFNhZmVUeXBlQ2FzdCAqdGMpOwogc3RhdGljIE5vZGUg KnRyYW5zZm9ybUNvbGxhdGVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2xsYXRlQ2xhdXNl ICpjKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uT2JqZWN0Q29uc3RydWN0b3IoUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQlKc29uT2JqZWN0Q29uc3RydWN0b3IgKmN0b3IpOwpA QCAtMTA2LDYgKzExMiw4IEBAIHN0YXRpYyBFeHByICptYWtlX2Rpc3RpbmN0X29wKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLAogCQkJCQkJCSAgTm9kZSAqbHRyZWUsIE5vZGUgKnJ0 cmVlLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VfbnVsbHRlc3RfZnJvbV9kaXN0 aW5jdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJIEFfRXhwciAqZGlzdGluY3RhLCBO b2RlICphcmcpOworc3RhdGljIGJvb2wgQ292ZXJ0VW5rbm93bkNvbnN0U2FmZShQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKm5vZGUsCisJCQkJCQkJCSAgIE9pZCB0YXJnZXRUeXBlLCBpbnQzMiB0 YXJnZXRUeXBlTW9kKTsKIAogCiAvKgpAQCAtMTYzLDEzICsxNzEsMTcgQEAgdHJhbnNmb3JtRXhw clJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCiAJCWNhc2UgVF9BX0Fy cmF5RXhwcjoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUFycmF5RXhwcihwc3RhdGUsIChBX0FycmF5 RXhwciAqKSBleHByLAotCQkJCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsIC0xKTsKKwkJ CQkJCQkJCQlJbnZhbGlkT2lkLCBJbnZhbGlkT2lkLCAtMSwgTlVMTCk7CiAJCQlicmVhazsKIAog CQljYXNlIFRfVHlwZUNhc3Q6CiAJCQlyZXN1bHQgPSB0cmFuc2Zvcm1UeXBlQ2FzdChwc3RhdGUs IChUeXBlQ2FzdCAqKSBleHByKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9TYWZlVHlwZUNhc3Q6 CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1UeXBlU2FmZUNhc3QocHN0YXRlLCAoU2FmZVR5cGVDYXN0 ICopIGV4cHIpOworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0NvbGxhdGVDbGF1c2U6CiAJCQlyZXN1 bHQgPSB0cmFuc2Zvcm1Db2xsYXRlQ2xhdXNlKHBzdGF0ZSwgKENvbGxhdGVDbGF1c2UgKikgZXhw cik7CiAJCQlicmVhazsKQEAgLTIwMDQsMTYgKzIwMTYsMTI3IEBAIHRyYW5zZm9ybVN1Ykxpbmso UGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCXJldHVybiByZXN1bHQ7CiB9 CiAKKy8qCisgKiBSZXR1cm4gdHJ1ZSBpZmYgc3VjY2Vzc2Z1bHkgY29lcmNlZCBhIFVua25vd24g Q29uc3QgdG8gdGFyZ2V0VHlwZQorKi8KK3N0YXRpYyBib29sIENvdmVydFVua25vd25Db25zdFNh ZmUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpub2RlLAorCQkJCQkJCQkgICBPaWQgdGFyZ2V0 VHlwZSwgaW50MzIgdGFyZ2V0VHlwZU1vZCkKK3sKKwlPaWQJCQliYXNlVHlwZUlkOworCWludDMy CQliYXNlVHlwZU1vZDsKKwlpbnQzMgkJaW5wdXRUeXBlTW9kOworCVR5cGUJCWJhc2VUeXBlOwor CWNoYXIJCSpzdHJpbmc7CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWNvbnZlcnRlZDsKKwlDb25z dAkgICAqY29uOworCisJQXNzZXJ0KElzQShub2RlLCBDb25zdCkpOworCUFzc2VydChleHByVHlw ZShub2RlKSA9PSBVTktOT1dOT0lEKTsKKworCWNvbiA9IChDb25zdCAqKSBub2RlOworCWJhc2VU eXBlTW9kID0gdGFyZ2V0VHlwZU1vZDsKKwliYXNlVHlwZUlkID0gZ2V0QmFzZVR5cGVBbmRUeXBt b2QodGFyZ2V0VHlwZSwgJmJhc2VUeXBlTW9kKTsKKworCWlmIChiYXNlVHlwZUlkID09IElOVEVS VkFMT0lEKQorCQlpbnB1dFR5cGVNb2QgPSBiYXNlVHlwZU1vZDsKKwllbHNlCisJCWlucHV0VHlw ZU1vZCA9IC0xOworCWJhc2VUeXBlID0gdHlwZWlkVHlwZShiYXNlVHlwZUlkKTsKKworCS8qCisJ ICogV2UgYXNzdW1lIGhlcmUgdGhhdCBVTktOT1dOJ3MgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24g aXMgdGhlIHNhbWUgYXMKKwkgKiBDU1RSSU5HLgorCSovCisJaWYgKCFjb24tPmNvbnN0aXNudWxs KQorCQlzdHJpbmcgPSBEYXR1bUdldENTdHJpbmcoY29uLT5jb25zdHZhbHVlKTsKKwllbHNlCisJ CXN0cmluZyA9IE5VTEw7CisKKwljb252ZXJ0ZWQgPSBzdHJpbmdUeXBlRGF0dW1TYWZlKGJhc2VU eXBlLAorCQkJCQkJCQkJc3RyaW5nLAorCQkJCQkJCQkJaW5wdXRUeXBlTW9kLAorCQkJCQkJCQkJ JmRhdHVtKTsKKworCVJlbGVhc2VTeXNDYWNoZShiYXNlVHlwZSk7CisKKwlyZXR1cm4gY29udmVy dGVkOworfQorCisvKgorICogQXMgd2l0aCB0cmFuc2Zvcm1BcnJheUV4cHIsIHdlIG5lZWQgdG8g Y29ycmVjdGx5IHBhcnNlIGJhY2sgYSBxdWVyeSBsaWtlCisgKiBDQVNUKEFSUkFZWyd0aHJlZScs ICdhJ10gQVMgaW50W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUikuICBX ZQorICogY2Fubm90IGFsbG93IGV2YWxfY29uc3RfZXhwcmVzc2lvbnMgdG8gZm9sZCB0aGUgQV9B cnJheUV4cHIgaW50byBhIENvbnN0CisgKiBub2RlLCBhcyB0aGlzIG1heSBjYXVzZSBhbiBlcnJv ciB0b28gZWFybHkuIFRoZSBBX0FycmF5RXhwciBzdGlsbCBuZWVkCisgKiB0cmFuc2Zvcm1lZCBp bnRvIGFuIEFycmF5RXhwciBmb3IgdGhlIGRlcGFyc2UgcHVycG9zZS4KKyAqLworc3RhdGljIE5v ZGUgKgordHJhbnNmb3JtQXJyYXlFeHByU2FmZShQYXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlF eHByICphLAorCQkJCQkgICBPaWQgYXJyYXlfdHlwZSwgT2lkIGVsZW1lbnRfdHlwZSwgaW50MzIg dHlwbW9kKQoreworCUFycmF5RXhwciAgKm5ld2EgPSBtYWtlTm9kZShBcnJheUV4cHIpOworCUxp c3QJICAgKm5ld2VsZW1zID0gTklMOworCUxpc3RDZWxsICAgKmVsZW1lbnQ7CisKKwluZXdhLT5t dWx0aWRpbXMgPSBmYWxzZTsKKwlmb3JlYWNoKGVsZW1lbnQsIGEtPmVsZW1lbnRzKQorCXsKKwkJ Tm9kZQkgICAqZSA9IChOb2RlICopIGxmaXJzdChlbGVtZW50KTsKKwkJTm9kZQkgICAqbmV3ZTsK KworCQkvKgorCQkgKiBJZiBhbiBlbGVtZW50IGlzIGl0c2VsZiBhbiBBX0FycmF5RXhwciwgcmVj dXJzZSBkaXJlY3RseSBzbyB0aGF0IHdlCisJCSAqIGNhbiBwYXNzIGRvd24gYW55IHRhcmdldCB0 eXBlIHdlIHdlcmUgZ2l2ZW4uCisJCSAqLworCQlpZiAoSXNBKGUsIEFfQXJyYXlFeHByKSkKKwkJ eworCQkJbmV3ZSA9IHRyYW5zZm9ybUFycmF5RXhwclNhZmUocHN0YXRlLChBX0FycmF5RXhwciAq KSBlLCBhcnJheV90eXBlLCBlbGVtZW50X3R5cGUsIHR5cG1vZCk7CisJCQkvKiB3ZSBjZXJ0YWlu bHkgaGF2ZSBhbiBhcnJheSBoZXJlICovCisJCQlBc3NlcnQoYXJyYXlfdHlwZSA9PSBJbnZhbGlk T2lkIHx8IGFycmF5X3R5cGUgPT0gZXhwclR5cGUobmV3ZSkpOworCQkJbmV3YS0+bXVsdGlkaW1z ID0gdHJ1ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCW5ld2UgPSB0cmFuc2Zvcm1FeHByUmVjdXJz ZShwc3RhdGUsIGUpOworCisJCQlpZiAoIW5ld2EtPm11bHRpZGltcykKKwkJCXsKKwkJCQlPaWQJ CQluZXdldHlwZSA9IGV4cHJUeXBlKG5ld2UpOworCisJCQkJaWYgKG5ld2V0eXBlICE9IElOVDJW RUNUT1JPSUQgJiYgbmV3ZXR5cGUgIT0gT0lEVkVDVE9ST0lEICYmCisJCQkJCXR5cGVfaXNfYXJy YXkobmV3ZXR5cGUpKQorCQkJCQluZXdhLT5tdWx0aWRpbXMgPSB0cnVlOworCQkJfQorCQl9CisK KwkJbmV3ZWxlbXMgPSBsYXBwZW5kKG5ld2VsZW1zLCBuZXdlKTsKKwl9CisKKwluZXdhLT5hcnJh eV90eXBlaWQgPSBhcnJheV90eXBlOworCS8qIGFycmF5X2NvbGxpZCB3aWxsIGJlIHNldCBieSBw YXJzZV9jb2xsYXRlLmMgKi8KKwluZXdhLT5lbGVtZW50X3R5cGVpZCA9IGVsZW1lbnRfdHlwZTsK KwluZXdhLT5lbGVtZW50cyA9IG5ld2VsZW1zOworCW5ld2EtPmxpc3Rfc3RhcnQgPSBhLT5saXN0 X3N0YXJ0OworCW5ld2EtPmxpc3RfZW5kID0gLTE7CisJbmV3YS0+bG9jYXRpb24gPSAtMTsKKwor CXJldHVybiAoTm9kZSAqKSBuZXdhOworfQorCiAvKgogICogdHJhbnNmb3JtQXJyYXlFeHByCiAg KgogICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZXMgdGhlIHRhcmdldCB0eXBlLCB0aGUgcmVzdWx0 aW5nIGFycmF5IHdpbGwKICAqIGJlIG9mIGV4YWN0bHkgdGhhdCB0eXBlLiAgT3RoZXJ3aXNlIHdl IHRyeSB0byBpbmZlciBhIGNvbW1vbiB0eXBlCiAgKiBmb3IgdGhlIGVsZW1lbnRzIHVzaW5nIHNl bGVjdF9jb21tb25fdHlwZSgpLgorICoKKyAqIGNhbl9jb2VyY2UgaXMgbm90IG51bGwgb25seSB3 aGVuIENBU1QoREVGQVVMVC4uLiBPTiBDT05WRVJTSU9OIEVSUk9SKSBpcworICogc3BlY2lmaWVk LiBJZiB3ZSBmb3VuZCBvdXQgd2UgY2FuIG5vdCBjYXN0IHRvIHRhcmdldCB0eXBlIGFuZCBjYW5f Y29lcmNlIGlzCisgKiBub3QgbnVsbCwgcmV0dXJuIE5VTEwgZWFybGllciBhbmQgc2V0IGNhbl9j b2VyY2Ugc2V0IGZhbHNlLgogICovCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1BcnJheUV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwKLQkJCQkgICBPaWQgYXJyYXlfdHlw ZSwgT2lkIGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kKQorCQkJCSAgIE9pZCBhcnJheV90eXBl LCBPaWQgZWxlbWVudF90eXBlLCBpbnQzMiB0eXBtb2QsIGJvb2wgKmNhbl9jb2VyY2UpCiB7CiAJ QXJyYXlFeHByICAqbmV3YSA9IG1ha2VOb2RlKEFycmF5RXhwcik7CiAJTGlzdAkgICAqbmV3ZWxl bXMgPSBOSUw7CkBAIC0yMDQ0LDkgKzIxNjcsMTAgQEAgdHJhbnNmb3JtQXJyYXlFeHByKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJCQkJCQkJCQkgIChBX0FycmF5RXhwciAq KSBlLAogCQkJCQkJCQkJICBhcnJheV90eXBlLAogCQkJCQkJCQkJICBlbGVtZW50X3R5cGUsCi0J CQkJCQkJCQkgIHR5cG1vZCk7CisJCQkJCQkJCQkgIHR5cG1vZCwKKwkJCQkJCQkJCSAgY2FuX2Nv ZXJjZSk7CiAJCQkvKiB3ZSBjZXJ0YWlubHkgaGF2ZSBhbiBhcnJheSBoZXJlICovCi0JCQlBc3Nl cnQoYXJyYXlfdHlwZSA9PSBJbnZhbGlkT2lkIHx8IGFycmF5X3R5cGUgPT0gZXhwclR5cGUobmV3 ZSkpOworCQkJQXNzZXJ0KGNhbl9jb2VyY2UgfHwgYXJyYXlfdHlwZSA9PSBJbnZhbGlkT2lkIHx8 IGFycmF5X3R5cGUgPT0gZXhwclR5cGUobmV3ZSkpOwogCQkJbmV3YS0+bXVsdGlkaW1zID0gdHJ1 ZTsKIAkJfQogCQllbHNlCkBAIC0yMDcyLDYgKzIxOTYsOSBAQCB0cmFuc2Zvcm1BcnJheUV4cHIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0FycmF5RXhwciAqYSwKIAkJbmV3ZWxlbXMgPSBsYXBwZW5k KG5ld2VsZW1zLCBuZXdlKTsKIAl9CiAKKwlpZiAoY2FuX2NvZXJjZSAmJiAhKmNhbl9jb2VyY2Up CisJCXJldHVybiBOVUxMOworCiAJLyoKIAkgKiBTZWxlY3QgYSB0YXJnZXQgdHlwZSBmb3IgdGhl IGVsZW1lbnRzLgogCSAqCkBAIC0yMTM5LDYgKzIyNjYsMTcgQEAgdHJhbnNmb3JtQXJyYXlFeHBy KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9BcnJheUV4cHIgKmEsCiAJCU5vZGUJICAgKmUgPSAoTm9k ZSAqKSBsZmlyc3QoZWxlbWVudCk7CiAJCU5vZGUJICAgKm5ld2U7CiAKKwkJaWYgKGNhbl9jb2Vy Y2UgJiYgKCpjYW5fY29lcmNlKSAmJiBJc0EoZSwgQ29uc3QpICYmIGV4cHJUeXBlKGUpID09IFVO S05PV05PSUQpCisJCXsKKwkJCWlmICghQ292ZXJ0VW5rbm93bkNvbnN0U2FmZShwc3RhdGUsIGUs IGNvZXJjZV90eXBlLCB0eXBtb2QpKQorCQkJeworCQkJCSpjYW5fY29lcmNlID0gZmFsc2U7CisJ CQkJbGlzdF9mcmVlKG5ld2NvZXJjZWRlbGVtcyk7CisJCQkJbmV3Y29lcmNlZGVsZW1zID0gTklM OworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQl9CisKIAkJaWYgKGNvZXJjZV9oYXJkKQogCQl7 CiAJCQluZXdlID0gY29lcmNlX3RvX3RhcmdldF90eXBlKHBzdGF0ZSwgZSwKQEAgLTI3NDIsNyAr Mjg4MCw4IEBAIHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3Qg KnRjKQogCQkJCQkJCQkJICAoQV9BcnJheUV4cHIgKikgYXJnLAogCQkJCQkJCQkJICB0YXJnZXRC YXNlVHlwZSwKIAkJCQkJCQkJCSAgZWxlbWVudFR5cGUsCi0JCQkJCQkJCQkgIHRhcmdldEJhc2VU eXBtb2QpOworCQkJCQkJCQkJICB0YXJnZXRCYXNlVHlwbW9kLAorCQkJCQkJCQkJICBOVUxMKTsK IAkJfQogCQllbHNlCiAJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBhcmcp OwpAQCAtMjc3OSw2ICsyOTE4LDE3MSBAQCB0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRlICpw c3RhdGUsIFR5cGVDYXN0ICp0YykKIAlyZXR1cm4gcmVzdWx0OwogfQogCisKKy8qCisgKiBIYW5k bGUgYW4gZXhwbGljaXQgQ0FTVCguLi4gREVGQVVMVCAuLi4gT04gQ09OVkVSU0lPTiBFUlJPUikg Y29uc3RydWN0LgorICoKKyAqIFRyYW5zZm9ybSBTYWZlVHlwZUNhc3Qgbm9kZSwgbG9vayB1cCB0 aGUgdHlwZSBuYW1lLCBhbmQgYXBwbHkgYW55IG5lY2Vzc2FyeQorICogY29lcmNpb24gZnVuY3Rp b24ocykuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybVR5cGVTYWZlQ2FzdChQYXJzZVN0 YXRlICpwc3RhdGUsIFNhZmVUeXBlQ2FzdCAqdGMpCit7CisJU2FmZVR5cGVDYXN0RXhwciAgICpy ZXN1bHQ7CisJTm9kZQkgICAqZGVmX2V4cHI7CisJTm9kZQkgICAqY2FzdF9leHByID0gTlVMTDsK KwlOb2RlCSAgICpzb3VyY2VfZXhwciA9IE5VTEw7CisJTm9kZQkgICAqYXJyYXlfZXhwciA9IE5V TEw7CisJT2lkCQkJaW5wdXRUeXBlID0gSW52YWxpZE9pZDsKKwlPaWQJCQl0YXJnZXRUeXBlOwor CWludDMyCQl0YXJnZXRUeXBtb2Q7CisJaW50CQkJbG9jYXRpb247CisJVHlwZUNhc3QgICAqdGNh c3QgPSAoVHlwZUNhc3QgKikgdGMtPmNhc3Q7CisJTm9kZQkgICAqdGNfYXJnID0gdGNhc3QtPmFy ZzsKKwlib29sCQljYW5fY29lcmNlID0gdHJ1ZTsKKwlpbnQJCQlkZWZfZXhwcl9sb2MgPSAtMTsK KworCXJlc3VsdCA9IG1ha2VOb2RlKFNhZmVUeXBlQ2FzdEV4cHIpOworCS8qIExvb2sgdXAgdGhl IHR5cGUgbmFtZSBmaXJzdCAqLworCXR5cGVuYW1lVHlwZUlkQW5kTW9kKHBzdGF0ZSwgdGNhc3Qt PnR5cGVOYW1lLCAmdGFyZ2V0VHlwZSwgJnRhcmdldFR5cG1vZCk7CisKKwlyZXN1bHQtPnJlc3Vs dHR5cGUgPSB0YXJnZXRUeXBlOworCXJlc3VsdC0+cmVzdWx0dHlwbW9kID0gdGFyZ2V0VHlwbW9k OworCisJLyogbm93IGxvb2tpbmcgYXQgY2FzdCBmYWlsIGRlZmF1bHQgZXhwcmVzc2lvbiAqLwor CWRlZl9leHByX2xvYyA9IGV4cHJMb2NhdGlvbih0Yy0+ZXhwcik7CisJZGVmX2V4cHIgPSB0cmFu c2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIHRjLT5leHByKTsKKworCWlmIChleHByZXNzaW9uX3Jl dHVybnNfc2V0KGRlZl9leHByKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCWVycm1zZygiREVGQVVMVCBleHByZXNzaW9uIG11 c3Qgbm90IHJldHVybiBhIHNldCIpLAorCQkJCXBhcnNlcl9jb2VyY2lvbl9lcnJwb3NpdGlvbihw c3RhdGUsIGRlZl9leHByX2xvYywgZGVmX2V4cHIpKTsKKworCWlmIChJc0EoZGVmX2V4cHIsIEFn Z3JlZikgfHwgSXNBKGRlZl9leHByLCBXaW5kb3dGdW5jKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coIkRF RkFVTFQgZXhwcmVzc2lvbiBmdW5jdGlvbiBtdXN0IGJlIGEgbm9ybWFsIGZ1bmN0aW9uIiksCisJ CQkJcGFyc2VyX2NvZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmX2V4cHJfbG9jLCBkZWZf ZXhwcikpOworCisJaWYgKElzQShkZWZfZXhwciwgRnVuY0V4cHIpKQorCXsKKwkJaWYgKGdldF9m dW5jX3Byb2tpbmQoKChGdW5jRXhwciAqKSBkZWZfZXhwciktPmZ1bmNpZCkgIT0gUFJPS0lORF9G VU5DVElPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJERUZBVUxUIGV4cHJlc3Npb24gZnVu Y3Rpb24gbXVzdCBiZSBhIG5vcm1hbCBmdW5jdGlvbiIpLAorCQkJCQlwYXJzZXJfY29lcmNpb25f ZXJycG9zaXRpb24ocHN0YXRlLCBkZWZfZXhwcl9sb2MsIGRlZl9leHByKSk7CisJfQorCisJZGVm X2V4cHIgPSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBkZWZfZXhwciwgZXhwclR5cGUo ZGVmX2V4cHIpLAorCQkJCQkJCQkJIHRhcmdldFR5cGUsIHRhcmdldFR5cG1vZCwKKwkJCQkJCQkJ CSBDT0VSQ0lPTl9FWFBMSUNJVCwKKwkJCQkJCQkJCSBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJ CQkJCQkJCSBleHByTG9jYXRpb24oZGVmX2V4cHIpKTsKKwlpZiAoZGVmX2V4cHIgPT0gTlVMTCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJ CQkJZXJybXNnKCJjYW5ub3QgY2FzdCBvbl9lcnJvciBkZWZhdWx0IGV4cHJlc3Npb24gdG8gdHlw ZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJnZXRUeXBlKSksCisJCQkJcGFyc2VyX2Nv ZXJjaW9uX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmX2V4cHJfbG9jLCBkZWZfZXhwcikpOworCisJ LyoKKwkgKiBJZiB0aGUgc3ViamVjdCBvZiB0aGUgdHlwZWNhc3QgaXMgYW4gQVJSQVlbXSBjb25z dHJ1Y3QgYW5kIHRoZSB0YXJnZXQKKwkgKiB0eXBlIGlzIGFuIGFycmF5IHR5cGUsIHdlIGludm9r ZSB0cmFuc2Zvcm1BcnJheUV4cHIoKSBkaXJlY3RseSBzbyB0aGF0CisJICogd2UgY2FuIHBhc3Mg ZG93biB0aGUgdHlwZSBpbmZvcm1hdGlvbi4gIFRoaXMgYXZvaWRzIHNvbWUgY2FzZXMgd2hlcmUK KwkgKiB0cmFuc2Zvcm1BcnJheUV4cHIoKSBtaWdodCBub3QgaW5mZXIgdGhlIGNvcnJlY3QgdHlw ZS4gIE90aGVyd2lzZSwganVzdAorCSAqIHRyYW5zZm9ybSB0aGUgYXJndW1lbnQgbm9ybWFsbHku CisJICovCisJaWYgKElzQSh0Y19hcmcsIEFfQXJyYXlFeHByKSkKKwl7CisJCU9pZAkJCXRhcmdl dEJhc2VUeXBlOworCQlpbnQzMgkJdGFyZ2V0QmFzZVR5cG1vZDsKKwkJT2lkCQkJZWxlbWVudFR5 cGU7CisKKwkJLyoKKwkJICogSWYgdGFyZ2V0IGlzIGEgZG9tYWluIG92ZXIgYXJyYXksIHdvcmsg d2l0aCB0aGUgYmFzZSBhcnJheSB0eXBlCisJCSAqIGhlcmUuICBCZWxvdywgd2UnbGwgY2FzdCB0 aGUgYXJyYXkgdHlwZSB0byB0aGUgZG9tYWluLiAgSW4gdGhlCisJCSAqIHVzdWFsIGNhc2UgdGhh dCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGRvbWFpbiwgdGhlIHJlbWFpbmluZyBzdGVwcworCQkgKiB3 aWxsIGJlIGEgbm8tb3AuCisJCSAqLworCQl0YXJnZXRCYXNlVHlwbW9kID0gdGFyZ2V0VHlwbW9k OworCQl0YXJnZXRCYXNlVHlwZSA9IGdldEJhc2VUeXBlQW5kVHlwbW9kKHRhcmdldFR5cGUsICZ0 YXJnZXRCYXNlVHlwbW9kKTsKKwkJZWxlbWVudFR5cGUgPSBnZXRfZWxlbWVudF90eXBlKHRhcmdl dEJhc2VUeXBlKTsKKworCQlpZiAoT2lkSXNWYWxpZChlbGVtZW50VHlwZSkpCisJCXsKKwkJCWFy cmF5X2V4cHIgPSBjb3B5T2JqZWN0KHRjX2FyZyk7CisKKwkJCXNvdXJjZV9leHByID0gdHJhbnNm b3JtQXJyYXlFeHByKHBzdGF0ZSwKKwkJCQkJCQkJCQkJIChBX0FycmF5RXhwciAqKSB0Y19hcmcs CisJCQkJCQkJCQkJCSB0YXJnZXRCYXNlVHlwZSwKKwkJCQkJCQkJCQkJIGVsZW1lbnRUeXBlLAor CQkJCQkJCQkJCQkgdGFyZ2V0QmFzZVR5cG1vZCwKKwkJCQkJCQkJCQkJICZjYW5fY29lcmNlKTsK KwkJCWlmICghY2FuX2NvZXJjZSkKKwkJCQlzb3VyY2VfZXhwciA9ICB0cmFuc2Zvcm1BcnJheUV4 cHJTYWZlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgIChBX0FycmF5RXhwciAqKSBhcnJheV9leHBy LAorCQkJCQkJCQkJCQkJCSAgdGFyZ2V0QmFzZVR5cGUsCisJCQkJCQkJCQkJCQkJICBlbGVtZW50 VHlwZSwKKwkJCQkJCQkJCQkJCQkgIHRhcmdldEJhc2VUeXBtb2QpOworCQl9CisJCWVsc2UKKwkJ CXNvdXJjZV9leHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCB0Y19hcmcpOworCX0K KwllbHNlCisJCXNvdXJjZV9leHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCB0Y19h cmcpOworCisJaW5wdXRUeXBlID0gZXhwclR5cGUoc291cmNlX2V4cHIpOworCWlmIChpbnB1dFR5 cGUgPT0gSW52YWxpZE9pZCAmJiBjYW5fY29lcmNlKQorCQlyZXR1cm4gKE5vZGUgKikgcmVzdWx0 OwkJCS8qIGRvIG5vdGhpbmcgaWYgTlVMTCBpbnB1dCAqLworCisKKwlpZiAoY2FuX2NvZXJjZSAm JiBJc0Eoc291cmNlX2V4cHIsIENvbnN0KSAmJiBleHByVHlwZShzb3VyY2VfZXhwcikgPT0gVU5L Tk9XTk9JRCkKKwkJY2FuX2NvZXJjZSA9IENvdmVydFVua25vd25Db25zdFNhZmUocHN0YXRlLAor CQkJCQkJCQkJCQlzb3VyY2VfZXhwciwKKwkJCQkJCQkJCQkJdGFyZ2V0VHlwZSwKKwkJCQkJCQkJ CQkJdGFyZ2V0VHlwbW9kKTsKKworCS8qCisJICogTG9jYXRpb24gb2YgdGhlIGNvZXJjaW9uIGlz IHByZWZlcmVudGlhbGx5IHRoZSBsb2NhdGlvbiBvZiB0aGUgOjogb3IKKwkgKiBDQVNUIHN5bWJv bCwgYnV0IGlmIHRoZXJlIGlzIG5vbmUgdGhlbiB1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSB0eXBl CisJICogbmFtZSAodGhpcyBjYW4gaGFwcGVuIGluIFR5cGVOYW1lICdzdHJpbmcnIHN5bnRheCwg Zm9yIGluc3RhbmNlKS4KKwkgKi8KKwlsb2NhdGlvbiA9IHRjYXN0LT5sb2NhdGlvbjsKKwlpZiAo bG9jYXRpb24gPCAwKQorCQlsb2NhdGlvbiA9IHRjYXN0LT50eXBlTmFtZS0+bG9jYXRpb247CisK KwlpZiAoY2FuX2NvZXJjZSkKKwl7CisJCU9pZAkJaW5wdXRiYXNlID0gZ2V0QmFzZVR5cGUoaW5w dXRUeXBlKTsKKwkJT2lkIAl0YXJnZXRiYXNlID0gZ2V0QmFzZVR5cGUodGFyZ2V0VHlwZSk7CisK KwkJLyoKKwkJICogSXQncyBoYXJkIHRvIG1ha2UgZnVuY3Rpb24gbnVtZXJpY19jYXNoIGVycm9y IHNhZmUsIGVzcGVjaWFsbHkgY2FsbGVlCisJCSAqIG51bWVyaWNfbXVsLiBTbyB3ZSBoYXZlIHRv IGRpc2FsbG93IHNhZmUgY2FzdCBmcm9tIG51bWVyaWMgdG8gbW9uZXkKKwkJICovCisJCWlmIChp bnB1dGJhc2UgPT0gTlVNRVJJQ09JRCAmJiB0YXJnZXRiYXNlID09IE1PTkVZT0lEKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCWVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyB3aGVuICVzIGNsYXVzZSBi ZWhhdmlvciBpcyBub3QgJXMiLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoaW5wdXRUeXBlKSwK KwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHRhcmdldFR5cGUpLAorCQkJCQkJICAgIkNBU1QgLi4u IE9OIENPTlZFUlNJT04gRVJST1IiLCAiRVJST1IiKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKHNvdXJjZV9leHByKSkpOworCQljYXN0X2V4cHIgPSBjb2Vy Y2VfdG9fdGFyZ2V0X3R5cGUocHN0YXRlLCBzb3VyY2VfZXhwciwgaW5wdXRUeXBlLAorCQkJCQkJ CQkJCSAgdGFyZ2V0VHlwZSwgdGFyZ2V0VHlwbW9kLAorCQkJCQkJCQkJCSAgQ09FUkNJT05fRVhQ TElDSVQsCisJCQkJCQkJCQkJICBDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKKwkJCQkJCQkJCQkgIGxv Y2F0aW9uKTsKKwl9CisKKwlyZXN1bHQtPnNvdXJjZV9leHByID0gc291cmNlX2V4cHI7CisJcmVz dWx0LT5jYXN0X2V4cHIgPSBjYXN0X2V4cHI7CisJcmVzdWx0LT5kZWZhdWx0X2V4cHIgPSBkZWZf ZXhwcjsKKworCXJldHVybiAoTm9kZSAqKSByZXN1bHQ7Cit9CisKIC8qCiAgKiBIYW5kbGUgYW4g ZXhwbGljaXQgQ09MTEFURSBjbGF1c2UuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3RhcmdldC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCmlu ZGV4IDRhYmEwZDlkNGQuLjgxMmVkMThjMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV90YXJnZXQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMK QEAgLTE4MjMsNiArMTgyMywyMCBAQCBGaWd1cmVDb2xuYW1lSW50ZXJuYWwoTm9kZSAqbm9kZSwg Y2hhciAqKm5hbWUpCiAJCQkJfQogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9TYWZlVHlwZUNh c3Q6CisJCQlzdHJlbmd0aCA9IEZpZ3VyZUNvbG5hbWVJbnRlcm5hbCgoKFNhZmVUeXBlQ2FzdCAq KSBub2RlKS0+Y2FzdCwKKwkJCQkJCQkJCQkJIG5hbWUpOworCQkJaWYgKHN0cmVuZ3RoIDw9IDEp CisJCQl7CisJCQkJVHlwZUNhc3QgKm5vZGVfY2FzdDsKKwkJCQlub2RlX2Nhc3QgPSAoVHlwZUNh c3QgKikoKFNhZmVUeXBlQ2FzdCAqKSBub2RlKS0+Y2FzdDsKKwkJCQlpZiAobm9kZV9jYXN0LT50 eXBlTmFtZSAhPSBOVUxMKQorCQkJCXsKKwkJCQkJKm5hbWUgPSBzdHJWYWwobGxhc3Qobm9kZV9j YXN0LT50eXBlTmFtZS0+bmFtZXMpKTsKKwkJCQkJcmV0dXJuIDE7CisJCQkJfQorCQkJfQorCQkJ YnJlYWs7CiAJCWNhc2UgVF9Db2xsYXRlQ2xhdXNlOgogCQkJcmV0dXJuIEZpZ3VyZUNvbG5hbWVJ bnRlcm5hbCgoKENvbGxhdGVDbGF1c2UgKikgbm9kZSktPmFyZywgbmFtZSk7CiAJCWNhc2UgVF9H cm91cGluZ0Z1bmM6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3R5cGUuYwppbmRleCA3NzEzYmRjNmFmLi4wMmU1 ZjljOTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdHlwZS5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90eXBlLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2lu Y2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5o IgogI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCkBAIC02NjAsNiArNjYxLDE4IEBAIHN0cmluZ1R5 cGVEYXR1bShUeXBlIHRwLCBjaGFyICpzdHJpbmcsIGludDMyIGF0dHR5cG1vZCkKIAlyZXR1cm4g T2lkSW5wdXRGdW5jdGlvbkNhbGwodHlwaW5wdXQsIHN0cmluZywgdHlwaW9wYXJhbSwgYXR0dHlw bW9kKTsKIH0KIAorYm9vbAorc3RyaW5nVHlwZURhdHVtU2FmZShUeXBlIHRwLCBjaGFyICpzdHJp bmcsIGludDMyIGF0dHR5cG1vZCwgRGF0dW0gKnJlc3VsdCkKK3sKKwlGb3JtX3BnX3R5cGUgdHlw Zm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0cCk7CisJT2lkCQkJdHlwaW5wdXQgPSB0 eXBmb3JtLT50eXBpbnB1dDsKKwlPaWQJCQl0eXBpb3BhcmFtID0gZ2V0VHlwZUlPUGFyYW0odHAp OworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0ID0ge1RfRXJyb3JTYXZlQ29udGV4dH07CisK KwlyZXR1cm4gT2lkSW5wdXRGdW5jdGlvbkNhbGxTYWZlKHR5cGlucHV0LCBzdHJpbmcsIHR5cGlv cGFyYW0sIGF0dHR5cG1vZCwKKwkJCQkJCQkJCShmbU5vZGVQdHIpICZlc2NvbnRleHQsIHJlc3Vs dCk7Cit9CisKIC8qCiAgKiBHaXZlbiBhIHR5cGVpZCwgcmV0dXJuIHRoZSB0eXBlJ3MgdHlwcmVs aWQgKGFzc29jaWF0ZWQgcmVsYXRpb24pLCBpZiBhbnkuCiAgKiBSZXR1cm5zIEludmFsaWRPaWQg aWYgdHlwZSBpcyBub3QgYSBjb21wb3NpdGUgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlmdW5j cy5jCmluZGV4IGI1Zjk4YmYyMmYuLjZiZDhhOTg5ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 ZnVuY3MuYwpAQCAtMzI5NSw2ICszMjk1LDEyIEBAIGFycmF5X21hcChEYXR1bSBhcnJheWQsCiAJ CQlyZXR1cm4gKERhdHVtKSAwOwogCQl9CiAKKwkJaWYgKFNPRlRfRVJST1JfT0NDVVJSRUQoZXhw cnN0YXRlLT5lc2NvbnRleHQpKQorCQl7CisJCQlwZnJlZSh2YWx1ZXMpOworCQkJcGZyZWUobnVs bHMpOworCQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQogCQlpZiAobnVsbHNbaV0pCiAJCQloYXNu dWxscyA9IHRydWU7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCAzZDZl NmJkYmZkLi5lZTg2OGRlMmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0xMDUz NCw2ICsxMDUzNCwyMSBAQCBnZXRfcnVsZV9leHByKE5vZGUgKm5vZGUsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwKIAkJCX0KIAkJCWJyZWFrOwogCisJCWNhc2UgVF9TYWZlVHlwZUNhc3RFeHBy OgorCQkJeworCQkJCVNhZmVUeXBlQ2FzdEV4cHIgICAqc3RjZXhwciA9IGNhc3ROb2RlKFNhZmVU eXBlQ2FzdEV4cHIsIG5vZGUpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJD QVNUKCIpOworCQkJCWdldF9ydWxlX2V4cHIoc3RjZXhwci0+c291cmNlX2V4cHIsIGNvbnRleHQs IHNob3dpbXBsaWNpdCk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyAiLAor CQkJCQkJCQkgZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9kKHN0Y2V4cHItPnJlc3VsdHR5cGUsIHN0 Y2V4cHItPnJlc3VsdHR5cG1vZCkpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICJERUZBVUxUICIpOworCQkJCWdldF9ydWxlX2V4cHIoc3RjZXhwci0+ZGVmYXVsdF9leHByLCBj b250ZXh0LCBzaG93aW1wbGljaXQpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAi IE9OIENPTlZFUlNJT04gRVJST1IpIik7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0pzb25F eHByOgogCQkJewogCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2ZtZ3IvZm1nci5jCmluZGV4IDc4MjI5MWQ5OTkuLjlkZTg5NWU2ODIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Zt Z3IvZm1nci5jCkBAIC0xNzU5LDYgKzE3NTksMTkgQEAgT2lkSW5wdXRGdW5jdGlvbkNhbGwoT2lk IGZ1bmN0aW9uSWQsIGNoYXIgKnN0ciwgT2lkIHR5cGlvcGFyYW0sIGludDMyIHR5cG1vZCkKIAly ZXR1cm4gSW5wdXRGdW5jdGlvbkNhbGwoJmZsaW5mbywgc3RyLCB0eXBpb3BhcmFtLCB0eXBtb2Qp OwogfQogCitib29sCitPaWRJbnB1dEZ1bmN0aW9uQ2FsbFNhZmUoT2lkIGZ1bmN0aW9uSWQsIGNo YXIgKnN0ciwgT2lkIHR5cGlvcGFyYW0sCisJCQkJCQkgaW50MzIgdHlwbW9kLCBmbU5vZGVQdHIg ZXNjb250ZXh0LAorCQkJCQkJIERhdHVtICpyZXN1bHQpCit7CisJRm1nckluZm8JCQlmbGluZm87 CisKKwlmbWdyX2luZm8oZnVuY3Rpb25JZCwgJmZsaW5mbyk7CisKKwlyZXR1cm4gSW5wdXRGdW5j dGlvbkNhbGxTYWZlKCZmbGluZm8sIHN0ciwgdHlwaW9wYXJhbSwgdHlwbW9kLAorCQkJCQkJCQkg ZXNjb250ZXh0LCByZXN1bHQpOworfQorCiBjaGFyICoKIE9pZE91dHB1dEZ1bmN0aW9uQ2FsbChP aWQgZnVuY3Rpb25JZCwgRGF0dW0gdmFsKQogewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXgg NzUzNjYyMDM3MC4uMGFmY2YwOWMwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY0V4cHIuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCkBAIC0yNjUs NiArMjY1LDcgQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAlFRU9QX1hNTEVYUFIsCiAJRUVP UF9KU09OX0NPTlNUUlVDVE9SLAogCUVFT1BfSVNfSlNPTiwKKwlFRU9QX1NBRkVUWVBFX0NBU1Qs CiAJRUVPUF9KU09ORVhQUl9QQVRILAogCUVFT1BfSlNPTkVYUFJfQ09FUkNJT04sCiAJRUVPUF9K U09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCkBAIC03NTAsNiArNzUxLDEyIEBAIHR5cGVkZWYgc3Ry dWN0IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJlZGljYXRlICpwcmVkOwkvKiBvcmlnaW5hbCBl eHByZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pzb247CiAKKwkJLyogZm9yIEVFT1BfU0FGRUNB U1QgKi8KKwkJc3RydWN0CisJCXsKKwkJCXN0cnVjdCBTYWZlVHlwZUNhc3RTdGF0ZSAqc3Rjc3Rh dGU7CS8qIG9yaWdpbmFsIGV4cHJlc3Npb24gbm9kZSAqLworCQl9CQkJc3RjZXhwcjsKKwogCQkv KiBmb3IgRUVPUF9KU09ORVhQUl9QQVRIICovCiAJCXN0cnVjdAogCQl7CkBAIC04OTIsNiArODk5 LDcgQEAgZXh0ZXJuIGludAlFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0YXRlLCBF eHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVy biB2b2lkIEV4ZWNFdmFsSnNvbkNvZXJjaW9uKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3Rl cCAqb3AsCiAJCQkJCQkJCSBFeHByQ29udGV4dCAqZWNvbnRleHQpOworaW50IEV4ZWNFdmFsU2Fm ZVR5cGVDYXN0KEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwogZXh0ZXJuIHZv aWQgRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxT dGVwICpvcCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbEdyb3VwaW5nRnVuYyhFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsTWVyZ2VTdXBwb3J0 RnVuYyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZm1nci5oIGIvc3JjL2luY2x1ZGUvZm1nci5oCmluZGV4IDBmZTdiNGViYzcuLjI5 OWQ0ZWVmNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZtZ3IuaAorKysgYi9zcmMvaW5jbHVk ZS9mbWdyLmgKQEAgLTc1MCw2ICs3NTAsOSBAQCBleHRlcm4gYm9vbCBEaXJlY3RJbnB1dEZ1bmN0 aW9uQ2FsbFNhZmUoUEdGdW5jdGlvbiBmdW5jLCBjaGFyICpzdHIsCiAJCQkJCQkJCQkJRGF0dW0g KnJlc3VsdCk7CiBleHRlcm4gRGF0dW0gT2lkSW5wdXRGdW5jdGlvbkNhbGwoT2lkIGZ1bmN0aW9u SWQsIGNoYXIgKnN0ciwKIAkJCQkJCQkJICBPaWQgdHlwaW9wYXJhbSwgaW50MzIgdHlwbW9kKTsK K2V4dGVybiBib29sIE9pZElucHV0RnVuY3Rpb25DYWxsU2FmZShPaWQgZnVuY3Rpb25JZCwgY2hh ciAqc3RyLCBPaWQgdHlwaW9wYXJhbSwKKwkJCQkJCQkJCSBpbnQzMiB0eXBtb2QsIGZtTm9kZVB0 ciBlc2NvbnRleHQsCisJCQkJCQkJCQkgRGF0dW0gKnJlc3VsdCk7CiBleHRlcm4gY2hhciAqT3V0 cHV0RnVuY3Rpb25DYWxsKEZtZ3JJbmZvICpmbGluZm8sIERhdHVtIHZhbCk7CiBleHRlcm4gY2hh ciAqT2lkT3V0cHV0RnVuY3Rpb25DYWxsKE9pZCBmdW5jdGlvbklkLCBEYXR1bSB2YWwpOwogZXh0 ZXJuIERhdHVtIFJlY2VpdmVGdW5jdGlvbkNhbGwoRm1nckluZm8gKmZsaW5mbywgZm1TdHJpbmdJ bmZvIGJ1ZiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZTEwN2Q2ZTVmOC4uMjgyYmZhNzcwZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTEwNTgsNiArMTA1OCwzNiBAQCB0eXBlZGVmIHN0cnVj dCBEb21haW5Db25zdHJhaW50U3RhdGUKIAlFeHByU3RhdGUgICpjaGVja19leHByc3RhdGU7CS8q IGNoZWNrX2V4cHIncyBldmFsIHN0YXRlLCBvciBOVUxMICovCiB9IERvbWFpbkNvbnN0cmFpbnRT dGF0ZTsKIAordHlwZWRlZiBzdHJ1Y3QgU2FmZVR5cGVDYXN0U3RhdGUKK3sKKwlTYWZlVHlwZUNh c3RFeHByICpzdGNleHByOworCisJLyogU2V0IHRvIHRydWUgaWYgdHlwZSBjYXN0IGNhdXNlIGFu IGVycm9yLiAqLworCU51bGxhYmxlRGF0dW0gZXJyb3I7CisKKwkvKgorCSAqIEFkZHJlc3NlcyBv ZiBzdGVwcyB0aGF0IGltcGxlbWVudCBERUZBVUxUIGV4cHIgT04gQ09OVkVSU0lPTiBFUlJPUiBm b3IKKwkgKiBzYWZlIHR5cGUgY2FzdC4KKwkgKi8KKwlpbnQgCQlqdW1wX2Vycm9yOworCisJLyoK KwkgKiBBZGRyZXNzIHRvIGp1bXAgdG8gd2hlbiBza2lwcGluZyBhbGwgdGhlIHN0ZXBzIHRvIGV2 YXVsYXRlIHRoZSBkZWZhdWx0CisJICogZXhwcmVzc2lvbiBhZnRlciBwZXJmb3JtaW5nIEV4ZWNF dmFsU2FmZVR5cGVDYXN0KCkuCisJICovCisJaW50IAkJanVtcF9lbmQ7CisKKwkvKgorCSAqIEZv ciBlcnJvci1zYWZlIGV2YWx1YXRpb24gb2YgY29lcmNpb25zLiAgV2hlbiBERUZBVUxUIGV4cHIg T04gQ09OVkVSU0lPTgorCSAqIE9OIEVSUk9SIGlzIHNwZWNpZmllZCwgYSBwb2ludGVyIHRvIHRo aXMgaXMgcGFzc2VkIHRvIEV4ZWNJbml0RXhwclJlYygpCisJICogd2hlbiBpbml0aWFsaXppbmcg dGhlIGNvZXJjaW9uIGV4cHJlc3Npb25zLCBzZWUgRXhlY0luaXRTYWZlVHlwZUNhc3RFeHByLgor CSAqCisJICogUmVzZXQgZm9yIGVhY2ggZXZhbHVhdGlvbiBvZiBFRU9QX1NBRkVUWVBFX0NBU1Qu CisJICovCisJRXJyb3JTYXZlQ29udGV4dCBlc2NvbnRleHQ7CisKK30gU2FmZVR5cGVDYXN0U3Rh dGU7CisKIC8qCiAgKiBTdGF0ZSBmb3IgSnNvbkV4cHIgZXZhbHVhdGlvbiwgdG9vIGJpZyB0byBp bmxpbmUuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDI4ZTJlOGRjMGYuLjJlMDcxYjJh YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTM5OSw2ICszOTksMTIgQEAgdHlwZWRlZiBz dHJ1Y3QgVHlwZUNhc3QKIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBv ciAtMSBpZiB1bmtub3duICovCiB9IFR5cGVDYXN0OwogCit0eXBlZGVmIHN0cnVjdCBTYWZlVHlw ZUNhc3QKK3sKKwlOb2RlVGFnCQl0eXBlOworCU5vZGUJCSpjYXN0OworCU5vZGUJICAgCSpleHBy OwkJLyogZGVmYXVsdCBleHByICovCit9IFNhZmVUeXBlQ2FzdDsKIC8qCiAgKiBDb2xsYXRlQ2xh dXNlIC0gYSBDT0xMQVRFIGV4cHJlc3Npb24KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCA2 ZGZjYTNjYjM1Li5kMmRmN2MyODkzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaApAQCAtNzU2LDYgKzc1 Niw0MSBAQCB0eXBlZGVmIGVudW0gQ29lcmNpb25Gb3JtCiAJQ09FUkNFX1NRTF9TWU5UQVgsCQkJ LyogZGlzcGxheSB3aXRoIFNRTC1tYW5kYXRlZCBzcGVjaWFsIHN5bnRheCAqLwogfSBDb2VyY2lv bkZvcm07CiAKKy8qCisgKiBTYWZlVHlwZUNhc3RFeHByIC0KKyAqCQlUcmFuc2Zvcm1lZCByZXBy ZXNlbnRhdGlvbiBvZgorICogQ0FTVChleHByIEFTIHR5cGVuYW1lIERFRkFVTFQgZXhwcjIgT04g RVJST1IpCisgKiBDQVNUKGV4cHIgQVMgdHlwZW5hbWUgTlVMTCBPTiBFUlJPUikKKyAqLwordHlw ZWRlZiBzdHJ1Y3QgU2FmZVR5cGVDYXN0RXhwcgoreworCXBnX25vZGVfYXR0cihjdXN0b21fcXVl cnlfanVtYmxlKQorCisJRXhwcgkJeHByOworCisJLyogdHJhbnNmb3JtZWQgZXhwcmVzc2lvbiBi ZWluZyBjYXN0ZWQgKi8KKwlOb2RlCSAgICpzb3VyY2VfZXhwcjsKKworCS8qCisJICogVGhlIHRy YW5zZm9ybWVkIGNhc3QgZXhwcmVzc2lvbjsgdGhpcyBtYXkgYmUgTlVMTCBpZiB0aGUgdHdvIHR5 cGVzIGNhbid0CisJICogYmUgY2FzdC4KKwkgKi8KKwlOb2RlCSAgICpjYXN0X2V4cHI7CisKKwkv KiBGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBpZiB0aGUgY2FzdCBldmFsdWF0 aW9uIGZhaWxzLiAqLworCU5vZGUJICAgKmRlZmF1bHRfZXhwcjsKKworCS8qIGNhc3QgcmVzdWx0 IGRhdGEgdHlwZSAqLworCU9pZAkJCXJlc3VsdHR5cGUgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOworCisJLyogY2FzdCByZXN1bHQgZGF0YSB0eXBlIHR5cG1vZCAodXN1YWxseSAt MSkgKi8KKwlpbnQzMgkJcmVzdWx0dHlwbW9kIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKKworCS8qIGNhc3QgcmVzdWx0IGRhdGEgdHlwZSBjb2xsYXRpb24gKHVzdWFsbHkgLTEp ICovCisJT2lkCQkJcmVzdWx0Y29sbGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3Jl KTsKKworfSBTYWZlVHlwZUNhc3RFeHByOworCiAvKgogICogRnVuY0V4cHIgLSBleHByZXNzaW9u IG5vZGUgZm9yIGEgZnVuY3Rpb24gY2FsbAogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV90eXBlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdHlwZS5oCmluZGV4 IDBkOTE5ZDhiZmEuLjEyMzgxYWVkNjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV90eXBlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3R5cGUuaApAQCAtNDcs NiArNDcsOCBAQCBleHRlcm4gY2hhciAqdHlwZVR5cGVOYW1lKFR5cGUgdCk7CiBleHRlcm4gT2lk CXR5cGVUeXBlUmVsaWQoVHlwZSB0eXApOwogZXh0ZXJuIE9pZAl0eXBlVHlwZUNvbGxhdGlvbihU eXBlIHR5cCk7CiBleHRlcm4gRGF0dW0gc3RyaW5nVHlwZURhdHVtKFR5cGUgdHAsIGNoYXIgKnN0 cmluZywgaW50MzIgYXR0dHlwbW9kKTsKK2V4dGVybiBib29sIHN0cmluZ1R5cGVEYXR1bVNhZmUo VHlwZSB0cCwgY2hhciAqc3RyaW5nLCBpbnQzMiBhdHR0eXBtb2QsCisJCQkJCQkJCURhdHVtICpy ZXN1bHQpOwogCiBleHRlcm4gT2lkCXR5cGVpZFR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CiBleHRl cm4gT2lkCXR5cGVPckRvbWFpblR5cGVSZWxpZChPaWQgdHlwZV9pZCk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nhc3Qub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jYXN0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hN2Q3 ZDZkNjc0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jYXN0 Lm91dApAQCAtMCwwICsxLDIzMCBAQAorU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7CistLSBD QVNUIERFRkFVTFQgT04gQ09OVkVSU0lPTiBFUlJPUgorVkFMVUVTIChDQVNUKCdlcnJvcicgQVMg aW50ZWdlciBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7IC0tZXJyb3IKK0VSUk9SOiAgaW52 YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVycm9yIgorTElORSAxOiBWQUxV RVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIEVSUk9SIE9OIENPTlZFUlNJT04gRVJST1IpKTsK KyAgICAgICAgICAgICAgICAgICAgIF4KK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSk7CisgY29sdW1uMSAKKy0tLS0tLS0tLQorICAgICAg ICAKKygxIHJvdykKKworVkFMVUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBERUZBVUxUIDQy IE9OIENPTlZFUlNJT04gRVJST1IpKTsKKyBjb2x1bW4xIAorLS0tLS0tLS0tCisgICAgICA0Mgor KDEgcm93KQorCitTRUxFQ1QgQ0FTVCgxIEFTIGRhdGUgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpOworIGRhdGUgCistLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIENBU1QoMTo6 bnVtZXJpYyBBUyBtb25leSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CitFUlJP UjogIGNhbm5vdCBjYXN0IHR5cGUgbnVtZXJpYyB0byBtb25leSB3aGVuIENBU1QgLi4uIE9OIENP TlZFUlNJT04gRVJST1IgY2xhdXNlIGJlaGF2aW9yIGlzIG5vdCBFUlJPUgorTElORSAxOiBTRUxF Q1QgQ0FTVCgxOjpudW1lcmljIEFTIG1vbmV5IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEUu Li4KKyAgICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcmV0 X2ludDgoKSBSRVRVUk5TIGJpZ2ludCBBUworJCQKK0JFR0lOIFJFVFVSTiAyMTQ3NDgzNjQ4OyBF TkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CitTRUxFQ1QgQ0FTVCgnYScgYXMg aW50IERFRkFVTFQgcmV0X2ludDgoKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorRVJS T1I6ICBpbnRlZ2VyIG91dCBvZiByYW5nZQorU0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVM VCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVycm9yCitFUlJPUjogIGNhbm5v dCBjYXN0IG9uX2Vycm9yIGRlZmF1bHQgZXhwcmVzc2lvbiB0byB0eXBlIGRhdGUKK0xJTkUgMTog U0VMRUNUIENBU1QoJ2EnIGFzIGRhdGUgREVGQVVMVCByZXRfaW50OCgpIE9OIENPTlZFUlNJT04g RVJSLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gdGVz dCBhcnJheSBjb2VyY2UKK1NFTEVDVCBDQVNUKCd7MTIzLGFiYyw0NTZ9JyBBUyBpbnRlZ2VyW10g REVGQVVMVCAney03ODl9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgaW50NCAgCistLS0tLS0t LQorIHstNzg5fQorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgnezIzNCxkZWYsNTY3fSc6OnRleHRb XSBBUyBpbnRlZ2VyW10gREVGQVVMVCAney0xMDExfScgT04gQ09OVkVSU0lPTiBFUlJPUik7Cisg IGludDQgICAKKy0tLS0tLS0tLQorIHstMTAxMX0KKygxIHJvdykKKworU0VMRUNUIENBU1QoQVJS QVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMgSU5URUdFUltdIERFRkFVTFQgJ3sxLDJ9JyBP TiBDT05WRVJTSU9OIEVSUk9SKTsKKyBhcnJheSAKKy0tLS0tLS0KKyB7MSwyfQorKDEgcm93KQor CitTRUxFQ1QgQ0FTVChBUlJBWVtbJzEnLCAnMiddLCBbJ3RocmVlJywgJ2EnXV0gQVMgdGV4dFtd IERFRkFVTFQgJ3syMSwyMn0nIE9OIENPTlZFUlNJT04gRVJST1IpOworICAgICAgIGFycmF5ICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHt7MSwyfSx7dGhyZWUsYX19CisoMSByb3cpCisK Ky0tIHRlc3QgdmFsaWQgREVGQVVMVCBleHByZXNzaW9uIGZvciBDQVNUID0gT04gQ09OVkVSU0lP TiBFUlJPUgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcmV0X3NldGludCgpIFJFVFVSTlMg U0VUT0YgaW50ZWdlciBBUworJCQKK0JFR0lOIFJFVFVSTiBRVUVSWSBFWEVDVVRFICdzZWxlY3Qg MSB1bmlvbiBhbGwgc2VsZWN0IDEnOyBFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFC TEU7CitDUkVBVEUgVEFCTEUgdGNhc3QoYSB0ZXh0W10sIGIgaW50IEdFTkVSQVRFRCBCWSBERUZB VUxUIEFTIElERU5USVRZLCBjIHRleHQgZGVmYXVsdCAnMScpOworSU5TRVJUIElOVE8gdGNhc3Qg VkFMVUVTICgnezEyfScpLCAoJ3sxLGEsIGJ9JyksICgne3sxLDJ9LCB7YyxkfX0nKSwgKCd7MTN9 Jyk7CitTRUxFQ1QgQ0FTVCgnYScgYXMgaW50IERFRkFVTFQgcmV0X3NldGludCgpIE9OIENPTlZF UlNJT04gRVJST1IpIEZST00gdGNhc3Q7IC0tZXJyb3IKK0VSUk9SOiAgREVGQVVMVCBleHByZXNz aW9uIG11c3Qgbm90IHJldHVybiBhIHNldAorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYScgYXMgaW50 IERFRkFVTFQgcmV0X3NldGludCgpIE9OIENPTlZFUlNJT04gRVIuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVM VCBzdW0oMSkgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK0VSUk9SOiAgREVGQVVMVCBl eHByZXNzaW9uIGZ1bmN0aW9uIG11c3QgYmUgYSBub3JtYWwgZnVuY3Rpb24KK0xJTkUgMTogU0VM RUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBDQVNUKCdh JyBhcyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVy cm9yCitFUlJPUjogIERFRkFVTFQgZXhwcmVzc2lvbiBmdW5jdGlvbiBtdXN0IGJlIGEgbm9ybWFs IGZ1bmN0aW9uCitMSU5FIDE6IFNFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCBzdW0oMSkg b3ZlcigpIE9OIENPTlZFUlNJT04gRS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdiJyBPTiBDT05WRVJT SU9OIEVSUk9SKTsgLS1lcnJvcgorRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlw ZSBpbnRlZ2VyOiAiYiIKK0xJTkUgMTogU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUICdi JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK1NFTEVDVCBDQVNUKHQgQVMgdGV4dFtdIERFRkFVTFQgJ3syMSwyMiwgJyB8fCBi IHx8ICd9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7CisgICAgIHQgICAg IAorLS0tLS0tLS0tLS0KKyB7MjEsMjIsMX0KKyB7MjEsMjIsMn0KKyB7MjEsMjIsM30KKyB7MjEs MjIsNH0KKyg0IHJvd3MpCisKK1NFTEVDVCBDQVNUKHQuYSBBUyBpbnRbXSBERUZBVUxUICd7MjEs MjJ9Jzo6aW50W10gfHwgYiBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7Cisg ICAgIGEgICAgIAorLS0tLS0tLS0tLS0KKyB7MTJ9CisgezIxLDIyLDJ9CisgezIxLDIyLDN9Cisg ezEzfQorKDQgcm93cykKKworLS0gdGVzdCB3aXRoIGRvbWFpbgorQ1JFQVRFIERPTUFJTiBkX2lu dDQyIGFzIGludCBjaGVjayAodmFsdWUgPSA0MikgTk9UIE5VTEw7CitDUkVBVEUgRE9NQUlOIGRf Y2hhcjNfbm90X251bGwgYXMgY2hhcigzKSBOT1QgTlVMTDsKK0NSRUFURSBUWVBFIGNvbXBfZG9t YWluX3dpdGhfdHlwbW9kIEFTIChhIGRfY2hhcjNfbm90X251bGwsIGIgaW50KTsKK1NFTEVDVCBD QVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0MSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1lcnJv cgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGRfaW50NDIgdmlvbGF0ZXMgY2hlY2sgY29uc3Ry YWludCAiZF9pbnQ0Ml9jaGVjayIKK1NFTEVDVCBDQVNUKDExIEFTIGRfaW50NDIgREVGQVVMVCA0 MiBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1vaworIGRfaW50NDIgCistLS0tLS0tLS0KKyAgICAg IDQyCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZBVUxUIE5VTEwg T04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK0VSUk9SOiAgZG9tYWluIGRfaW50NDIgZG9l cyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBDQVNUKE5VTEwgQVMgZF9pbnQ0MiBERUZB VUxUIDQyIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLW9rCisgZF9pbnQ0MiAKKy0tLS0tLS0tLQor ICAgICAgNDIKKygxIHJvdykKKworU0VMRUNUIENBU1QoJygsNDIpJyBBUyBjb21wX2RvbWFpbl93 aXRoX3R5cG1vZCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUik7CisgY29tcF9kb21h aW5fd2l0aF90eXBtb2QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCBDQVNUKCcoTlVMTCw0MiknIEFTIGNvbXBfZG9tYWluX3dpdGhfdHlwbW9kIERFRkFV TFQgJygxLDIpJyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKKyBjb21wX2RvbWFpbl93aXRoX3R5cG1v ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoIjEgICIsMikKKygxIHJvdykKKworU0VM RUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAn KDEyMzQsMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVycm9yCitFUlJPUjogIHZhbHVlIHRv byBsb25nIGZvciB0eXBlIGNoYXJhY3RlcigzKQorTElORSAxOiAuLi5TVCgnKE5VTEwsNDIpJyBB UyBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBERUZBVUxUICcoMTIzNCwyKScuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LXRlc3QgY2FzdCBudW1lcmljIHZhbHVlIHdpdGggZnJhY3Rpb24gdG8gYW5vdGhlciBudW1lcmlj IHZhbHVlCitDUkVBVEUgVEFCTEUgc2FmZWNhc3QoY29sMSBmbG9hdDQsIGNvbDIgZmxvYXQ4LCBj b2wzIG51bWVyaWMsIGNvbDQgbnVtZXJpY1tdKTsKK0lOU0VSVCBJTlRPIHNhZmVjYXN0IFZBTFVF UygnMTEuMTIzNCcsICcxMS4xMjM0JywgJzExLjEyMzQnLCAnezExLjEyMzR9Jzo6bnVtZXJpY1td KTsKK0lOU0VSVCBJTlRPIHNhZmVjYXN0IFZBTFVFUygnaW5mJywgJ2luZicsICdpbmYnLCAnezEx LjEyMzQsIDEyLCBpbmYsIE5hTn0nOjpudW1lcmljW10pOworSU5TRVJUIElOVE8gc2FmZWNhc3Qg VkFMVUVTKCctaW5mJywgJy1pbmYnLCAnLWluZicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5hTn0n OjpudW1lcmljW10pOworSU5TRVJUIElOVE8gc2FmZWNhc3QgVkFMVUVTKCdOYU4nLCAnTmFOJywg J05hTicsICd7MTEuMTIzNCwgMTIsIC1pbmYsIE5hTn0nOjpudW1lcmljW10pOworU0VMRUNUIGNv bDEgYXMgZmxvYXQ0LAorICAgICAgIENBU1QoY29sMSBBUyBpbnQyIERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMSBBUyBpbnQ0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENBU1Qo Y29sMSBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ4 LAorICAgICAgIENBU1QoY29sMSBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgYXMgZmxvYXQ4IERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChjb2wx IGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVy aWMsCisgICAgICAgQ0FTVChjb2wxIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gc2FmZWNhc3Q7CisgIGZs b2F0NCAgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgICAgdG9f ZmxvYXQ4ICAgICB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxlIAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDExLjEyMzQgfCAgICAgIDEx IHwgICAgICAxMSB8ICAgICAgMTEgfCAgIDExLjEyMzQgfCAxMS4xMjMzOTk3MzQ0OTcxIHwgICAg MTEuMTIzNCB8ICAgICAgICAgICAgIDExLjEKKyAgSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAg ICB8ICAgICAgICAgfCAgSW5maW5pdHkgfCAgICAgICAgIEluZmluaXR5IHwgICBJbmZpbml0eSB8 ICAgICAgICAgICAgICAgICAKKyAtSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAg ICAgfCAtSW5maW5pdHkgfCAgICAgICAgLUluZmluaXR5IHwgIC1JbmZpbml0eSB8ICAgICAgICAg ICAgICAgICAKKyAgICAgICBOYU4gfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAg ICBOYU4gfCAgICAgICAgICAgICAgTmFOIHwgICAgICAgIE5hTiB8ICAgICAgICAgICAgICBOYU4K Kyg0IHJvd3MpCisKK1NFTEVDVCBjb2wyIGFzIGZsb2F0OCwKKyAgICAgICBDQVNUKGNvbDIgQVMg aW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAg ICBDQVNUKGNvbDIgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMg dG9faW50NCwKKyAgICAgICBDQVNUKGNvbDIgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDIgYXMgZmxvYXQ0IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChj b2wyIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxv YXQ4LAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMiBhcyBudW1lcmljKDEw LDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxl CitGUk9NIHNhZmVjYXN0OworICBmbG9hdDggICB8IHRvX2ludDIgfCB0b19pbnQ0IHwgdG9faW50 OCB8IHRvX2Zsb2F0NCB8IHRvX2Zsb2F0OCB8IHRvX251bWVyaWMgfCB0b19udW1lcmljX3NjYWxl IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgMTEuMTIzNCB8 ICAgICAgMTEgfCAgICAgIDExIHwgICAgICAxMSB8ICAgMTEuMTIzNCB8ICAgMTEuMTIzNCB8ICAg IDExLjEyMzQgfCAgICAgICAgICAgICAxMS4xCisgIEluZmluaXR5IHwgICAgICAgICB8ICAgICAg ICAgfCAgICAgICAgIHwgIEluZmluaXR5IHwgIEluZmluaXR5IHwgICBJbmZpbml0eSB8ICAgICAg ICAgICAgICAgICAKKyAtSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAt SW5maW5pdHkgfCAtSW5maW5pdHkgfCAgLUluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorICAg ICAgIE5hTiB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgIE5hTiB8ICAgICAg IE5hTiB8ICAgICAgICBOYU4gfCAgICAgICAgICAgICAgTmFOCisoNCByb3dzKQorCitTRUxFQ1Qg Y29sMyBhcyBudW1lcmljLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQyIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQyLAorICAgICAgIENBU1QoY29sMyBBUyBpbnQ0 IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19pbnQ0LAorICAgICAgIENB U1QoY29sMyBhcyBpbnQ4IERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19p bnQ4LAorICAgICAgIENBU1QoY29sMyBhcyBmbG9hdDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJ T04gRVJST1IpIGFzIHRvX2Zsb2F0NCwKKyAgICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ4IERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDgsCisgICAgICAgQ0FTVChj b2wzIGFzIG51bWVyaWMgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251 bWVyaWMsCisgICAgICAgQ0FTVChjb2wzIGFzIG51bWVyaWMoMTAsMSkgREVGQVVMVCBOVUxMIE9O IENPTlZFUlNJT04gRVJST1IpIGFzIHRvX251bWVyaWNfc2NhbGUKK0ZST00gc2FmZWNhc3Q7Cisg IG51bWVyaWMgIHwgdG9faW50MiB8IHRvX2ludDQgfCB0b19pbnQ4IHwgdG9fZmxvYXQ0IHwgdG9f ZmxvYXQ4IHwgdG9fbnVtZXJpYyB8IHRvX251bWVyaWNfc2NhbGUgCistLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAxMS4xMjM0IHwgICAgICAxMSB8ICAgICAgMTEg fCAgICAgIDExIHwgICAxMS4xMjM0IHwgICAxMS4xMjM0IHwgICAgMTEuMTIzNCB8ICAgICAgICAg ICAgIDExLjEKKyAgSW5maW5pdHkgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgSW5m aW5pdHkgfCAgSW5maW5pdHkgfCAgIEluZmluaXR5IHwgICAgICAgICAgICAgICAgIAorIC1JbmZp bml0eSB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IC1JbmZpbml0eSB8IC1JbmZpbml0 eSB8ICAtSW5maW5pdHkgfCAgICAgICAgICAgICAgICAgCisgICAgICAgTmFOIHwgICAgICAgICB8 ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgTmFOIHwgICAgICAgTmFOIHwgICAgICAgIE5hTiB8 ICAgICAgICAgICAgICBOYU4KKyg0IHJvd3MpCisKK1NFTEVDVCBjb2w0IGFzIG51bV9hcnIsCisg ICAgICAgQ0FTVChjb2w0IEFTIGludDJbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgaW50MmFyciwKKyAgICAgICBDQVNUKGNvbDQgQVMgaW50NFtdIERFRkFVTFQgTlVMTCBP TiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ0YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBpbnQ4 W10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGludDhhcnIsCisgICAgICAg Q0FTVChjb2w0IGFzIGZsb2F0NFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyBmNGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgZmxvYXQ4W10gREVGQVVMVCBOVUxMIE9OIENP TlZFUlNJT04gRVJST1IpIGFzIGY4YXJyLAorICAgICAgIENBU1QoY29sNCBhcyBudW1lcmljKDEw LDEpW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIG51bWFycgorRlJPTSBz YWZlY2FzdDsKKyAgICAgICAgICBudW1fYXJyICAgICAgICAgICB8IGludDJhcnIgfCBpbnQ0YXJy IHwgaW50OGFyciB8ICAgICAgICAgICBmNGFyciAgICAgICAgICAgIHwgICAgICAgICAgIGY4YXJy ICAgICAgICAgICAgfCBudW1hcnIgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIHsxMS4xMjM0fSAgICAgICAgICAg ICAgICAgIHwgezExfSAgICB8IHsxMX0gICAgfCB7MTF9ICAgIHwgezExLjEyMzR9ICAgICAgICAg ICAgICAgICAgfCB7MTEuMTIzNH0gICAgICAgICAgICAgICAgICB8IHsxMS4xfQorIHsxMS4xMjM0 LDEyLEluZmluaXR5LE5hTn0gIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgezExLjEy MzQsMTIsSW5maW5pdHksTmFOfSAgfCB7MTEuMTIzNCwxMixJbmZpbml0eSxOYU59ICB8IAorIHsx MS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwg ezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCB7MTEuMTIzNCwxMiwtSW5maW5pdHksTmFOfSB8 IAorIHsxMS4xMjM0LDEyLC1JbmZpbml0eSxOYU59IHwgICAgICAgICB8ICAgICAgICAgfCAgICAg ICAgIHwgezExLjEyMzQsMTIsLUluZmluaXR5LE5hTn0gfCB7MTEuMTIzNCwxMiwtSW5maW5pdHks TmFOfSB8IAorKDQgcm93cykKKworLS0gdGVzdCBkZXBhcnNlCitDUkVBVEUgVklFVyBzYWZlY2Fz dHZpZXcgQVMKK1NFTEVDVCBDQVNUKCcxMjM0JyBhcyBjaGFyKDMpIERFRkFVTFQgLTExMTEgT04g Q09OVkVSU0lPTiBFUlJPUiksCisgICAgICAgQ0FTVCgxIGFzIGRhdGUgREVGQVVMVCAoKG5vdygp OjpkYXRlICsgcmFuZG9tKG1pbj0+MSwgbWF4PT4xOjppbnQpKSkgT04gQ09OVkVSU0lPTiBFUlJP UikgYXMgc2FmZWNhc3QsCisgICAgICAgQ0FTVChBUlJBWVtbJzEnXSwgWyd0aHJlZSddLFsnYSdd XSBBUyBJTlRFR0VSW10gREVGQVVMVCAnezEsMn0nIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGNh c3QxLAorICAgICAgIENBU1QoQVJSQVlbWycxJywgJzInXSwgWyd0aHJlZScsICdhJ11dIEFTIHRl eHRbXSBERUZBVUxUICd7MjEsMjJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MjsKK1xz diBzYWZlY2FzdHZpZXcKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnNhZmVjYXN0dmll dyBBUworIFNFTEVDVCBDQVNUKCcxMjM0JyBBUyBjaGFyYWN0ZXIoMykgREVGQVVMVCAnLTExMTEn OjppbnRlZ2VyOjpjaGFyYWN0ZXIoMykgT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgYnBjaGFyLAor ICAgIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgbm93KCk6OmRhdGUgKyByYW5kb20obWluID0+IDEs IG1heCA9PiAxKSBPTiBDT05WRVJTSU9OIEVSUk9SKSBBUyBzYWZlY2FzdCwKKyAgICBDQVNUKEFS UkFZW0FSUkFZWycxJ10sIEFSUkFZWyd0aHJlZSddLCBBUlJBWVsnYSddXSBBUyBpbnRlZ2VyW10g REVGQVVMVCAnezEsMn0nOjppbnRlZ2VyW10gT04gQ09OVkVSU0lPTiBFUlJPUikgQVMgY2FzdDEs CisgICAgQ0FTVChBUlJBWVtBUlJBWVsnMSc6OnRleHQsICcyJzo6dGV4dF0sIEFSUkFZWyd0aHJl ZSc6OnRleHQsICdhJzo6dGV4dF1dIEFTIHRleHRbXSBERUZBVUxUICd7MjEsMjJ9Jzo6dGV4dFtd IE9OIENPTlZFUlNJT04gRVJST1IpIEFTIGNhc3QyCitDUkVBVEUgSU5ERVggY2FzdF9lcnJvcl9p ZHggIE9OIHRjYXN0KChjYXN0KGMgYXMgaW50IERFRkFVTFQgcmFuZG9tKG1pbj0+MSwgbWF4PT4x KSBPTiBDT05WRVJTSU9OIEVSUk9SKSkpOyAtLWVycm9yCitFUlJPUjogIGZ1bmN0aW9ucyBpbiBp bmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorUkVTRVQgZXh0cmFfZmxv YXRfZGlnaXRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggYTQyNGJlMmE2Yi4u N2MzZWQ1NWY5MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC04MSw3ICs4MSw3 IEBAIHRlc3Q6IGJyaW5fYmxvb20gYnJpbl9tdWx0aQogdGVzdDogY3JlYXRlX3RhYmxlX2xpa2Ug YWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRvciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNj X2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3JmIHRpZCB0aWRzY2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRl LnV0ZjggY29sbGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0ZV9yb2xlIHdpdGhv dXRfb3ZlcmxhcHMgZ2VuZXJhdGVkX3ZpcnR1YWwKIAogIyBjb2xsYXRlLmxpbnV4LnV0ZjggYW5k IGNvbGxhdGUuaWN1LnV0ZjggdGVzdHMgY2Fubm90IGJlIHJ1biBpbiBwYXJhbGxlbCB3aXRoIGVh Y2ggb3RoZXIKLXRlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9jcm9zc3RhYiBwc3FsX3BpcGVsaW5lIGFt dXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2luMTI1 MgordGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIHBzcWxfcGlwZWxpbmUgYW11dGlscyBz dGF0c19leHQgY29sbGF0ZS5saW51eC51dGY4IGNvbGxhdGUud2luZG93cy53aW4xMjUyIGNhc3QK IAogIyAtLS0tLS0tLS0tCiAjIFJ1biB0aGVzZSBhbG9uZSBzbyB0aGV5IGRvbid0IHJ1biBvdXQg b2YgcGFyYWxsZWwgd29ya2VycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY2Fz dC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jYXN0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi45NWE4MTNlNWZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY2FzdC5zcWwKQEAgLTAsMCArMSwxMDkgQEAKK1NFVCBleHRyYV9mbG9h dF9kaWdpdHMgPSAwOworCistLSBDQVNUIERFRkFVTFQgT04gQ09OVkVSU0lPTiBFUlJPUgorVkFM VUVTIChDQVNUKCdlcnJvcicgQVMgaW50ZWdlciBFUlJPUiBPTiBDT05WRVJTSU9OIEVSUk9SKSk7 IC0tZXJyb3IKK1ZBTFVFUyAoQ0FTVCgnZXJyb3InIEFTIGludGVnZXIgTlVMTCBPTiBDT05WRVJT SU9OIEVSUk9SKSk7CitWQUxVRVMgKENBU1QoJ2Vycm9yJyBBUyBpbnRlZ2VyIERFRkFVTFQgNDIg T04gQ09OVkVSU0lPTiBFUlJPUikpOworU0VMRUNUIENBU1QoMSBBUyBkYXRlIERFRkFVTFQgTlVM TCBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKDE6Om51bWVyaWMgQVMgbW9uZXkg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworCitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiByZXRfaW50OCgpIFJFVFVSTlMgYmlnaW50IEFTCiskJAorQkVHSU4gUkVUVVJOIDIx NDc0ODM2NDg7IEVORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRTsKKworU0VMRUNU IENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHJldF9pbnQ4KCkgT04gQ09OVkVSU0lPTiBFUlJPUik7 IC0tZXJyb3IKK1NFTEVDVCBDQVNUKCdhJyBhcyBkYXRlIERFRkFVTFQgcmV0X2ludDgoKSBPTiBD T05WRVJTSU9OIEVSUk9SKTsgLS1lcnJvcgorCistLSB0ZXN0IGFycmF5IGNvZXJjZQorU0VMRUNU IENBU1QoJ3sxMjMsYWJjLDQ1Nn0nIEFTIGludGVnZXJbXSBERUZBVUxUICd7LTc4OX0nIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJ3syMzQsZGVmLDU2N30nOjp0ZXh0W10gQVMg aW50ZWdlcltdIERFRkFVTFQgJ3stMTAxMX0nIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNU IENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMgSU5URUdFUltdIERFRkFVTFQg J3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKTsKK1NFTEVDVCBDQVNUKEFSUkFZW1snMScsICcy J10sIFsndGhyZWUnLCAnYSddXSBBUyB0ZXh0W10gREVGQVVMVCAnezIxLDIyfScgT04gQ09OVkVS U0lPTiBFUlJPUik7CisKKy0tIHRlc3QgdmFsaWQgREVGQVVMVCBleHByZXNzaW9uIGZvciBDQVNU ID0gT04gQ09OVkVSU0lPTiBFUlJPUgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcmV0X3Nl dGludCgpIFJFVFVSTlMgU0VUT0YgaW50ZWdlciBBUworJCQKK0JFR0lOIFJFVFVSTiBRVUVSWSBF WEVDVVRFICdzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDEnOyBFTkQ7CiskJAorTEFOR1VBR0Ug cGxwZ3NxbCBJTU1VVEFCTEU7CisKK0NSRUFURSBUQUJMRSB0Y2FzdChhIHRleHRbXSwgYiBpbnQg R0VORVJBVEVEIEJZIERFRkFVTFQgQVMgSURFTlRJVFksIGMgdGV4dCBkZWZhdWx0ICcxJyk7CitJ TlNFUlQgSU5UTyB0Y2FzdCBWQUxVRVMgKCd7MTJ9JyksICgnezEsYSwgYn0nKSwgKCd7ezEsMn0s IHtjLGR9fScpLCAoJ3sxM30nKTsKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCByZXRf c2V0aW50KCkgT04gQ09OVkVSU0lPTiBFUlJPUikgRlJPTSB0Y2FzdDsgLS1lcnJvcgorU0VMRUNU IENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1l cnJvcgorU0VMRUNUIENBU1QoJ2EnIGFzIGludCBERUZBVUxUIHN1bSgxKSBvdmVyKCkgT04gQ09O VkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKCdhJyBhcyBpbnQgREVGQVVMVCAn YicgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKKworU0VMRUNUIENBU1QodCBBUyB0ZXh0 W10gREVGQVVMVCAnezIxLDIyLCAnIHx8IGIgfHwgJ30nIE9OIENPTlZFUlNJT04gRVJST1IpIEZS T00gdGNhc3QgYXMgdDsKK1NFTEVDVCBDQVNUKHQuYSBBUyBpbnRbXSBERUZBVUxUICd7MjEsMjJ9 Jzo6aW50W10gfHwgYiBPTiBDT05WRVJTSU9OIEVSUk9SKSBGUk9NIHRjYXN0IGFzIHQ7CisKKy0t IHRlc3Qgd2l0aCBkb21haW4KK0NSRUFURSBET01BSU4gZF9pbnQ0MiBhcyBpbnQgY2hlY2sgKHZh bHVlID0gNDIpIE5PVCBOVUxMOworQ1JFQVRFIERPTUFJTiBkX2NoYXIzX25vdF9udWxsIGFzIGNo YXIoMykgTk9UIE5VTEw7CitDUkVBVEUgVFlQRSBjb21wX2RvbWFpbl93aXRoX3R5cG1vZCBBUyAo YSBkX2NoYXIzX25vdF9udWxsLCBiIGludCk7CitTRUxFQ1QgQ0FTVCgxMSBBUyBkX2ludDQyIERF RkFVTFQgNDEgT04gQ09OVkVSU0lPTiBFUlJPUik7IC0tZXJyb3IKK1NFTEVDVCBDQVNUKDExIEFT IGRfaW50NDIgREVGQVVMVCA0MiBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1vaworU0VMRUNUIENB U1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKTsgLS1l cnJvcgorU0VMRUNUIENBU1QoTlVMTCBBUyBkX2ludDQyIERFRkFVTFQgNDIgT04gQ09OVkVSU0lP TiBFUlJPUik7IC0tb2sKK1NFTEVDVCBDQVNUKCcoLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90 eXBtb2QgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhO VUxMLDQyKScgQVMgY29tcF9kb21haW5fd2l0aF90eXBtb2QgREVGQVVMVCAnKDEsMiknIE9OIENP TlZFUlNJT04gRVJST1IpOworU0VMRUNUIENBU1QoJyhOVUxMLDQyKScgQVMgY29tcF9kb21haW5f d2l0aF90eXBtb2QgREVGQVVMVCAnKDEyMzQsMiknIE9OIENPTlZFUlNJT04gRVJST1IpOyAtLWVy cm9yCisKKy0tdGVzdCBjYXN0IG51bWVyaWMgdmFsdWUgd2l0aCBmcmFjdGlvbiB0byBhbm90aGVy IG51bWVyaWMgdmFsdWUKK0NSRUFURSBUQUJMRSBzYWZlY2FzdChjb2wxIGZsb2F0NCwgY29sMiBm bG9hdDgsIGNvbDMgbnVtZXJpYywgY29sNCBudW1lcmljW10pOworSU5TRVJUIElOVE8gc2FmZWNh c3QgVkFMVUVTKCcxMS4xMjM0JywgJzExLjEyMzQnLCAnMTEuMTIzNCcsICd7MTEuMTIzNH0nOjpu dW1lcmljW10pOworSU5TRVJUIElOVE8gc2FmZWNhc3QgVkFMVUVTKCdpbmYnLCAnaW5mJywgJ2lu ZicsICd7MTEuMTIzNCwgMTIsIGluZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyBz YWZlY2FzdCBWQUxVRVMoJy1pbmYnLCAnLWluZicsICctaW5mJywgJ3sxMS4xMjM0LCAxMiwgLWlu ZiwgTmFOfSc6Om51bWVyaWNbXSk7CitJTlNFUlQgSU5UTyBzYWZlY2FzdCBWQUxVRVMoJ05hTics ICdOYU4nLCAnTmFOJywgJ3sxMS4xMjM0LCAxMiwgLWluZiwgTmFOfSc6Om51bWVyaWNbXSk7CisK K1NFTEVDVCBjb2wxIGFzIGZsb2F0NCwKKyAgICAgICBDQVNUKGNvbDEgQVMgaW50MiBERUZBVUxU IE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAgICAgICBDQVNUKGNvbDEg QVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50NCwKKyAg ICAgICBDQVNUKGNvbDEgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDEgYXMgZmxvYXQ0IERFRkFVTFQgTlVMTCBPTiBD T05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FTVChjb2wxIGFzIGZsb2F0 OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ4LAorICAgICAg IENBU1QoY29sMSBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBh cyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMSBhcyBudW1lcmljKDEwLDEpIERFRkFVTFQg TlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3NjYWxlCitGUk9NIHNhZmVj YXN0OworCitTRUxFQ1QgY29sMiBhcyBmbG9hdDgsCisgICAgICAgQ0FTVChjb2wyIEFTIGludDIg REVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2ludDIsCisgICAgICAgQ0FT VChjb2wyIEFTIGludDQgREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2lu dDQsCisgICAgICAgQ0FTVChjb2wyIGFzIGludDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04g RVJST1IpIGFzIHRvX2ludDgsCisgICAgICAgQ0FTVChjb2wyIGFzIGZsb2F0NCBERUZBVUxUIE5V TEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fZmxvYXQ0LAorICAgICAgIENBU1QoY29sMiBh cyBmbG9hdDggREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHRvX2Zsb2F0OCwK KyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYyBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBF UlJPUikgYXMgdG9fbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDIgYXMgbnVtZXJpYygxMCwxKSBE RUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9fbnVtZXJpY19zY2FsZQorRlJP TSBzYWZlY2FzdDsKKworU0VMRUNUIGNvbDMgYXMgbnVtZXJpYywKKyAgICAgICBDQVNUKGNvbDMg QVMgaW50MiBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9faW50MiwKKyAg ICAgICBDQVNUKGNvbDMgQVMgaW50NCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikg YXMgdG9faW50NCwKKyAgICAgICBDQVNUKGNvbDMgYXMgaW50OCBERUZBVUxUIE5VTEwgT04gQ09O VkVSU0lPTiBFUlJPUikgYXMgdG9faW50OCwKKyAgICAgICBDQVNUKGNvbDMgYXMgZmxvYXQ0IERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19mbG9hdDQsCisgICAgICAgQ0FT VChjb2wzIGFzIGZsb2F0OCBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgdG9f ZmxvYXQ4LAorICAgICAgIENBU1QoY29sMyBhcyBudW1lcmljIERFRkFVTFQgTlVMTCBPTiBDT05W RVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljLAorICAgICAgIENBU1QoY29sMyBhcyBudW1lcmlj KDEwLDEpIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyB0b19udW1lcmljX3Nj YWxlCitGUk9NIHNhZmVjYXN0OworCitTRUxFQ1QgY29sNCBhcyBudW1fYXJyLAorICAgICAgIENB U1QoY29sNCBBUyBpbnQyW10gREVGQVVMVCBOVUxMIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIGlu dDJhcnIsCisgICAgICAgQ0FTVChjb2w0IEFTIGludDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVS U0lPTiBFUlJPUikgYXMgaW50NGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgaW50OFtdIERFRkFV TFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBpbnQ4YXJyLAorICAgICAgIENBU1QoY29s NCBhcyBmbG9hdDRbXSBERUZBVUxUIE5VTEwgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgZjRhcnIs CisgICAgICAgQ0FTVChjb2w0IGFzIGZsb2F0OFtdIERFRkFVTFQgTlVMTCBPTiBDT05WRVJTSU9O IEVSUk9SKSBhcyBmOGFyciwKKyAgICAgICBDQVNUKGNvbDQgYXMgbnVtZXJpYygxMCwxKVtdIERF RkFVTFQgTlVMTCBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBudW1hcnIKK0ZST00gc2FmZWNhc3Q7 CisKKy0tIHRlc3QgZGVwYXJzZQorQ1JFQVRFIFZJRVcgc2FmZWNhc3R2aWV3IEFTCitTRUxFQ1Qg Q0FTVCgnMTIzNCcgYXMgY2hhcigzKSBERUZBVUxUIC0xMTExIE9OIENPTlZFUlNJT04gRVJST1Ip LAorICAgICAgIENBU1QoMSBhcyBkYXRlIERFRkFVTFQgKChub3coKTo6ZGF0ZSArIHJhbmRvbSht aW49PjEsIG1heD0+MTo6aW50KSkpIE9OIENPTlZFUlNJT04gRVJST1IpIGFzIHNhZmVjYXN0LAor ICAgICAgIENBU1QoQVJSQVlbWycxJ10sIFsndGhyZWUnXSxbJ2EnXV0gQVMgSU5URUdFUltdIERF RkFVTFQgJ3sxLDJ9JyBPTiBDT05WRVJTSU9OIEVSUk9SKSBhcyBjYXN0MSwKKyAgICAgICBDQVNU KEFSUkFZW1snMScsICcyJ10sIFsndGhyZWUnLCAnYSddXSBBUyB0ZXh0W10gREVGQVVMVCAnezIx LDIyfScgT04gQ09OVkVSU0lPTiBFUlJPUikgYXMgY2FzdDI7Citcc3Ygc2FmZWNhc3R2aWV3CisK K0NSRUFURSBJTkRFWCBjYXN0X2Vycm9yX2lkeCAgT04gdGNhc3QoKGNhc3QoYyBhcyBpbnQgREVG QVVMVCByYW5kb20obWluPT4xLCBtYXg9PjEpIE9OIENPTlZFUlNJT04gRVJST1IpKSk7IC0tZXJy b3IKK1JFU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0czsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggODMxOTIwMzg1Ny4uYzIyZjNlZDllNiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAg LTI2NDgsNiArMjY0OCw5IEBAIFNUUkxFTgogU1YKIFNZTkNIUk9OSVpBVElPTl9CQVJSSUVSCiBT WVNURU1fSU5GTworU2FmZVR5cGVDYXN0CitTYWZlVHlwZUNhc3RFeHByCitTYWZlVHlwZUNhc3RT dGF0ZQogU2FtcGxlU2NhbgogU2FtcGxlU2NhbkdldFNhbXBsZVNpemVfZnVuY3Rpb24KIFNhbXBs ZVNjYW5TdGF0ZQotLSAKMi4zNC4xCgo= --000000000000dfa85e063b8049a5--