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.96) (envelope-from ) id 1vsnQw-000wAp-2w for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Feb 2026 19:42:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsnQv-00HayG-2F for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Feb 2026 19:42:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsnQu-00Hay6-1Y for pgsql-hackers@lists.postgresql.org; Wed, 18 Feb 2026 19:42:01 +0000 Received: from mail-qv1-xf41.google.com ([2607:f8b0:4864:20::f41]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsnQo-000000000WU-2Evf for pgsql-hackers@postgresql.org; Wed, 18 Feb 2026 19:41:59 +0000 Received: by mail-qv1-xf41.google.com with SMTP id 6a1803df08f44-89577f866d6so3035356d6.0 for ; Wed, 18 Feb 2026 11:41:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1771443714; x=1772048514; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=YPCXEeTy945t2BrLZ//HovvEsbeojqQwmyBHmFwTPlY=; b=FCBzuGzEBk8BIWyp+cV0v4vk+J8OMUnfYMYxhxGoJX2rEoYewYLXo2qWC+tnCFjvJ/ 8Ly9EnUNzLJC45oN0BNJBkzl2ziuTJTK16oSba3dLcjrjpWH9Pm6rcyCDA7qJCqN1WaB lNm0wIw2vLFZB8shJxo8916tD4UpOHSiyHVmywj/KDIl5IsYibp39A3sBgKNdzs1GwSS eERU8JZtWiRZ2C8IGQByO4figk/oCrgdh1kHiS7RRwlvU341F5PrU2sPDByQh+hMwny4 CwmrVlrngSQ5DDYG0rrlISGTASTOLSlYwiWEFuYfnFvZDpg1YgCeM13UzVhkmQCTTQCU Htiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771443714; x=1772048514; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YPCXEeTy945t2BrLZ//HovvEsbeojqQwmyBHmFwTPlY=; b=Oo+aA2MnFfGzHtzlU81xmu/CakDSVxV9HBSkfELN3dqUVl/VpspfBSJwa5jVHZhIC2 6MpOXBW0Zxp0y73b/EuXU0TFakcOfGYHC7avU9sj2CNbTIib0d7RDGjZD5JqcqfpnCjD K2GPgFNeTPzDe2DkSIEGIVT1HIRCC7hjjHeMOsQO0jpi142280QVnYZk35baohym3Jc9 ZXToWeEd4UAkY0z3i4YgrwzpOxviValtBeF/UVveCW+UH3OueVLkj5Fnc6W+L+C7dOE7 xWEmh9Hk4MSQEe79fIp0wtVoE9D1sCfTGkq1FB8ltTZUGtIp2RTvvaRZ+7JKKmHPWvNa rp0g== X-Gm-Message-State: AOJu0YyaTjlfbGJazo8FJ+HwryEQxU6j+1aWDE+Blj40ZC4L2XqPv1sy Ns0uPiTo9pPpGVRBRLgynXAsG/lwsqcMXo3y7wK5zdput//IKPVUEeo2/ugymOO8ZMI= X-Gm-Gg: AZuq6aKQ6+TNFxxT9UMt8FymsZ1ExJFVKH24J5jdAWW6yoEZ9KYIOmGRdQoJfbYRzPD pFLDOajYKgEwvQfOCAlgfsO7Bzk/Ie3TFZnUKa6UPGvZonzfU1s3pDDO1pDbOB0LFAnBhCW+Y5q KHi7IrflH+yAJsqIO0A9OKfOcAwVlkWW8fWzp6iaCLjtKu1PS2cI8K0AuSm/CuuGT4/y/TZ0m4n FbEuzw1HX/t3EHyeqwkGEzyYcUHhON2LZPskYdVnSYizmP7M1D3sSQYn+1LYCpIdXl/1XYXe856 hbC8UFmny0gtfMj4Ay8yb0go9z2H5h/oX2uQn9EJZKeRpa2ovQQuKVB0b2e1ZR0NkCyJFiSaA1q fRCC4SrC8TP0kUT1w7MmAO4/H/BEkkBwrr56wSbxbHnaC9RlWGWHyKw2b1rPB85ffJtgxkE3GNn 0vi82hmE6BIOoQJ1TTQzguLAvCB5tYJg== X-Received: by 2002:ad4:5de2:0:b0:895:9021:2721 with SMTP id 6a1803df08f44-89957ea00f7mr41282366d6.36.1771443713982; Wed, 18 Feb 2026 11:41:53 -0800 (PST) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-506847d7bdesm219180571cf.6.2026.02.18.11.41.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 18 Feb 2026 11:41:53 -0800 (PST) Content-Type: multipart/mixed; boundary="------------hLJ5OToSG6ORqbtG1inw0mlF" Message-ID: <1880b789-cb54-4162-ae19-9eb29fabc8da@dunslane.net> Date: Wed, 18 Feb 2026 14:41:51 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BackgroundPsql swallowing errors on windows To: Andres Freund Cc: pgsql-hackers@postgresql.org, Noah Misch References: <762648ad-99b5-4871-beaa-ca275e46ef6e@dunslane.net> <5dgt6vir7n664qruw3ndywpmfxsmfuu4oeh43syocgo3g6v72n@hjxahrqk4w7t> <1779b4d6-768f-4edb-8cd6-62706d321f32@dunslane.net> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------hLJ5OToSG6ORqbtG1inw0mlF Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2026-02-17 Tu 4:56 PM, Andres Freund wrote: > Hi, > > On 2026-02-17 16:31:02 -0500, Andrew Dunstan wrote: >> On 2026-02-16 Mo 7:17 PM, Andres Freund wrote: >>> I briefly tried this out. The overall resource usage of the test is noticeably >>> reduced - and that's on linux with fast fork, so it should be considerably >>> better on windows. However, the tests take a lot longer than before, I think >>> mostly due to polling for results rather than waiting for them to be ready >>> using PQsocketPoll() or such. >>> >>> E.g. bloom/001_wal takes about 15s on HEAD for me, but 138s with the patch. I >>> think that's just due to the various usleep(100_000); >>> >>> >>> FWIW, oauth_validator/001_server fails with the patch at the moment. >>> >> Try this version. On my machine it's now a few percent faster. I fixed the >> polling. I also added pipeline support for large sets of commands, to >> minimize roundtrips. > Nice! Will try it out. > > > Have you tried it on windows already? That's where we pay by far the biggest > price due to all the unnecessary process creations... > > It looks like strawberry perl has FFI::Platypus, but not FFI::C. There is > perl/vendor/lib/FFI/Platypus/Lang/C.pm, but that just seems like it's > documentation. There is however FFI::Platypus::Record, which maybe could > suffice? > > Do we actually need FFI::C, or can we work around not having it? Looks like > it's just used for notify related stuff. > > It looks like mingw doesn't have packages for FFI::Platypus, but it'll > probably be a lot easier to build that than when using msvc. > > I replaced the use of FFI::C with FFI::Platypus::Record. That comes for free with FFI::Platypus, so there would be no extra dependency. It means a little extra housekeeping so we don't lose track of the pointer for later use with PQfreemem, but it's not too bad. I have tried it out with Windows, seemed to work OK although the xid_wraparound tests 2 and 3 timed out. Latest is attached. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------hLJ5OToSG6ORqbtG1inw0mlF Content-Type: text/x-patch; charset=UTF-8; name="Tap-Sessions-v11.patch" Content-Disposition: attachment; filename="Tap-Sessions-v11.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwMV92ZXJpZnlfaGVhcGFtLnBsIGIv Y29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0ucGwKaW5kZXggZTNmZWUxOWFl NWQuLjllYTcyMTc5ZmNkIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdC8wMDFfdmVy aWZ5X2hlYXBhbS5wbAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBh bS5wbApAQCAtNSw2ICs1LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9 PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAog dXNlIFRlc3Q6Ok1vcmU7CkBAIC0xOCw3ICsxOSw5IEBAICRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0Jyk7CiAkbm9kZS0+aW5pdChub19kYXRhX2NoZWNr c3VtcyA9PiAxKTsKICRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ2F1 dG92YWN1dW09b2ZmJyk7CiAkbm9kZS0+c3RhcnQ7Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7CitteSAkc2Vzc2lvbiA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKworJHNlc3Np b24tPmRvKHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7CiAKICMKICMgQ2hlY2sgYSB0 YWJsZSB3aXRoIGRhdGEgbG9hZGVkIGJ1dCBubyBjb3JydXB0aW9uLCBmcmVlemluZywgZXRj LgpAQCAtNDksNyArNTIsNyBAQCBkZXRlY3RzX2hlYXBfY29ycnVwdGlvbigKICMgQ2hlY2sg YSBjb3JydXB0IHRhYmxlIHdpdGggYWxsLWZyb3plbiBkYXRhCiAjCiBmcmVzaF90ZXN0X3Rh YmxlKCd0ZXN0Jyk7Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVkFDVVVNIChG UkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgdGVzdCkpOworJHNlc3Npb24tPmRvKHEo VkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgdGVzdCkpOwogZGV0ZWN0 c19ub19jb3JydXB0aW9uKCJ2ZXJpZnlfaGVhcGFtKCd0ZXN0JykiLAogCSJhbGwtZnJvemVu IG5vdCBjb3JydXB0ZWQgdGFibGUiKTsKIGNvcnJ1cHRfZmlyc3RfcGFnZSgndGVzdCcpOwpA QCAtODEsNyArODQsNyBAQCBzdWIgcmVsYXRpb25fZmlsZXBhdGgKIAlteSAoJHJlbG5hbWUp ID0gQF87CiAKIAlteSAkcGdkYXRhID0gJG5vZGUtPmRhdGFfZGlyOwotCW15ICRyZWwgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJbXkgJHJlbCA9ICRzZXNzaW9uLT5xdWVy eV9vbmV2YWwoCiAJCXFxKFNFTEVDVCBwZ19yZWxhdGlvbl9maWxlcGF0aCgnJHJlbG5hbWUn KSkpOwogCWRpZSAicGF0aCBub3QgZm91bmQgZm9yIHJlbGF0aW9uICRyZWxuYW1lIiB1bmxl c3MgZGVmaW5lZCAkcmVsOwogCXJldHVybiAiJHBnZGF0YS8kcmVsIjsKQEAgLTkyLDggKzk1 LDggQEAgc3ViIGZyZXNoX3Rlc3RfdGFibGUKIHsKIAlteSAoJHJlbG5hbWUpID0gQF87CiAK LQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0dXJu ICRzZXNzaW9uLT5kbygKKwkJcXEoCiAJCURST1AgVEFCTEUgSUYgRVhJU1RTICRyZWxuYW1l IENBU0NBREU7CiAJCUNSRUFURSBUQUJMRSAkcmVsbmFtZSAoYSBpbnRlZ2VyLCBiIHRleHQp OwogCQlBTFRFUiBUQUJMRSAkcmVsbmFtZSBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxz ZSk7CkBAIC0xMTcsOCArMTIwLDggQEAgc3ViIGZyZXNoX3Rlc3Rfc2VxdWVuY2UKIHsKIAlt eSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bv c3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5kbygKKwkJcXEoCiAJCURST1AgU0VR VUVOQ0UgSUYgRVhJU1RTICRzZXFuYW1lIENBU0NBREU7CiAJCUNSRUFURSBTRVFVRU5DRSAk c2VxbmFtZQogCQkJSU5DUkVNRU5UIEJZIDEzCkBAIC0xMzQsOCArMTM3LDggQEAgc3ViIGFk dmFuY2VfdGVzdF9zZXF1ZW5jZQogewogCW15ICgkc2VxbmFtZSkgPSBAXzsKIAotCXJldHVy biAkbm9kZS0+c2FmZV9wc3FsKAotCQkncG9zdGdyZXMnLCBxcSgKKwlyZXR1cm4gJHNlc3Np b24tPnF1ZXJ5X29uZXZhbCgKKwkJcXEoCiAJCVNFTEVDVCBuZXh0dmFsKCckc2VxbmFtZScp OwogCSkpOwogfQpAQCAtMTQ1LDEwICsxNDgsNyBAQCBzdWIgc2V0X3Rlc3Rfc2VxdWVuY2UK IHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgK LQkJJ3Bvc3RncmVzJywgcXEoCi0JCVNFTEVDVCBzZXR2YWwoJyRzZXFuYW1lJywgMTAyKTsK LQkpKTsKKwlyZXR1cm4gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbChxcShTRUxFQ1Qgc2V0dmFs KCckc2VxbmFtZScsIDEwMikpKTsKIH0KIAogIyBDYWxsIFNRTCBmdW5jdGlvbnMgdG8gcmVz ZXQgdGhlIHNlcXVlbmNlCkBAIC0xNTYsOCArMTU2LDggQEAgc3ViIHJlc2V0X3Rlc3Rfc2Vx dWVuY2UKIHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVf cHNxbCgKLQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5kbygKKwkJcXEo CiAJCUFMVEVSIFNFUVVFTkNFICRzZXFuYW1lIFJFU1RBUlQgV0lUSCA1MQogCSkpOwogfQpA QCAtMTY5LDYgKzE2OSw3IEBAIHN1YiBjb3JydXB0X2ZpcnN0X3BhZ2UKIAlteSAoJHJlbG5h bWUpID0gQF87CiAJbXkgJHJlbHBhdGggPSByZWxhdGlvbl9maWxlcGF0aCgkcmVsbmFtZSk7 CiAKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAJJG5vZGUtPnN0b3A7CiAKIAlteSAkZmg7CkBAIC0x OTEsNiArMTkyLDcgQEAgc3ViIGNvcnJ1cHRfZmlyc3RfcGFnZQogCSAgb3IgQkFJTF9PVVQo ImNsb3NlIGZhaWxlZDogJCEiKTsKIAogCSRub2RlLT5zdGFydDsKKwkkc2Vzc2lvbi0+cmVj b25uZWN0OwogfQogCiBzdWIgZGV0ZWN0c19oZWFwX2NvcnJ1cHRpb24KQEAgLTIxNiw3ICsy MTgsNyBAQCBzdWIgZGV0ZWN0c19jb3JydXB0aW9uCiAKIAlteSAoJGZ1bmN0aW9uLCAkdGVz dG5hbWUsIEByZSkgPSBAXzsKIAotCW15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxKFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CisJbXkgJHJlc3VsdCA9 ICRzZXNzaW9uLT5xdWVyeV90dXBsZXMocXEoU0VMRUNUICogRlJPTSAkZnVuY3Rpb24pKTsK IAlsaWtlKCRyZXN1bHQsICRfLCAkdGVzdG5hbWUpIGZvciAoQHJlKTsKIH0KIApAQCAtMjI2 LDcgKzIyOCw3IEBAIHN1YiBkZXRlY3RzX25vX2NvcnJ1cHRpb24KIAogCW15ICgkZnVuY3Rp b24sICR0ZXN0bmFtZSkgPSBAXzsKIAotCW15ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxKFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CisJbXkgJHJlc3Vs dCA9ICRzZXNzaW9uLT5xdWVyeV90dXBsZXMocXEoU0VMRUNUICogRlJPTSAkZnVuY3Rpb24p KTsKIAlpcygkcmVzdWx0LCAnJywgJHRlc3RuYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvY29u dHJpYi9hbWNoZWNrL3QvMDAyX2NpYy5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMu cGwKaW5kZXggNjI5ZDAwYzFkMDUuLmYyYzdiYzg2NTNmIDEwMDY0NAotLS0gYS9jb250cmli L2FtY2hlY2svdC8wMDJfY2ljLnBsCisrKyBiL2NvbnRyaWIvYW1jaGVjay90LzAwMl9jaWMu cGwKQEAgLTYsNiArNiw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVz ZSBUZXN0OjpNb3JlOwpAQCAtNzIsOCArNzMsOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJcShJTlNFUlQgSU5UTyBxdWViZWMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMikgcyhpKTspKTsKIAogIyBzdGFydCBiYWNrZ3JvdW5kIHRyYW5zYWN0aW9u Ci1teSAkaW5fcHJvZ3Jlc3NfaCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7Ci0kaW5fcHJvZ3Jlc3NfaC0+cXVlcnlfc2FmZShxKEJFR0lOOyBTRUxFQ1QgcGdfY3Vy cmVudF94YWN0X2lkKCk7KSk7CitteSAkaW5fcHJvZ3Jlc3NfaCA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRpbl9wcm9ncmVzc19oLT5kbyhx KEJFR0lOOyBTRUxFQ1QgcGdfY3VycmVudF94YWN0X2lkKCk7KSk7CiAKICMgZGVsZXRlIG9u ZSByb3cgZnJvbSB0YWJsZSwgd2hpbGUgYmFja2dyb3VuZCB0cmFuc2FjdGlvbiBpcyBpbiBw cm9ncmVzcwogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKERFTEVURSBGUk9NIHF1 ZWJlYyBXSEVSRSBpID0gMTspKTsKQEAgLTg2LDcgKzg3LDcgQEAgbXkgJHJlc3VsdCA9ICRu b2RlLT5wc3FsKCdwb3N0Z3JlcycsCiAJcShTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNr KCdvc2NhcicsIGhlYXBhbGxpbmRleGVkID0+IHRydWUpKSk7CiBpcygkcmVzdWx0LCAnMCcs ICdidF9pbmRleF9wYXJlbnRfY2hlY2sgZm9yIENJQyBhZnRlciByZW1vdmVkIHJvdycpOwog Ci0kaW5fcHJvZ3Jlc3NfaC0+cXVpdDsKKyRpbl9wcm9ncmVzc19oLT5jbG9zZTsKIAogJG5v ZGUtPnN0b3A7CiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVj ay90LzAwM19jaWNfMnBjLnBsIGIvY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwK aW5kZXggZjI4ZWVhYzE3ZWYuLmQzYTE2NDNiZjMzIDEwMDY0NAotLS0gYS9jb250cmliL2Ft Y2hlY2svdC8wMDNfY2ljXzJwYy5wbAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDNfY2lj XzJwYy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogCiB1c2UgVGVzdDo6 TW9yZTsKIApAQCAtMzYsMjkgKzM3LDQyIEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50LCBqIGpzb25iKSkpOwogIyBzdGF0ZW1lbnRz LgogIwogCi1teSAkbWFpbl9oID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn KTsKK215ICRtYWluX2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+ JG5vZGUpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZlKAorJG1haW5faC0+ZG9fYXN5bmMoCiAJ cSgKIEJFR0lOOwogSU5TRVJUIElOVE8gdGJsIFZBTFVFUygwLCAnW1sxNCwyLDNdXScpOwog KSk7CiAKLW15ICRjaWNfaCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7 CitteSAkY2ljX2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+JG5v ZGUpOwogCi0kY2ljX2gtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0LywgcSgKLVxlY2hvIHN0 YXJ0Ci1DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSk7Ci1DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGdpbmlkeCBPTiB0YmwgVVNJTkcgZ2luKGopOworJGNpY19o LT5zZXRub25ibG9ja2luZygxKTsKKworJGNpY19oLT5lbnRlclBpcGVsaW5lTW9kZSgpOwor CiskY2ljX2gtPmRvX3BpcGVsaW5lKAorCXEoCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiB0YmwoaSkKKykpOworCiskY2ljX2gtPnBpcGVsaW5lU3luYygpOworCiskY2lj X2gtPmRvX3BpcGVsaW5lKAorCXEoCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGdpbmlk eCBPTiB0YmwgVVNJTkcgZ2luKGopCiApKTsKIAotJG1haW5faC0+cXVlcnlfc2FmZSgKKyRj aWNfaC0+cGlwZWxpbmVTeW5jKCk7CisKKyRtYWluX2gtPndhaXRfZm9yX2NvbXBsZXRpb247 CiskbWFpbl9oLT5kb19hc3luYygKIAlxKAogUFJFUEFSRSBUUkFOU0FDVElPTiAnYSc7CiAp KTsKIAotJG1haW5faC0+cXVlcnlfc2FmZSgKKyRtYWluX2gtPndhaXRfZm9yX2NvbXBsZXRp b247CiskbWFpbl9oLT5kb19hc3luYygKIAlxKAogQkVHSU47CiBJTlNFUlQgSU5UTyB0Ymwg VkFMVUVTKDAsICdbWzE0LDIsM11dJyk7CkBAIC02Niw3ICs4MCw4IEBAIElOU0VSVCBJTlRP IHRibCBWQUxVRVMoMCwgJ1tbMTQsMiwzXV0nKTsKIAogJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENPTU1JVCBQUkVQQVJFRCAnYSc7KSk7CiAKLSRtYWluX2gtPnF1ZXJ5X3Nh ZmUoCiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG9fYXN5bmMo CiAJcSgKIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2InOwogQkVHSU47CkBAIC03NSwxNCArOTAs MTcgQEAgSU5TRVJUIElOVE8gdGJsIFZBTFVFUygwLCAnIm1hcnkgaGFkIGEgbGl0dGxlIGxh bWIiJyk7CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDT01NSVQgUFJFUEFS RUQgJ2InOykpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZlKAotCXEoCi1QUkVQQVJFIFRSQU5T QUNUSU9OICdjJzsKLUNPTU1JVCBQUkVQQVJFRCAnYyc7Ci0pKTsKKyRtYWluX2gtPndhaXRf Zm9yX2NvbXBsZXRpb247CiskbWFpbl9oLT5kbygKKwlxKFBSRVBBUkUgVFJBTlNBQ1RJT04g J2MnOyksCisJcShDT01NSVQgUFJFUEFSRUQgJ2MnOykpOwogCi0kbWFpbl9oLT5xdWl0Owot JGNpY19oLT5xdWl0OworJG1haW5faC0+Y2xvc2U7CisKKyMgY2FsbGVkIHR3aWNlIG91dCBv ZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiBhYm91dCBwaXBlbGluZSBtb2RlCiskY2ljX2gt PndhaXRfZm9yX2NvbXBsZXRpb247CiskY2ljX2gtPndhaXRfZm9yX2NvbXBsZXRpb247Cisk Y2ljX2gtPmNsb3NlOwogCiAkcmVzdWx0ID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcShT RUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeCcsdHJ1ZSkpKTsKIGlzKCRyZXN1bHQsICcwJywg J2J0X2luZGV4X2NoZWNrIGFmdGVyIG92ZXJsYXBwaW5nIDJQQycpOwpAQCAtMTA2LDEwICsx MjQsOSBAQCBQUkVQQVJFIFRSQU5TQUNUSU9OICdwZXJzaXN0c19mb3JldmVyJzsKICkpOwog JG5vZGUtPnJlc3RhcnQ7CiAKLW15ICRyZWluZGV4X2ggPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotJHJlaW5kZXhfaC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnQv LCBxKAotXGVjaG8gc3RhcnQKK215ICRyZWluZGV4X2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskcmVpbmRleF9oLT5kb19hc3luYygKKwlx KAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gdGJsKGkpOwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgZ2luaWR4OwpA QCAtMTE3LDcgKzEzNCw4IEBAIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZ2luaWR4IE9O IHRibCBVU0lORyBnaW4oaik7CiApKTsKIAogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQ09NTUlUIFBSRVBBUkVEICdzcGFuc19yZXN0YXJ0JyIpOwotJHJlaW5kZXhfaC0+cXVp dDsKKyRyZWluZGV4X2gtPndhaXRfZm9yX2NvbXBsZXRpb247CiskcmVpbmRleF9oLT5jbG9z ZTsKICRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBidF9pbmRl eF9jaGVjaygnaWR4Jyx0cnVlKSkpOwogaXMoJHJlc3VsdCwgJzAnLCAnYnRfaW5kZXhfY2hl Y2sgYWZ0ZXIgMlBDIGFuZCByZXN0YXJ0Jyk7CiAkcmVzdWx0ID0gJG5vZGUtPnBzcWwoJ3Bv c3RncmVzJywgcShTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCdnaW5pZHgnKSkpOwpkaWZmIC0t Z2l0IGEvY29udHJpYi9ibG9vbS90LzAwMV93YWwucGwgYi9jb250cmliL2Jsb29tL3QvMDAx X3dhbC5wbAppbmRleCA2ODNiMTg3NjA1NS4uZjg2YzQ5ZDYzNTcgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvYmxvb20vdC8wMDFfd2FsLnBsCisrKyBiL2NvbnRyaWIvYmxvb20vdC8wMDFfd2Fs LnBsCkBAIC01LDExICs1LDE0IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFM ID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCiBteSAkbm9kZV9wcmltYXJ5OwogbXkgJG5vZGVfc3RhbmRieTsK K215ICRzZXNzaW9uX3ByaW1hcnk7CitteSAkc2Vzc2lvbl9zdGFuZGJ5OwogCiAjIFJ1biBm ZXcgcXVlcmllcyBvbiBib3RoIHByaW1hcnkgYW5kIHN0YW5kYnkgYW5kIGNoZWNrIHRoZWly IHJlc3VsdHMgbWF0Y2guCiBzdWIgdGVzdF9pbmRleF9yZXBsYXkKQEAgLTIxLDIwICsyNCwx OCBAQCBzdWIgdGVzdF9pbmRleF9yZXBsYXkKIAkjIFdhaXQgZm9yIHN0YW5kYnkgdG8gY2F0 Y2ggdXAKIAkkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnkp OwogCi0JbXkgJHF1ZXJpZXMgPSBxcShTRVQgZW5hYmxlX3NlcXNjYW49b2ZmOwotU0VUIGVu YWJsZV9iaXRtYXBzY2FuPW9uOwotU0VUIGVuYWJsZV9pbmRleHNjYW49b247Ci1TRUxFQ1Qg KiBGUk9NIHRzdCBXSEVSRSBpID0gMDsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSAz OwotU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgdCA9ICdiJzsKLVNFTEVDVCAqIEZST00gdHN0 IFdIRVJFIHQgPSAnZic7Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMyBBTkQgdCA9 ICdjJzsKLVNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSA3IEFORCB0ID0gJ2UnOwotKTsK KwlteSBAcXVlcmllcyA9ICgKKwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSAwIiwK KwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIGkgPSAzIiwKKwkJIlNFTEVDVCAqIEZST00g dHN0IFdIRVJFIHQgPSAnYiciLAorCQkiU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgdCA9ICdm JyIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMyBBTkQgdCA9ICdjJyIsCisJ CSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gNyBBTkQgdCA9ICdlJyIsCisJICAgKTsK IAogCSMgUnVuIHRlc3QgcXVlcmllcyBhbmQgY29tcGFyZSB0aGVpciByZXN1bHQKLQlteSAk cHJpbWFyeV9yZXN1bHQgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwg JHF1ZXJpZXMpOwotCW15ICRzdGFuZGJ5X3Jlc3VsdCA9ICRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgicG9zdGdyZXMiLCAkcXVlcmllcyk7CisJbXkgJHByaW1hcnlfcmVzdWx0ID0gJHNl c3Npb25fcHJpbWFyeS0+cXVlcnlfdHVwbGVzKEBxdWVyaWVzKTsKKwlteSAkc3RhbmRieV9y ZXN1bHQgPSAkc2Vzc2lvbl9zdGFuZGJ5LT5xdWVyeV90dXBsZXMoQHF1ZXJpZXMpOwogCiAJ aXMoJHByaW1hcnlfcmVzdWx0LCAkc3RhbmRieV9yZXN1bHQsICIkdGVzdF9uYW1lOiBxdWVy eSByZXN1bHQgbWF0Y2hlcyIpOwogCXJldHVybjsKQEAgLTU1LDEzICs1NiwyNCBAQCAkbm9k ZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFt ZSwKIAloYXNfc3RyZWFtaW5nID0+IDEpOwogJG5vZGVfc3RhbmRieS0+c3RhcnQ7CiAKKyMg Q3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzZXNzaW9ucworJHNlc3Npb25fcHJpbWFyeSA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1hcnkp OworJHNlc3Npb25fc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlX3N0YW5kYnkpOworbXkgJGluaXRzZXQgPSBxWworICAgU0VUIGVuYWJs ZV9zZXFzY2FuPW9mZjsKKyAgIFNFVCBlbmFibGVfYml0bWFwc2Nhbj1vbjsKKyAgIFNFVCBl bmFibGVfaW5kZXhzY2FuPW9uOworXTsKKyRzZXNzaW9uX3ByaW1hcnktPmRvKCRpbml0c2V0 KTsKKyRzZXNzaW9uX3N0YW5kYnktPmRvKCRpbml0c2V0KTsKKwogIyBDcmVhdGUgc29tZSBi bG9vbSBpbmRleCBvbiBwcmltYXJ5Ci0kbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3Rn cmVzIiwgIkNSRUFURSBFWFRFTlNJT04gYmxvb207Iik7Ci0kbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoInBvc3RncmVzIiwgIkNSRUFURSBUQUJMRSB0c3QgKGkgaW50NCwgdCB0ZXh0KTsi KTsKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgicG9zdGdyZXMiLAorJHNlc3Npb25fcHJp bWFyeS0+ZG8oIkNSRUFURSBFWFRFTlNJT04gYmxvb207Iik7Ciskc2Vzc2lvbl9wcmltYXJ5 LT5kbygiQ1JFQVRFIFRBQkxFIHRzdCAoaSBpbnQ0LCB0IHRleHQpOyIpOworJHNlc3Npb25f cHJpbWFyeS0+ZG8oCiAJIklOU0VSVCBJTlRPIHRzdCBTRUxFQ1QgaSUxMCwgc3Vic3RyKGVu Y29kZShzaGEyNTYoaTo6dGV4dDo6Ynl0ZWEpLCAnaGV4JyksIDEsIDEpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTAwMDApIGk7IgogKTsKLSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgi cG9zdGdyZXMiLAorJHNlc3Npb25fcHJpbWFyeS0+ZG8oCiAJIkNSRUFURSBJTkRFWCBibG9v bWlkeCBPTiB0c3QgVVNJTkcgYmxvb20gKGksIHQpIFdJVEggKGNvbDEgPSAzKTsiKTsKIAog IyBUZXN0IHRoYXQgcXVlcmllcyBnaXZlIHNhbWUgcmVzdWx0CmRpZmYgLS1naXQgYS9jb250 cmliL3BnX3Zpc2liaWxpdHkvdC8wMDFfY29uY3VycmVudF90cmFuc2FjdGlvbi5wbCBiL2Nv bnRyaWIvcGdfdmlzaWJpbGl0eS90LzAwMV9jb25jdXJyZW50X3RyYW5zYWN0aW9uLnBsCmlu ZGV4IDNhYTU1Njg5MmE2Li5jZjZlM2I0NTE4MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192 aXNpYmlsaXR5L3QvMDAxX2NvbmN1cnJlbnRfdHJhbnNhY3Rpb24ucGwKKysrIGIvY29udHJp Yi9wZ192aXNpYmlsaXR5L3QvMDAxX2NvbmN1cnJlbnRfdHJhbnNhY3Rpb24ucGwKQEAgLTYs NiArNiw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCkBAIC0yNCwxMCArMjUsMTAgQEAgJHN0YW5kYnktPnN0YXJ0OwogCiAjIFNldHVwIGFu b3RoZXIgZGF0YWJhc2UKICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIkNSRUFURSBE QVRBQkFTRSBvdGhlcl9kYXRhYmFzZTtcbiIpOwotbXkgJGJzZXNzaW9uID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgnb3RoZXJfZGF0YWJhc2UnKTsKK215ICRic2Vzc2lvbiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlLCBkYm5hbWUgPT4gJ290 aGVyX2RhdGFiYXNlJyk7CiAKICMgUnVuIGEgY29uY3VycmVudCB0cmFuc2FjdGlvbgotJGJz ZXNzaW9uLT5xdWVyeV9zYWZlKAorJGJzZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlT RUxFQ1QgdHhpZF9jdXJyZW50KCk7CkBAIC01NSw4ICs1Niw4IEBAICRyZXN1bHQgPSAkc3Rh bmRieS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsCiBvaygkcmVzdWx0IGVxICIiLCAicGdfY2hl Y2tfdmlzaWJsZSgpIGRldGVjdHMgbm8gZXJyb3JzIik7CiAKICMgU2h1dGRvd24KLSRic2Vz c2lvbi0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOwotJGJzZXNzaW9uLT5xdWl0OworJGJzZXNz aW9uLT5kbygiQ09NTUlUOyIpOworJGJzZXNzaW9uLT5jbG9zZTsKICRub2RlLT5zdG9wOwog JHN0YW5kYnktPnN0b3A7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90 LzAwMV9yZXBsX3N0YXRzLnBsIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3QvMDAxX3JlcGxf c3RhdHMucGwKaW5kZXggNjgxNGM3OTJlMmIuLjc5YjkxODIwMTRmIDEwMDY0NAotLS0gYS9j b250cmliL3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0cy5wbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0cy5wbApAQCAtNyw2ICs3LDcgQEAgdXNl IHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBGaWxlOjpQYXRo IHF3KHJtdHJlZSk7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTEyOSwxMSArMTMwLDExIEBAICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKICk7CiAKICMgTG9vayBhdCBzbG90IGRhdGEsIHdpdGggYSBwZXJz aXN0ZW50IGNvbm5lY3Rpb24uCi1teSAkYnBnc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDEpOworbXkgJGJnc2Vzc2lvbiA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4kbm9kZSk7CiAKICMgTGF1bmNo IHF1ZXJ5IGFuZCBsb29rIGF0IHNsb3QgZGF0YSwgaW5jcmVtZW50aW5nIHRoZSByZWZjb3Vu dCBvZiB0aGUKICMgc3RhdHMgZW50cnkuCi0kYnBnc3FsLT5xdWVyeV9zYWZlKAorJGJnc2Vz c2lvbi0+ZG9fYXN5bmMoCiAJIlNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfcGVla19iaW5hcnlf Y2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0JywgTlVMTCwgTlVMTCkiCiApOwogCkBAIC0x NTAsNyArMTUxLDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCiAjIExvb2sg YWdhaW4gYXQgdGhlIHNsb3QgZGF0YS4gIFRoZSBsb2NhbCBzdGF0cyByZWZlcmVuY2Ugc2hv dWxkIGJlIHJlZnJlc2hlZAogIyB0byB0aGUgcmVpbml0aWFsaXplZCBlbnRyeS4KLSRicGdz cWwtPnF1ZXJ5X3NhZmUoCiskYmdzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGJn c2Vzc2lvbi0+ZG9fYXN5bmMoCiAJIlNFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfcGVla19iaW5h cnlfY2hhbmdlcygnJHNsb3RfbmFtZV9yZXN0YXJ0JywgTlVMTCwgTlVMTCkiCiApOwogIyBE cm9wIGFnYWluIHRoZSBzbG90LCB0aGUgZW50cnkgaXMgbm90IGRyb3BwZWQgeWV0IGFzIHRo ZSBwcmV2aW91cyBzZXNzaW9uCkBAIC0xNzYsNiArMTc4LDcgQEAgY29tbWFuZF9saWtlKAog bXkgJHN0YXRzX2ZpbGUgPSAiJGRhdGFkaXIvcGdfc3RhdC9wZ3N0YXQuc3RhdCI7CiBvaygt ZiAiJHN0YXRzX2ZpbGUiLCAic3RhdHMgZmlsZSBtdXN0IGV4aXN0IGFmdGVyIHNodXRkb3du Iik7CiAKLSRicGdzcWwtPnF1aXQ7CiskYmdzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9u OworJGJnc2Vzc2lvbi0+Y2xvc2U7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwgYi9zcmMvYmluL3Bn X2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbAppbmRleCA5NWYxZjM0YzkwZC4uOWFm YWNiY2FhZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNF92ZXJpZnlf aGVhcGFtLnBsCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNF92ZXJpZnlfaGVhcGFt LnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1 c2UgVGVzdDo6TW9yZTsKQEAgLTE5MCwxNiArMTkxLDE3IEBAICRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnM9MTAnKTsK ICRub2RlLT5zdGFydDsKIG15ICRwb3J0ID0gJG5vZGUtPnBvcnQ7CiBteSAkcGdkYXRhID0g JG5vZGUtPmRhdGFfZGlyOwotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRF IEVYVEVOU0lPTiBhbWNoZWNrIik7Ci0kbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Iik7CitteSAkc2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzZXNzaW9uLT5kbygi Q1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrIik7Ciskc2Vzc2lvbi0+ZG8oIkNSRUFURSBFWFRF TlNJT04gcGFnZWluc3BlY3QiKTsKIAogIyBHZXQgYSBub24temVybyBkYXRmcm96ZW54aWQK LSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVkFDVVVNIEZSRUVaRSkpOworJHNl c3Npb24tPmRvKHFxKFZBQ1VVTSBGUkVFWkUpKTsKIAogIyBDcmVhdGUgdGhlIHRlc3QgdGFi bGUgd2l0aCBwcmVjaXNlbHkgdGhlIHNjaGVtYSB0aGF0IG91ciBjb3JydXB0aW9uIGZ1bmN0 aW9uCiAjIGV4cGVjdHMuCi0kbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAor JHNlc3Npb24tPmRvKAorCXFxKAogCQlDUkVBVEUgVEFCTEUgcHVibGljLnRlc3QgKGEgQklH SU5ULCBiIFRFWFQsIGMgVEVYVCk7CiAJCUFMVEVSIFRBQkxFIHB1YmxpYy50ZXN0IFNFVCAo YXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNlKTsKIAkJQUxURVIgVEFCTEUgcHVibGljLnRlc3Qg QUxURVIgQ09MVU1OIGMgU0VUIFNUT1JBR0UgRVhURVJOQUw7CkBAIC0yMDksMTQgKzIxMSwx NSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyBXZSB3YW50ICgwIDwgZGF0ZnJvemVueGlkIDwg dGVzdC5yZWxmcm96ZW54aWQpLiAgVG8gYWNoaWV2ZSB0aGlzLCB3ZSBmcmVlemUKICMgYW4g b3RoZXJ3aXNlIHVudXNlZCB0YWJsZSwgcHVibGljLmp1bmssIHByaW9yIHRvIGluc2VydGlu ZyBkYXRhIGFuZCBmcmVlemluZwogIyBwdWJsaWMudGVzdAotJG5vZGUtPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJQ1JFQVRFIFRBQkxF IHB1YmxpYy5qdW5rIEFTIFNFTEVDVCAnanVuayc6OlRFWFQgQVMganVua19jb2x1bW47CiAJ CUFMVEVSIFRBQkxFIHB1YmxpYy5qdW5rIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkPWZhbHNl KTsKLQkJVkFDVVVNIEZSRUVaRSBwdWJsaWMuanVuawotCSkpOworCSksCisJJ1ZBQ1VVTSBG UkVFWkUgcHVibGljLmp1bmsnCispOwogCi1teSAkcmVsID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorbXkgJHJlbCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJcXEoU0VM RUNUIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCdwdWJsaWMudGVzdCcpKSk7CiBteSAkcmVscGF0 aCA9ICIkcGdkYXRhLyRyZWwiOwogCkBAIC0yMjksMjMgKzIzMiwyNCBAQCBteSAkUk9XQ09V TlRfQkFTSUMgPSAxNjsKIAogIyBGaXJzdCBpbnNlcnQgZGF0YSBuZWVkZWQgZm9yIHRlc3Rz IHVucmVsYXRlZCB0byB1cGRhdGUgY2hhaW4gdmFsaWRhdGlvbi4KICMgVGhlbiBmcmVlemUg dGhlIHBhZ2UuIFRoZXNlIHR1cGxlcyBhcmUgYXQgb2Zmc2V0IG51bWJlcnMgMSB0byAxNi4K LSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJ cXEoCiAJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMpCiAJCVNFTEVDVAogCQkJ eCdERUFERjlGOURFQURGOUY5Jzo6YmlnaW50LAogCQkJJ2FiY2RlZmcnLAogCQkJcmVwZWF0 KCd3JywgMTAwMDApCiAJRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJFJPV0NPVU5UX0JBU0lD KTsKLQlWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OykKKyAgICApLAorCSdWQUNVVU0gRlJF RVpFIHB1YmxpYy50ZXN0JwogKTsKIAogIyBDcmVhdGUgc29tZSBzaW1wbGUgSE9UIHVwZGF0 ZSBjaGFpbnMgZm9yIGxpbmUgcG9pbnRlciB2YWxpZGF0aW9uLiBBZnRlcgogIyB0aGUgcGFn ZSBpcyBIT1QgcHJ1bmVkLCB3ZSdsbCBoYXZlIHR3byByZWRpcmVjdHMgbGluZSBwb2ludGVy cyBlYWNoIHBvaW50aW5nCiAjIHRvIGEgdHVwbGUuIFdlJ2xsIHRoZW4gY2hhbmdlIHRoZSBz ZWNvbmQgcmVkaXJlY3QgdG8gcG9pbnQgdG8gdGhlIHNhbWUKICMgdHVwbGUgYXMgdGhlIGZp cnN0IG9uZSBhbmQgdmVyaWZ5IHRoYXQgd2UgY2FuIGRldGVjdCBjb3JydXB0aW9uLgotJG5v ZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgK IAkJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIsIGMpCiAJCQlWQUxVRVMgKCB4J0RF QURGOUY5REVBREY5RjknOjpiaWdpbnQsICdhYmNkZWZnJywKIAkJCQkJIGdlbmVyYXRlX3Nl cmllcygxLDIpKTsgLS0gb2Zmc2V0IG51bWJlcnMgMTcgYW5kIDE4CkBAIC0yNTQsOCArMjU4 LDggQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkpKTsKIAogIyBDcmVhdGUgc29tZSBtb3JlIEhP VCB1cGRhdGUgY2hhaW5zLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgK KyRzZXNzaW9uLT5kbygKKwlxcSgKIAkJSU5TRVJUIElOVE8gcHVibGljLnRlc3QgKGEsIGIs IGMpCiAJCQlWQUxVRVMgKCB4J0RFQURGOUY5REVBREY5RjknOjpiaWdpbnQsICdhYmNkZWZn JywKIAkJCQkJIGdlbmVyYXRlX3NlcmllcygzLDYpKTsgLS0gb2Zmc2V0IG51bWJlcnMgMjEg dGhyb3VnaCAyNApAQCAtMjY0LDI1ICsyNjgsMzAgQEAgJG5vZGUtPnNhZmVfcHNxbCgKIAkp KTsKIAogIyBOZWdhdGl2ZSB0ZXN0IGNhc2Ugb2YgSE9ULXBydW5pbmcgd2l0aCBhYm9ydGVk IHR1cGxlLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9u LT5kbygKKwlxcSgKIAkJQkVHSU47CiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQgYyA9ICdh JyBXSEVSRSBjID0gJzUnOyAtLSBvZmZzZXQgbnVtYmVyIDI3CiAJCUFCT1JUOwotCQlWQUNV VU0gRlJFRVpFIHB1YmxpYy50ZXN0OwotCSkpOworICAgICAgICksCisJICAgJ1ZBQ1VVTSBG UkVFWkUgcHVibGljLnRlc3Q7JywKKwkpOwogCiAjIE5leHQgdXBkYXRlIG9uIGFueSB0dXBs ZSB3aWxsIGJlIHN0b3JlZCBhdCB0aGUgc2FtZSBwbGFjZSBvZiB0dXBsZSBpbnNlcnRlZAog IyBieSBhYm9ydGVkIHRyYW5zYWN0aW9uLiBUaGlzIHNob3VsZCBub3QgY2F1c2UgdGhlIHRh YmxlIHRvIGFwcGVhciBjb3JydXB0LgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVHSU47CiAJCVVQREFURSBw dWJsaWMudGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzYnOyAtLSBvZmZzZXQgbnVtYmVy IDI3IGFnYWluCi0JCVZBQ1VVTSBGUkVFWkUgcHVibGljLnRlc3Q7Ci0JKSk7CisgICAgICAg IENPTU1JVDsKKwkpLAorCSdWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0OycsCisgICApOwog CiAjIERhdGEgZm9yIEhPVCBjaGFpbiB2YWxpZGF0aW9uLCBzbyBub3QgY2FsbGluZyBWQUNV VU0gRlJFRVpFLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNz aW9uLT5kbygKKwlxcSgKKyAgICAgICAgQkVHSU47CiAJCUlOU0VSVCBJTlRPIHB1YmxpYy50 ZXN0IChhLCBiLCBjKQogCQkJVkFMVUVTICggeCdERUFERjlGOURFQURGOUY5Jzo6YmlnaW50 LCAnYWJjZGVmZycsCiAJCQkJCSBnZW5lcmF0ZV9zZXJpZXMoNywxNSkpOyAtLSBvZmZzZXQg bnVtYmVycyAyOCB0byAzNgpAQCAtMjkzLDExICszMDIsMTIgQEAgJG5vZGUtPnNhZmVfcHNx bCgKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdIRVJFIGMgPSAnMTMnOyAt LSBvZmZzZXQgbnVtYmVyIDQxCiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQgYyA9ICdhJyBX SEVSRSBjID0gJzE0JzsgLS0gb2Zmc2V0IG51bWJlciA0MgogCQlVUERBVEUgcHVibGljLnRl c3QgU0VUIGMgPSAnYScgV0hFUkUgYyA9ICcxNSc7IC0tIG9mZnNldCBudW1iZXIgNDMKKyAg ICAgICAgQ09NTUlUOwogCSkpOwogCiAjIE5lZWQgb25lIGFib3J0ZWQgdHJhbnNhY3Rpb24g dG8gdGVzdCBjb3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCi0kbm9kZS0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlCRUdJTjsKIAkJVVBE QVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdIRVJFIGMgPSAnOSc7IC0tIG9mZnNldCBu dW1iZXIgNDQKIAkJQUJPUlQ7CkBAIC0zMDYsMTkgKzMxNiwxOSBAQCAkbm9kZS0+c2FmZV9w c3FsKAogIyBOZWVkIG9uZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiB0byB0ZXN0IGZldyBj b3JydXB0aW9uIGluIEhPVCBjaGFpbnMuCiAjIFdlIGFyZSBjcmVhdGluZyBQUkVQQVJFIFRS QU5TQUNUSU9OIGhlcmUgYXMgdGhlc2Ugd2lsbCBub3QgYmUgYWJvcnRlZAogIyBldmVuIGlm IHdlIHN0b3AgdGhlIG5vZGUuCi0kbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFx KAorJHNlc3Npb24tPmRvKAorCXFxKAogCQlCRUdJTjsKIAkJUFJFUEFSRSBUUkFOU0FDVElP TiAnaW5fcHJvZ3Jlc3NfdHgnOwogCSkpOwotbXkgJGluX3Byb2dyZXNzX3hpZCA9ICRub2Rl LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCitteSAkaW5fcHJvZ3Jlc3NfeGlkID0g JHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKKwlxcSgKIAkJU0VMRUNUIHRyYW5zYWN0aW9uIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7CiAJKSk7CiAKLW15ICRyZWxmcm96ZW54aWQgPSAkbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCitteSAkcmVsZnJvemVueGlkID0gJHNlc3Npb24t PnF1ZXJ5X29uZXZhbCgKIAlxKHNlbGVjdCByZWxmcm96ZW54aWQgZnJvbSBwZ19jbGFzcyB3 aGVyZSByZWxuYW1lID0gJ3Rlc3QnKSk7Ci1teSAkZGF0ZnJvemVueGlkID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorbXkgJGRhdGZyb3plbnhpZCA9ICRzZXNzaW9uLT5xdWVy eV9vbmV2YWwoCiAJcShzZWxlY3QgZGF0ZnJvemVueGlkIGZyb20gcGdfZGF0YWJhc2Ugd2hl cmUgZGF0bmFtZSA9ICdwb3N0Z3JlcycpKTsKIAogIyBTYW5pdHkgY2hlY2sgdGhhdCBvdXIg J3Rlc3QnIHRhYmxlIGhhcyBhIHJlbGZyb3plbnhpZCBuZXdlciB0aGFuIHRoZQpAQCAtMzI2 LDYgKzMzNiw3IEBAIG15ICRkYXRmcm96ZW54aWQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAjIGZpcnN0IG5vcm1hbCB4aWQuICBXZSByZWx5IG9uIHRoZXNlIGludmFyaWFu dHMgaW4gc29tZSBvZiBvdXIgdGVzdHMuCiBpZiAoJGRhdGZyb3plbnhpZCA8PSAzIHx8ICRk YXRmcm96ZW54aWQgPj0gJHJlbGZyb3plbnhpZCkKIHsKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAJ JG5vZGUtPmNsZWFuX25vZGU7CiAJcGxhbiBza2lwX2FsbCA9PgogCSAgIlhpZCB0aHJlc2hv bGRzIG5vdCBhcyBleHBlY3RlZDogZ290IGRhdGZyb3plbnhpZCA9ICRkYXRmcm96ZW54aWQs IHJlbGZyb3plbnhpZCA9ICRyZWxmcm96ZW54aWQiOwpAQCAtMzM0LDE3ICszNDUsMjEgQEAg aWYgKCRkYXRmcm96ZW54aWQgPD0gMyB8fCAkZGF0ZnJvemVueGlkID49ICRyZWxmcm96ZW54 aWQpCiAKICMgRmluZCB3aGVyZSBlYWNoIG9mIHRoZSB0dXBsZXMgaXMgbG9jYXRlZCBvbiB0 aGUgcGFnZS4gSWYgYSBwYXJ0aWN1bGFyCiAjIGxpbmUgcG9pbnRlciBpcyBhIHJlZGlyZWN0 IHJhdGhlciB0aGFuIGEgdHVwbGUsIHdlIHJlY29yZCB0aGUgb2Zmc2V0IGFzIC0xLgotbXkg QGxwX29mZiA9IHNwbGl0ICdcbicsICRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXEoCitteSAkbHBfb2ZmX3JlcyA9ICRzZXNzaW9uLT5xdWVyeSgKKwlxcSgKIAkgICAgU0VM RUNUIENBU0UgV0hFTiBscF9mbGFncyA9IDIgVEhFTiAtMSBFTFNFIGxwX29mZiBFTkQKIAkg ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCd0ZXN0JywgJ21haW4nLCAw KSkKICAgICApCi0pOworICAgKTsKK215IEBscF9vZmY7CitwdXNoKEBscF9vZmYsICRfLT5b MF0pIGZvcmVhY2ggQHskbHBfb2ZmX3Jlcy0+e3Jvd3N9fTsKKwogc2NhbGFyIEBscF9vZmYg PT0gJFJPV0NPVU5UIG9yIEJBSUxfT1VUKCJyb3cgb2Zmc2V0IGNvdW50cyBtaXNtYXRjaCIp OwogCiAjIFNhbml0eSBjaGVjayB0aGF0IG91ciAndGVzdCcgdGFibGUgb24gZGlzayBsYXlv dXQgbWF0Y2hlcyBleHBlY3RhdGlvbnMuICBJZgogIyB0aGlzIGlzIG5vdCBzbywgd2Ugd2ls bCBoYXZlIHRvIHNraXAgdGhlIHRlc3QgdW50aWwgc29tZWJvZHkgdXBkYXRlcyB0aGUgdGVz dAogIyB0byB3b3JrIG9uIHRoaXMgcGxhdGZvcm0uCiskc2Vzc2lvbi0+Y2xvc2U7CiAkbm9k ZS0+c3RvcDsKIG15ICRmaWxlOwogb3BlbigkZmlsZSwgJys8JywgJHJlbHBhdGgpCkBAIC03 NTEsMTcgKzc2NiwxOSBAQCBmb3IgKG15ICR0dXBpZHggPSAwOyAkdHVwaWR4IDwgJFJPV0NP VU5UOyAkdHVwaWR4KyspCiBjbG9zZSgkZmlsZSkKICAgb3IgQkFJTF9PVVQoImNsb3NlIGZh aWxlZDogJCEiKTsKICRub2RlLT5zdGFydDsKKyRzZXNzaW9uLT5yZWNvbm5lY3Q7CiAKICMg UnVuIHBnX2FtY2hlY2sgYWdhaW5zdCB0aGUgY29ycnVwdCB0YWJsZSB3aXRoIGVwb2NoPTAs IGNvbXBhcmluZyBhY3R1YWwKICMgY29ycnVwdGlvbiBtZXNzYWdlcyBhZ2FpbnN0IHRoZSBl eHBlY3RlZCBtZXNzYWdlcwogJG5vZGUtPmNvbW1hbmRfY2hlY2tzX2FsbCgKIAlbICdwZ19h bWNoZWNrJywgJy0tbm8tZGVwZW5kZW50LWluZGV4ZXMnLCAnLS1wb3J0JyA9PiAkcG9ydCwg J3Bvc3RncmVzJyBdLAogCTIsIFtAZXhwZWN0ZWRdLCBbXSwgJ0V4cGVjdGVkIGNvcnJ1cHRp b24gbWVzc2FnZSBvdXRwdXQnKTsKLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAgICAgICAgICAgICAgICAgICAgICAgICBDT01N SVQgUFJFUEFSRUQgJ2luX3Byb2dyZXNzX3R4JzsKICAgICAgICAgKSk7CiAKKyRzZXNzaW9u LT5jbG9zZTsKICRub2RlLT50ZWFyZG93bl9ub2RlOwogJG5vZGUtPmNsZWFuX25vZGU7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVy c2lvbi5wbCBiL3NyYy9iaW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lv bi5wbAppbmRleCBkMThjNTA4MzBkNS4uNjg0YjY0Y2IwYTMgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdXBncmFkZS90LzAwN19tdWx0aXhhY3RfY29udmVyc2lvbi5wbAorKysgYi9zcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwKQEAgLTE1LDYg KzE1LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgTWF0aDo6Qmln SW50OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCkBAIC0zOCwxMCArMzksOCBAQCBteSAkdGVtcGRpciA9IFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOwogIyB2ZXJzaW9ucy4KICMKICMgVGhlIGZpcnN0IGFy Z3VtZW50IGlzIHRoZSBjbHVzdGVyIHRvIGNvbm5lY3QgdG8sIHRoZSBzZWNvbmQgYXJndW1l bnQKLSMgaXMgYSBjbHVzdGVyIHVzaW5nIHRoZSBuZXcgdmVyc2lvbi4gIFdlIG5lZWQgdGhl ICdwc3FsJyBiaW5hcnkgZnJvbQotIyB0aGUgbmV3IHZlcnNpb24sIHRoZSBuZXcgY2x1c3Rl ciBpcyBvdGhlcndpc2UgdW51c2VkLiAgKFdlIG5lZWQgdG8KLSMgdXNlIHRoZSBuZXcgJ3Bz cWwnIGJlY2F1c2Ugc29tZSBvZiB0aGUgbW9yZSBhZHZhbmNlZCBiYWNrZ3JvdW5kIHBzcWwK LSMgcGVybCBtb2R1bGUgZmVhdHVyZXMgZGVwZW5kIG9uIGEgZmFpcmx5IHJlY2VudCBwc3Fs IHZlcnNpb24uKQorIyBpcyBhIGNsdXN0ZXIgdXNpbmcgdGhlIG5ldyB2ZXJzaW9uLiAgV2Ug bmVlZCB0aGUgbGlicHEgbGlicmFyeSBmcm9tCisjIHRoZSBuZXcgdmVyc2lvbiAoZm9yIFNl c3Npb24pLCB0aGUgbmV3IGNsdXN0ZXIgaXMgb3RoZXJ3aXNlIHVudXNlZC4KIHN1YiBteGFj dF93b3JrbG9hZAogewogCW15ICRub2RlID0gc2hpZnQ7ICAgICAgICMgQ2x1c3RlciB0byBj b25uZWN0IHRvCkBAIC03OSwxOCArNzgsMTUgQEAgc3ViIG14YWN0X3dvcmtsb2FkCiAJIyBp biBlYWNoIGNvbm5lY3Rpb24uCiAJZm9yICgwIC4uICRuY2xpZW50cykKIAl7Ci0JCSMgVXNl IHRoZSBwc3FsIGJpbmFyeSBmcm9tIHRoZSBuZXcgaW5zdGFsbGF0aW9uLiAgVGhlCi0JCSMg QmFja2dyb3VuZFBzcWwgZnVuY3Rpb25hbGl0eSBkb2Vzbid0IHdvcmsgd2l0aCBvbGRlciBw c3FsCi0JCSMgdmVyc2lvbnMuCi0JCW15ICRjb25uID0gJGJpbm5vZGUtPmJhY2tncm91bmRf cHNxbCgKLQkJCScnLAorCQkjIFVzZSB0aGUgbGlicHEvU2Vzc2lvbiBpbmZyYXN0cnVjdHVy ZSBmcm9tIHRoZSBuZXcgaW5zdGFsbGF0aW9uLgorCQlteSAkY29ubiA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldygKIAkJCWNvbm5zdHIgPT4gJG5vZGUtPmNvbm5zdHIoJ3Bv c3RncmVzJyksCi0JCQl0aW1lb3V0ID0+ICRjb25uZWN0aW9uX3RpbWVvdXRfc2Vjcyk7CisJ CQlsaWJkaXIgPT4gJGJpbm5vZGUtPmNvbmZpZ19kYXRhKCctLWxpYmRpcicpKTsKIAotCQkk Y29ubi0+cXVlcnlfc2FmZSgiU0VUIGxvZ19zdGF0ZW1lbnQ9bm9uZSIsIHZlcmJvc2UgPT4g JHZlcmJvc2UpCisJCSRjb25uLT5kbygiU0VUIGxvZ19zdGF0ZW1lbnQ9bm9uZSIpCiAJCSAg dW5sZXNzICR2ZXJib3NlOwotCQkkY29ubi0+cXVlcnlfc2FmZSgiU0VUIGVuYWJsZV9zZXFz Y2FuPW9mZiIsIHZlcmJvc2UgPT4gJHZlcmJvc2UpOwotCQkkY29ubi0+cXVlcnlfc2FmZSgi QkVHSU4iLCB2ZXJib3NlID0+ICR2ZXJib3NlKTsKKwkJJGNvbm4tPmRvKCJTRVQgZW5hYmxl X3NlcXNjYW49b2ZmIik7CisJCSRjb25uLT5kbygiQkVHSU4iKTsKIAogCQlwdXNoKEBjb25u ZWN0aW9ucywgJGNvbm4pOwogCX0KQEAgLTEwOCw5ICsxMDQsOSBAQCBzdWIgbXhhY3Rfd29y a2xvYWQKIAkJbXkgJGNvbm4gPSAkY29ubmVjdGlvbnNbICRpICUgJG5jbGllbnRzIF07CiAK IAkJbXkgJHNxbCA9ICgkaSAlICRhYm9ydF9ldmVyeSA9PSAwKSA/ICJBQk9SVCIgOiAiQ09N TUlUIjsKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoJHNxbCwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7 CisJCSRjb25uLT5kbygkc3FsKTsKIAotCQkkY29ubi0+cXVlcnlfc2FmZSgiQkVHSU4iLCB2 ZXJib3NlID0+ICR2ZXJib3NlKTsKKwkJJGNvbm4tPmRvKCJCRUdJTiIpOwogCQlpZiAoJGkg JSAkdXBkYXRlX2V2ZXJ5ID09IDApCiAJCXsKIAkJCSRzcWwgPSBxcVsKQEAgLTEyNiwxMiAr MTIyLDEyIEBAIHN1YiBteGFjdF93b3JrbG9hZAogCQkJICApIGFzIHgKIAkJCV07CiAJCX0K LQkJJGNvbm4tPnF1ZXJ5X3NhZmUoJHNxbCwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7CisJCSRj b25uLT5kbygkc3FsKTsKIAl9CiAKIAlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKIAl7 Ci0JCSRjb25uLT5xdWl0KCk7CisJCSRjb25uLT5jbG9zZTsKIAl9CiAKIAkkbm9kZS0+c3Rv cDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3Jk LnBsIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwKaW5kZXgg MGVjOWFhOWY0ZTguLjUxYTRmMWVhMjkxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9hdXRoZW50 aWNhdGlvbi90LzAwMV9wYXNzd29yZC5wbAorKysgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlv bi90LzAwMV9wYXNzd29yZC5wbApAQCAtMTMsNiArMTMsNyBAQAogdXNlIHN0cmljdDsKIHVz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIGlmICghJHVzZV91bml4X3NvY2tldHMp CkBAIC0xODQsMzYgKzE4NSwxOCBAQCBteSAkcmVzID0gJG5vZGUtPnNhZmVfcHNxbCgKIAkg V0hFUkUgcm9sbmFtZSA9ICdzY3JhbV9yb2xlX2l0ZXInIik7CiBpcygkcmVzLCAnU0NSQU0t U0hBLTI1NiQxMDI0OicsICdzY3JhbV9pdGVyYXRpb25zIGluIHNlcnZlciBzaWRlIFJPTEUn KTsKIAotIyBJZiB3ZSBkb24ndCBoYXZlIElPOjpQdHksIGZvcmdldCBpdCwgYmVjYXVzZSBJ UEM6OlJ1biBkZXBlbmRzIG9uIHRoYXQKLSMgdG8gc3VwcG9ydCBwdHkgY29ubmVjdGlvbnMu IEFsc28gc2tpcCBpZiBJUEM6OlJ1biBpc24ndCBhdCBsZWFzdCAwLjk4Ci0jIGFzIGVhcmxp ZXIgdmVyc2lvbiBjYXVzZSB0aGUgc2Vzc2lvbiB0byB0aW1lIG91dC4KLVNLSVA6Ci17Ci0J c2tpcCAiSU86OlB0eSBhbmQgSVBDOjpSdW4gPj0gMC45OCByZXF1aXJlZCIsIDEKLQkgIHVu bGVzcyBldmFsIHsgcmVxdWlyZSBJTzo6UHR5OyBJUEM6OlJ1bi0+VkVSU0lPTignMC45OCcp OyB9OworIyBzZXQgcGFzc3dvcmQgdXNpbmcgUFFjaGFuZ2VQYXNzd29yZAorbXkgJHNlc3Np b24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcgKG5vZGUgPT4gJG5vZGUpOwog Ci0JIyBBbHRlciB0aGUgcGFzc3dvcmQgb24gdGhlIGNyZWF0ZWQgcm9sZSB1c2luZyBccGFz c3dvcmQgaW4gcHNxbCB0byBlbnN1cmUKLQkjIHRoYXQgY2xpZW50c2lkZSBwYXNzd29yZCBj aGFuZ2VzIHVzZSB0aGUgc2NyYW1faXRlcmF0aW9ucyB2YWx1ZSB3aGVuCi0JIyBjYWxjdWxh dGluZyBTQ1JBTSBzZWNyZXRzLgotCW15ICRzZXNzaW9uID0gJG5vZGUtPmludGVyYWN0aXZl X3BzcWwoJ3Bvc3RncmVzJyk7Ci0KLQkkc2Vzc2lvbi0+c2V0X3F1ZXJ5X3RpbWVyX3Jlc3Rh cnQoKTsKLQkkc2Vzc2lvbi0+cXVlcnkoIlNFVCBwYXNzd29yZF9lbmNyeXB0aW9uPSdzY3Jh bS1zaGEtMjU2JzsiKTsKLQkkc2Vzc2lvbi0+cXVlcnkoIlNFVCBzY3JhbV9pdGVyYXRpb25z PTQyOyIpOwotCSRzZXNzaW9uLT5xdWVyeV91bnRpbChxci9FbnRlciBuZXcgcGFzc3dvcmQv LAotCQkiXFxwYXNzd29yZCBzY3JhbV9yb2xlX2l0ZXJcbiIpOwotCSRzZXNzaW9uLT5xdWVy eV91bnRpbChxci9FbnRlciBpdCBhZ2Fpbi8sICJwYXNzXG4iKTsKLQkkc2Vzc2lvbi0+cXVl cnlfdW50aWwocXIvcG9zdGdyZXM9IyAvLCAicGFzc1xuIik7Ci0JJHNlc3Npb24tPnF1aXQ7 Ci0KLQkkcmVzID0gJG5vZGUtPnNhZmVfcHNxbCgKLQkJJ3Bvc3RncmVzJywKKyRzZXNzaW9u LT5kbygiU0VUIHBhc3N3b3JkX2VuY3J5cHRpb249J3NjcmFtLXNoYS0yNTYnOyIsCisJCQkg IlNFVCBzY3JhbV9pdGVyYXRpb25zPTQyOyIpOworJHJlcyA9ICRzZXNzaW9uLT5zZXRfcGFz c3dvcmQoInNjcmFtX3JvbGVfaXRlciIsInBhc3MiKTsKK2lzKCRyZXMtPntzdGF0dXN9LCAx LCAic2V0IHBhc3N3b3JkIG9rIik7CiskcmVzID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgK IAkJIlNFTEVDVCBzdWJzdHIocm9scGFzc3dvcmQsMSwxNykKIAkJIEZST00gcGdfYXV0aGlk CiAJCSBXSEVSRSByb2xuYW1lID0gJ3NjcmFtX3JvbGVfaXRlciciKTsKLQlpcygkcmVzLCAn U0NSQU0tU0hBLTI1NiQ0MjonLAotCQknc2NyYW1faXRlcmF0aW9ucyBpbiBwc3FsIFxwYXNz d29yZCBjb21tYW5kJyk7Ci19CitpcygkcmVzLCAnU0NSQU0tU0hBLTI1NiQ0MjonLCAnc2Ny YW1faXRlcmF0aW9ucyBjb3JyZWN0Jyk7CiAKICMgQ3JlYXRlIGEgZGF0YWJhc2UgdG8gdGVz dCByZWd1bGFyIGV4cHJlc3Npb24uCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgZGF0YWJhc2UgcmVnZXhfdGVzdGRiOyIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv YXV0aGVudGljYXRpb24vdC8wMDdfcHJlX2F1dGgucGwgYi9zcmMvdGVzdC9hdXRoZW50aWNh dGlvbi90LzAwN19wcmVfYXV0aC5wbAppbmRleCAwNDA2M2Y0NzIxZC4uMTdkZTkyYmM0MWEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBs CisrKyBiL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBsCkBAIC03 LDYgKzcsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRpbWU6Okhp UmVzIHF3KHVzbGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAgLTM2LDI0ICszNywyNyBAQCBp ZiAoISRub2RlLT5jaGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50cycpOwogCiAjIENvbm5lY3QgdG8gdGhlIHNlcnZlciBhbmQgaW5qZWN0IGEgd2FpdHBv aW50LgotbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwot JHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5p dC1wcmUtYXV0aCcsICd3YWl0JykiKTsKK215ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHNlc3Npb24tPmRvKCJTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2luaXQtcHJlLWF1dGgnLCAnd2FpdCcpIik7CiAK ICMgRnJvbSB0aGlzIHBvaW50IG9uLCBhbGwgbmV3IGNvbm5lY3Rpb25zIHdpbGwgaGFuZyBk dXJpbmcgc3RhcnR1cCwganVzdCBiZWZvcmUKLSMgYXV0aGVudGljYXRpb24uIFVzZSB0aGUg JHBzcWwgY29ubmVjdGlvbiBoYW5kbGUgZm9yIHNlcnZlciBpbnRlcmFjdGlvbi4KLW15ICRj b25uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCB3YWl0ID0+IDApOwor IyBhdXRoZW50aWNhdGlvbi4gVXNlIHRoZSAkc2Vzc2lvbiBjb25uZWN0aW9uIGhhbmRsZSBm b3Igc2VydmVyIGludGVyYWN0aW9uLgorbXkgJGNvbm4gPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSwgd2FpdCA9PiAwKTsKIAogIyBXYWl0IGZvciB0 aGUgY29ubmVjdGlvbiB0byBzaG93IHVwIGluIHBnX3N0YXRfYWN0aXZpdHksIHdpdGggdGhl IHdhaXRfZXZlbnQKLSMgb2YgdGhlIGluamVjdGlvbiBwb2ludC4KKyMgb2YgdGhlIGluamVj dGlvbiBwb2ludC4gV2UgbmVlZCB0byBwb2xsIHRoZSBhc3luYyBjb25uZWN0aW9uIHRvIGRy aXZlIGl0IGZvcndhcmQuCiBteSAkcGlkOwogd2hpbGUgKDEpCiB7Ci0JJHBpZCA9ICRwc3Fs LT5xdWVyeSgKKwkjIERyaXZlIHRoZSBhc3luYyBjb25uZWN0aW9uIGZvcndhcmQgLSBpdCB3 b24ndCBwcm9ncmVzcyB3aXRob3V0IHBvbGxpbmcKKwkkY29ubi0+cG9sbF9jb25uZWN0KCk7 CisKKwkkcGlkID0gJHNlc3Npb24tPnF1ZXJ5X29uZXZhbCgKIAkJcXF7U0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkKICAgV0hFUkUgYmFja2VuZF90eXBlID0gJ2NsaWVudCBi YWNrZW5kJwogICAgIEFORCBzdGF0ZSA9ICdzdGFydGluZycKLSAgICBBTkQgd2FpdF9ldmVu dCA9ICdpbml0LXByZS1hdXRoJzt9KTsKLQlsYXN0IGlmICRwaWQgbmUgIiI7CisgICAgQU5E IHdhaXRfZXZlbnQgPSAnaW5pdC1wcmUtYXV0aCc7fSwgMSk7CisJbGFzdCBpZiBkZWZpbmVk ICRwaWQgJiYgJHBpZCBuZSAiIjsKIAogCXVzbGVlcCgxMDBfMDAwKTsKIH0KQEAgLTYyLDI0 ICs2NiwyNCBAQCBub3RlICJiYWNrZW5kICRwaWQgaXMgYXV0aGVudGljYXRpbmciOwogb2so MSwgJ2F1dGhlbnRpY2F0aW5nIGNvbm5lY3Rpb25zIGFyZSByZWNvcmRlZCBpbiBwZ19zdGF0 X2FjdGl2aXR5Jyk7CiAKICMgRGV0YWNoIHRoZSB3YWl0cG9pbnQgYW5kIHdhaXQgZm9yIHRo ZSBjb25uZWN0aW9uIHRvIGNvbXBsZXRlLgotJHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW5pdC1wcmUtYXV0aCcpOyIpOworJHNlc3Npb24t PmRvKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2luaXQtcHJlLWF1dGgnKSIp OwogJGNvbm4tPndhaXRfY29ubmVjdCgpOwogCiAjIE1ha2Ugc3VyZSB0aGUgcGdzdGF0IGVu dHJ5IGlzIHVwZGF0ZWQgZXZlbnR1YWxseS4KIHdoaWxlICgxKQogewogCW15ICRzdGF0ZSA9 Ci0JICAkcHNxbC0+cXVlcnkoIlNFTEVDVCBzdGF0ZSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkg V0hFUkUgcGlkID0gJHBpZDsiKTsKLQlsYXN0IGlmICRzdGF0ZSBlcSAiaWRsZSI7CisJICAk c2Vzc2lvbi0+cXVlcnlfb25ldmFsKCJTRUxFQ1Qgc3RhdGUgRlJPTSBwZ19zdGF0X2FjdGl2 aXR5IFdIRVJFIHBpZCA9ICRwaWQiKTsKKwlsYXN0IGlmIGRlZmluZWQgJHN0YXRlICYmICRz dGF0ZSBlcSAiaWRsZSI7CiAKLQlub3RlICJzdGF0ZSBmb3IgYmFja2VuZCAkcGlkIGlzICck c3RhdGUnOyB3YWl0aW5nIGZvciAnaWRsZScuLi4iOworCW5vdGUgInN0YXRlIGZvciBiYWNr ZW5kICRwaWQgaXMgJyIgLiAoJHN0YXRlIC8vICd1bmRlZicpIC4gIic7IHdhaXRpbmcgZm9y ICdpZGxlJy4uLiI7CiAJdXNsZWVwKDEwMF8wMDApOwogfQogCiBvaygxLCAnYXV0aGVudGlj YXRlZCBjb25uZWN0aW9ucyByZWFjaCBpZGxlIHN0YXRlIGluIHBnX3N0YXRfYWN0aXZpdHkn KTsKIAotJHBzcWwtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnaW5pdC1wcmUtYXV0aCcpOyIpOwotJHBzcWwtPnF1aXQoKTsKLSRjb25uLT5xdWl0KCk7 Ciskc2Vzc2lvbi0+ZG8oIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW5pdC1w cmUtYXV0aCcpIik7Ciskc2Vzc2lvbi0+Y2xvc2UoKTsKKyRjb25uLT5jbG9zZSgpOwogCiBk b25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFs aWRhdG9yL3QvMDAxX3NlcnZlci5wbCBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRh dG9yL3QvMDAxX3NlcnZlci5wbAppbmRleCA2YjY0OWMwYjA2Zi4uMDRiOWFjNzI1YjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3QvMDAxX3NlcnZl ci5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2 ZXIucGwKQEAgLTEyLDYgKzEyLDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog dXNlIEpTT046OlBQICAgICBxdyhlbmNvZGVfanNvbik7CiB1c2UgTUlNRTo6QmFzZTY0IHF3 KGVuY29kZV9iYXNlNjQpOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC01Nyw3ICs1OCw3IEBAICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBVU0VSIHRlc3RhbHQ7Jyk7CiAkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVVNFUiB0ZXN0cGFyYW07Jyk7CiAKICMgU2F2ZSBh IGJhY2tncm91bmQgY29ubmVjdGlvbiBmb3IgbGF0ZXIgY29uZmlndXJhdGlvbiBjaGFuZ2Vz LgotbXkgJGJnY29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Citt eSAkYmdjb25uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCiBteSAkd2Vic2VydmVyID0gT0F1dGg6OlNlcnZlci0+bmV3KCk7CiAkd2Vic2Vy dmVyLT5ydW4oKTsKQEAgLTg2LDExICs4NywxMSBAQCAkbm9kZS0+cmVsb2FkOwogbXkgJGxv Z19zdGFydCA9ICRub2RlLT53YWl0X2Zvcl9sb2cocXIvcmVsb2FkaW5nIGNvbmZpZ3VyYXRp b24gZmlsZXMvKTsKIAogIyBDaGVjayBwZ19oYmFfZmlsZV9ydWxlcygpIHN1cHBvcnQuCi1t eSAkY29udGVudHMgPSAkYmdjb25uLT5xdWVyeV9zYWZlKAorbXkgJGNvbnRlbnRzID0gJGJn Y29ubi0+cXVlcnkoCiAJcXEoU0VMRUNUIHJ1bGVfbnVtYmVyLCBhdXRoX21ldGhvZCwgb3B0 aW9ucwogCQkgRlJPTSBwZ19oYmFfZmlsZV9ydWxlcwogCQkgT1JERVIgQlkgcnVsZV9udW1i ZXI7KSk7Ci1pcyggJGNvbnRlbnRzLAoraXMoICRjb250ZW50cy0+e3BzcWxvdXR9LAogCXFx ezF8b2F1dGh8XHtpc3N1ZXI9JGlzc3Vlciwic2NvcGU9b3BlbmlkIHBvc3RncmVzIix2YWxp ZGF0b3I9dmFsaWRhdG9yXH0KIDJ8b2F1dGh8XHtpc3N1ZXI9JGlzc3Vlci8ud2VsbC1rbm93 bi9vYXV0aC1hdXRob3JpemF0aW9uLXNlcnZlci9hbHRlcm5hdGUsInNjb3BlPW9wZW5pZCBw b3N0Z3JlcyBhbHQiLHZhbGlkYXRvcj12YWxpZGF0b3JcfQogM3xvYXV0aHxce2lzc3Vlcj0k aXNzdWVyL3BhcmFtLCJzY29wZT1vcGVuaWQgcG9zdGdyZXMiLHZhbGlkYXRvcj12YWxpZGF0 b3JcfX0sCkBAIC00NzcsNyArNDc4LDcgQEAgJGNvbW1vbl9jb25uc3RyID0KICAgImRibmFt ZT1wb3N0Z3JlcyBvYXV0aF9pc3N1ZXI9JGlzc3Vlci8ud2VsbC1rbm93bi9vcGVuaWQtY29u ZmlndXJhdGlvbiBvYXV0aF9zY29wZT0nJyBvYXV0aF9jbGllbnRfaWQ9ZjAyYzYzNjEtMDYz NSI7CiAKICMgTWlzYmVoYXZpbmcgdmFsaWRhdG9ycyBtdXN0IGZhaWwgc2h1dC4KLSRiZ2Nv bm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhu X2lkIFRPICcnIik7CiskYmdjb25uLT5kbygiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxp ZGF0b3IuYXV0aG5faWQgVE8gJyciKTsKICRub2RlLT5yZWxvYWQ7CiAkbG9nX3N0YXJ0ID0K ICAgJG5vZGUtPndhaXRfZm9yX2xvZyhxci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxl cy8sICRsb2dfc3RhcnQpOwpAQCAtNDg5LDE0ICs0OTAsMTQgQEAgJG5vZGUtPmNvbm5lY3Rf ZmFpbHMoCiAJbG9nX2xpa2UgPT4gWwogCQlxci9jb25uZWN0aW9uIGF1dGhlbnRpY2F0ZWQ6 IGlkZW50aXR5PSIiLywKIAkJcXIvREVUQUlMOlxzK1ZhbGlkYXRvciBwcm92aWRlZCBubyBp ZGVudGl0eS8sCi0JCXFyL0ZBVEFMOlxzK09BdXRoIGJlYXJlciBhdXRoZW50aWNhdGlvbiBm YWlsZWQvLAorCQlxci9GQVRBTDogKCBbQS1aMC05XSs6KT8gT0F1dGggYmVhcmVyIGF1dGhl bnRpY2F0aW9uIGZhaWxlZC8sCiAJXSk7CiAKICMgRXZlbiBpZiBhIHZhbGlkYXRvciBhdXRo ZW50aWNhdGVzIHRoZSB1c2VyLCBpZiB0aGUgdG9rZW4gaXNuJ3QgY29uc2lkZXJlZAogIyB2 YWxpZCwgdGhlIGNvbm5lY3Rpb24gZmFpbHMuCi0kYmdjb25uLT5xdWVyeV9zYWZlKAorJGJn Y29ubi0+ZG8oCiAJIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lk IFRPICd0ZXN0XEBleGFtcGxlLm9yZyciKTsKLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoCiskYmdj b25uLT5kbygKIAkiQUxURVIgU1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG9yaXpl X3Rva2VucyBUTyBmYWxzZSIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQpAQCAt NTA5LDcgKzUxMCw3IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCWxvZ19saWtlID0+IFsK IAkJcXIvY29ubmVjdGlvbiBhdXRoZW50aWNhdGVkOiBpZGVudGl0eT0idGVzdFxAZXhhbXBs ZVwub3JnIi8sCiAJCXFyL0RFVEFJTDpccytWYWxpZGF0b3IgZmFpbGVkIHRvIGF1dGhvcml6 ZSB0aGUgcHJvdmlkZWQgdG9rZW4vLAotCQlxci9GQVRBTDpccytPQXV0aCBiZWFyZXIgYXV0 aGVudGljYXRpb24gZmFpbGVkLywKKwkJcXIvRkFUQUw6ICggW0EtWjAtOV0rOik/IE9BdXRo IGJlYXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvLAogCV0pOwogCiAjCkBAIC01MzMsOCAr NTM0LDggQEAgbG9jYWwgYWxsIHRlc3RwYXJhbSBvYXV0aCBpc3N1ZXI9IiRpc3N1ZXIiIHNj b3BlPSIiIGRlbGVnYXRlX2lkZW50X21hcHBpbmc9MQogfSk7CiAKICMgVG8gc3RhcnQsIGhh dmUgdGhlIHZhbGlkYXRvciB1c2UgdGhlIHJvbGUgbmFtZXMgYXMgYXV0aG4gSURzLgotJGJn Y29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5h dXRobl9pZCIpOwotJGJnY29ubi0+cXVlcnlfc2FmZSgiQUxURVIgU1lTVEVNIFJFU0VUIG9h dXRoX3ZhbGlkYXRvci5hdXRob3JpemVfdG9rZW5zIik7CiskYmdjb25uLT5kbygiQUxURVIg U1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5hdXRobl9pZCIpOworJGJnY29ubi0+ZG8o IkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG9yaXplX3Rva2VucyIp OwogCiAkbm9kZS0+cmVsb2FkOwogJGxvZ19zdGFydCA9CkBAIC01NTEsNyArNTUyLDcgQEAg JG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL09BdXRoIGJl YXJlciBhdXRoZW50aWNhdGlvbiBmYWlsZWQvKTsKIAogIyBIYXZlIHRoZSB2YWxpZGF0b3Ig aWRlbnRpZnkgdGhlIGVuZCB1c2VyIGFzIHVzZXJAZXhhbXBsZS5jb20uCi0kYmdjb25uLT5x dWVyeV9zYWZlKAorJGJnY29ubi0+ZG8oCiAJIkFMVEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFs aWRhdG9yLmF1dGhuX2lkIFRPICd1c2VyXEBleGFtcGxlLmNvbSciKTsKICRub2RlLT5yZWxv YWQ7CiAkbG9nX3N0YXJ0ID0KQEAgLTU3NSw3ICs1NzYsNyBAQCAkbm9kZS0+Y29ubmVjdF9v aygKIAlleHBlY3RlZF9zdGRlcnIgPT4KIAkgIHFyQFZpc2l0IGh0dHBzOi8vZXhhbXBsZVwu Y29tLyBhbmQgZW50ZXIgdGhlIGNvZGU6IHBvc3RncmVzdXNlckApOwogCi0kYmdjb25uLT5x dWVyeV9zYWZlKCJBTFRFUiBTWVNURU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lk Iik7CiskYmdjb25uLT5kbygiQUxURVIgU1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5h dXRobl9pZCIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQogICAkbm9kZS0+d2Fp dF9mb3JfbG9nKHFyL3JlbG9hZGluZyBjb25maWd1cmF0aW9uIGZpbGVzLywgJGxvZ19zdGFy dCk7CkBAIC02MjAsNyArNjIxLDcgQEAgJHVzZXIgPSAidGVzdGFsdCI7CiAkbm9kZS0+Y29u bmVjdF9mYWlscygKIAkidXNlcj0kdXNlciBkYm5hbWU9cG9zdGdyZXMgb2F1dGhfaXNzdWVy PSRpc3N1ZXIvLndlbGwta25vd24vb2F1dGgtYXV0aG9yaXphdGlvbi1zZXJ2ZXIvYWx0ZXJu YXRlIG9hdXRoX2NsaWVudF9pZD1mMDJjNjM2MS0wNjM2IiwKIAkiZmFpbF92YWxpZGF0b3Ig aXMgdXNlZCBmb3IgJHVzZXIiLAotCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9GQVRBTDpccytm YWlsX3ZhbGlkYXRvcjogc2VudGluZWwgZXJyb3IvKTsKKwlleHBlY3RlZF9zdGRlcnIgPT4g cXIvRkFUQUw6ICggW0EtWjAtOV0rOik/IGZhaWxfdmFsaWRhdG9yOiBzZW50aW5lbCBlcnJv ci8pOwogCiAjCiAjIFRlc3QgQUJJIGNvbXBhdGliaWxpdHkgbWFnaWMgbWFya2VyCkBAIC02 NDAsNyArNjQxLDcgQEAgJG5vZGUtPmNvbm5lY3RfZmFpbHMoCiAJInVzZXI9dGVzdCBkYm5h bWU9cG9zdGdyZXMgb2F1dGhfaXNzdWVyPSRpc3N1ZXIvLndlbGwta25vd24vb2F1dGgtYXV0 aG9yaXphdGlvbi1zZXJ2ZXIvYWx0ZXJuYXRlIG9hdXRoX2NsaWVudF9pZD1mMDJjNjM2MS0w NjM2IiwKIAkibWFnaWNfdmFsaWRhdG9yIGlzIHVzZWQgZm9yICR1c2VyIiwKIAlleHBlY3Rl ZF9zdGRlcnIgPT4KLQkgIHFyL0ZBVEFMOlxzK09BdXRoIHZhbGlkYXRvciBtb2R1bGUgIm1h Z2ljX3ZhbGlkYXRvciI6IG1hZ2ljIG51bWJlciBtaXNtYXRjaC8KKwkgIHFyL0ZBVEFMOiAo IFtBLVowLTldKzopPyBPQXV0aCB2YWxpZGF0b3IgbW9kdWxlICJtYWdpY192YWxpZGF0b3Ii OiBtYWdpYyBudW1iZXIgbWlzbWF0Y2gvCiApOwogJG5vZGUtPnN0b3A7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdC8wMDFfYWlvLnBsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2Fpby90LzAwMV9haW8ucGwKaW5kZXggNWM2MzRlYzNjYTkuLjM4MTc3 ODg2MzAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fp by5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fpby5wbApAQCAt NCw2ICs0LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK IAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpN b3JlOwogCkBAIC0xMzIsMTkgKzEzMywxOSBAQCBzdWIgcHNxbF9saWtlCiB7CiAJbG9jYWwg JFRlc3Q6OkJ1aWxkZXI6OkxldmVsID0gJFRlc3Q6OkJ1aWxkZXI6OkxldmVsICsgMTsKIAlt eSAkaW9fbWV0aG9kID0gc2hpZnQ7Ci0JbXkgJHBzcWwgPSBzaGlmdDsKKwlteSAkc2Vzc2lv biA9IHNoaWZ0OwogCW15ICRuYW1lID0gc2hpZnQ7CiAJbXkgJHNxbCA9IHNoaWZ0OwogCW15 ICRleHBlY3RlZF9zdGRvdXQgPSBzaGlmdDsKIAlteSAkZXhwZWN0ZWRfc3RkZXJyID0gc2hp ZnQ7Ci0JbXkgKCRjbWRyZXQsICRvdXRwdXQpOwogCi0JKCRvdXRwdXQsICRjbWRyZXQpID0g JHBzcWwtPnF1ZXJ5KCRzcWwpOworCW15ICRyZXMgPSAkc2Vzc2lvbi0+cXVlcnkoJHNxbCk7 CisJbXkgJG91dHB1dCA9ICRyZXMtPntwc3Fsb3V0fTsKIAogCWxpa2UoJG91dHB1dCwgJGV4 cGVjdGVkX3N0ZG91dCwgIiRpb19tZXRob2Q6ICRuYW1lOiBleHBlY3RlZCBzdGRvdXQiKTsK LQlsaWtlKCRwc3FsLT57c3RkZXJyfSwgJGV4cGVjdGVkX3N0ZGVyciwKKwlsaWtlKCRzZXNz aW9uLT5nZXRfc3RkZXJyKCksICRleHBlY3RlZF9zdGRlcnIsCiAJCSIkaW9fbWV0aG9kOiAk bmFtZTogZXhwZWN0ZWQgc3RkZXJyIik7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHNl c3Npb24tPmNsZWFyX3N0ZGVycigpOwogCiAJcmV0dXJuICRvdXRwdXQ7CiB9CkBAIC0xNTQs MTUgKzE1NSwxNCBAQCBzdWIgcXVlcnlfd2FpdF9ibG9jawogCWxvY2FsICRUZXN0OjpCdWls ZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7CiAJbXkgJGlvX21ldGhv ZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7Ci0JbXkgJHBzcWwgPSBzaGlmdDsKKwlt eSAkc2Vzc2lvbiA9IHNoaWZ0OwogCW15ICRuYW1lID0gc2hpZnQ7CiAJbXkgJHNxbCA9IHNo aWZ0OwogCW15ICR3YWl0Zm9yID0gc2hpZnQ7CiAKLQlteSAkcGlkID0gJHBzcWwtPnF1ZXJ5 X3NhZmUoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisJbXkgJHBpZCA9ICRzZXNzaW9u LT5iYWNrZW5kX3BpZCgpOwogCi0JJHBzcWwtPntzdGRpbn0gLj0gcXEoJHNxbDtcbik7Ci0J JHBzcWwtPntydW59LT5wdW1wX25iKCk7CisJJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpOwog CW9rKDEsICIkaW9fbWV0aG9kOiAkbmFtZTogaXNzdWVkIHNxbCIpOwogCiAJJG5vZGUtPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKQEAgLTIxNyw3ICsyMTcsNyBAQCBzdWIgdGVz dF9oYW5kbGUKIAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsK IAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBsZWFrIHdhcm5pbmc6IGltcGxpY2l0IHhh Y3QKIAlwc3FsX2xpa2UoCkBAIC0zMjMsNyArMzIzLDcgQEAgc3ViIHRlc3RfYmF0Y2htb2Rl CiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAk cHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3Rv cCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAogCSMgSW4gYSBidWlsZCB3aXRoIFJFTENBQ0hFX0ZPUkNFX1JF TEVBU0UgYW5kIENBVENBQ0hFX0ZPUkNFX1JFTEVBU0UsIGp1c3QKIAkjIHVzaW5nIFNFTEVD VCBiYXRjaF9zdGFydCgpIGNhdXNlcyBzcHVyaW91cyB0ZXN0IGZhaWx1cmVzLCBiZWNhdXNl IHRoZQpAQCAtMzgzLDcgKzM4Myw3IEBAIHN1YiB0ZXN0X2lvX2Vycm9yCiAJbXkgJG5vZGUg PSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAogCSRwc3FsLT5xdWVyeV9zYWZlKAogCQlxcSgKQEAgLTQzNSw4ICs0MzUsOCBAQCBzdWIg dGVzdF9zdGFydHdhaXRfaW8KIAlteSAkbm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0 cHV0KTsKIAotCW15ICRwc3FsX2EgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBzcWxfYiA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9h ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworCW15 ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZSk7CiAKIAogCSMjIyBWZXJpZnkgYmVoYXZpb3IgZm9yIG5vcm1hbCB0YWJsZXMKQEAgLTQ5 NCw3ICs0OTQsNyBAQCBzdWIgdGVzdF9zdGFydHdhaXRfaW8KIAogCiAJIyBCZWNhdXNlIHRo ZSBJTyB3YXMgdGVybWluYXRlZCwgYnV0IG5vdCBtYXJrZWQgYXMgdmFsaWQsIHNlY29uZCBz ZXNzaW9uIHNob3VsZCBnZXQgdGhlIHJpZ2h0IHRvIHN0YXJ0IGlvCi0JcHVtcF91bnRpbCgk cHNxbF9iLT57cnVufSwgJHBzcWxfYi0+e3RpbWVvdXR9LCBcJHBzcWxfYi0+e3N0ZG91dH0s IHFyL3QvKTsKKwkkcHNxbF9iLT53YWl0X2Zvcl9hc3luY19wYXR0ZXJuKHFyL3QvKTsKIAlv aygxLCAiJGlvX21ldGhvZDogYmxvY2tpbmcgc3RhcnQgYnVmZmVyIGlvLCBjYW4gc3RhcnQg aW8iKTsKIAogCSMgdGVybWluYXRlIHRoZSBJTyBhZ2FpbgpAQCAtNTMxLDcgKzUzMSw3IEBA IHN1YiB0ZXN0X3N0YXJ0d2FpdF9pbwogCQlxci9eJC8pOwogCiAJIyBCZWNhdXNlIHRoZSBJ TyB3YXMgdGVybWluYXRlZCwgYW5kIG1hcmtlZCBhcyB2YWxpZCwgc2Vjb25kIHNlc3Npb24g c2hvdWxkIGNvbXBsZXRlIGJ1dCBub3QgbmVlZCBpbwotCXB1bXBfdW50aWwoJHBzcWxfYi0+ e3J1bn0sICRwc3FsX2ItPnt0aW1lb3V0fSwgXCRwc3FsX2ItPntzdGRvdXR9LCBxci9mLyk7 CisJJHBzcWxfYi0+d2FpdF9mb3JfYXN5bmNfcGF0dGVybihxci9mLyk7CiAJb2soMSwgIiRp b19tZXRob2Q6IGJsb2NraW5nIHN0YXJ0IGJ1ZmZlciBpbywgbm8gbmVlZCB0byBzdGFydCBp byIpOwogCiAJIyBidWZmZXIgaXMgdmFsaWQgbm93LCBtYWtlIGl0IGludmFsaWQgYWdhaW4K QEAgLTYxMCw4ICs2MTAsOCBAQCBzdWIgdGVzdF9jb21wbGV0ZV9mb3JlaWduCiAJbXkgJG5v ZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbF9hID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwot CW15ICRwc3FsX2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7CisJbXkgJHBzcWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKwlteSAkcHNxbF9iID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBJc3N1ZSBJTyB3aXRob3V0 IHdhaXRpbmcgZm9yIGNvbXBsZXRpb24sIHRoZW4gc2xlZXAKIAkkcHNxbF9hLT5xdWVyeV9z YWZlKApAQCAtNjgwLDcgKzY4MCw3IEBAIHN1YiB0ZXN0X2Nsb3NlX2ZkCiAJbXkgJG5vZGUg PSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK IAogCXBzcWxfbGlrZSgKIAkJJGlvX21ldGhvZCwKQEAgLTczMCw3ICs3MzAsNyBAQCBzdWIg dGVzdF9pbmplY3QKIAlteSAkbm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0cHV0KTsK IAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBpbmplY3RlZCB3aGF0IHdlJ2QgZXhwZWN0 CiAJJHBzcWwtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIGlual9pb19zaG9ydF9yZWFkX2F0dGFj aCg4MTkyKTspKTsKQEAgLTg2NCw3ICs4NjQsNyBAQCBzdWIgdGVzdF9pbmplY3Rfd29ya2Vy CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNx bCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKIAogCSMgdHJpZ2dlciBhIGZhaWx1cmUgdG8gcmVvcGVuLCBzaG91bGQg ZXJyb3Igb3V0LCBidXQgc2hvdWxkIHJlY292ZXIKIAkkcHNxbC0+cXVlcnlfc2FmZSgKQEAg LTkwMSw3ICs5MDEsNyBAQCBzdWIgdGVzdF9pbnZhbGlkYXRlCiAJbXkgJGlvX21ldGhvZCA9 IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNx bCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAog CWZvcmVhY2ggbXkgJHBlcnNpc3RlbmN5IChxdyhub3JtYWwgdW5sb2dnZWQgdGVtcG9yYXJ5 KSkKIAl7CkBAIC05NTksOCArOTU5LDggQEAgc3ViIHRlc3RfemVybwogCW15ICRpb19tZXRo b2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9IHNoaWZ0OwogCi0JbXkgJHBzcWxfYSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQlt eSAkcHNxbF9iID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJv cl9zdG9wID0+IDApOworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSk7CisJbXkgJHBzcWxfYiA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCWZvcmVhY2ggbXkgJHBlcnNpc3Rl bmN5IChxdyhub3JtYWwgdGVtcG9yYXJ5KSkKIAl7CkBAIC05ODUsNyArOTg1LDcgQEAgU0VM RUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF96ZXJvJywgMCwgY29ycnVwdF9oZWFkZXI9PnRy dWUpOwogCQkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwg emVyb19vbl9lcnJvcj0+ZmFsc2UpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRp bj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAwIG9mIHJlbGF0aW9uICJi YXNlXC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICBp bnZhbGlkIHBhZ2UgaW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8KIAkJ KTsKIAogCQkjIENoZWNrIHRoYXQgcGFnZSB2YWxpZGl0eSBlcnJvcnMgYXJlIHplcm9lZApA QCAtOTk2LDcgKzk5Niw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8n LCAwLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSkpLAogCQkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxf YmxvY2tfbGwoJ3RibF96ZXJvJywgMCwgemVyb19vbl9lcnJvcj0+dHJ1ZSkpLAogCQkJcXIv XiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBhZ2Ug aW4gYmxvY2sgMCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQgcGFn ZSQvCisJCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxpZCBw YWdlIGluIGJsb2NrIDAgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0 IHBhZ2UkLwogCQkpOwogCiAJCSMgQW5kIHRoYXQgb25jZSB0aGUgY29ycnVwdGlvbiBpcyBm aXhlZCwgd2UgY2FuIHJlYWQgYWdhaW4KQEAgLTEwMDQsNyArMTAwNCw3IEBAIFNFTEVDVCBy ZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8nLCAwLCB6ZXJvX29uX2Vycm9yPT50cnVlKSks CiAJCQlxcSgKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDAsIHplcm89 PnRydWUpOwogKSk7Ci0JCSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJCSRwc3FsX2EtPmNs ZWFyX3N0ZGVycigpOwogCiAJCXBzcWxfbGlrZSgKIAkJCSRpb19tZXRob2QsCkBAIC0xMDI3 LDcgKzEwMjcsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBj b3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHplcm9pbmcg b2YgaW52YWxpZCBibG9jayAzIiwKIAkJCXFxKFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgn dGJsX3plcm8nLCAzLCB6ZXJvX29uX2Vycm9yPT50cnVlKTspLAogCQkJcXIvXiQvLAotCQkJ cXIvXnBzcWw6PHN0ZGluPjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sg MyBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQgcGFnZSQvCisJCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxpZCBwYWdlIGluIGJs b2NrIDMgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UkLwog CQkpOwogCiAKQEAgLTEwNDQsNyArMTA0NCw3IEBAIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2Nr KCd0YmxfemVybycsIDMsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJCSIkcGVyc2lzdGVu Y3k6IHRlc3QgcmVhZGluZyBvZiBpbnZhbGlkIGJsb2NrIDIsMyBpbiBsYXJnZXIgcmVhZCIs CiAJCQlxcShTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMSwgbmJsb2Nr cz0+NCwgemVyb19vbl9lcnJvcj0+ZmFsc2UpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3Fs OjxzdGRpbj46XGQrOiBFUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4u NCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhl IGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCisJCQlxci9eKD86cHNxbDo8 c3RkaW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4u NCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhl IGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJIyBUaGVu IHRlc3QgemVyb2luZyB2aWEgWkVST19PTl9FUlJPUiBmbGFnCkBAIC0xMDU0LDcgKzEwNTQs NyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCBjb3JydXB0X2hl YWRlcj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5OiB0ZXN0IHplcm9pbmcgb2YgaW52YWxp ZCBibG9jayAyLDMgaW4gbGFyZ2VyIHJlYWQsIFpFUk9fT05fRVJST1IiLAogCQkJcXEoU0VM RUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVybycsIDEsIG5ibG9ja3M9PjQsIHplcm9f b25fZXJyb3I9PnRydWUpKSwKIAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRpbj46XGQr OiBXQVJOSU5HOiAgemVyb2luZyBvdXQgMiBpbnZhbGlkIHBhZ2VzIGFtb25nIGJsb2NrcyAx Li40IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLipcbkRFVEFJTDogIEJsb2NrIDIgaGVsZCB0 aGUgZmlyc3QgemVyb2VkIHBhZ2VcLlxuSElOVDpbXlxuXSskLworCQkJcXIvXig/OnBzcWw6 PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIHplcm9pbmcgb3V0IDIgaW52YWxpZCBwYWdlcyBh bW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBC bG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdlXC5cbkhJTlQ6W15cbl0rJC8KIAkJ KTsKIAogCQkjIFRoZW4gdGVzdCB6ZXJvaW5nIHZpYSB6ZXJvX2RhbWFnZWRfcGFnZXMKQEAg LTEwNjksNyArMTA2OSw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8n LCAxLCBuYmxvY2tzPT40LCB6ZXJvX29uX2Vycm9yPT5mYWxzZSkKIENPTU1JVDsKICksCiAJ CQlxci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcg b3V0IDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFz ZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBwYWdl XC5cbkhJTlQ6W15cbl0rJC8KKwkJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5J Tkc6ICB6ZXJvaW5nIG91dCAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2Yg cmVsYXRpb24gImJhc2VcLy4qXC8uKlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJz dCB6ZXJvZWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJCSk7CiAKIAkJJHBzcWxfYS0+cXVl cnlfc2FmZShxcShDT01NSVQpKTsKQEAgLTEwODIsNyArMTA4Miw3IEBAIFNFTEVDVCBpbnZh bGlkYXRlX3JlbF9ibG9jaygndGJsX3plcm8nLCBnLmkpCiBGUk9NIGdlbmVyYXRlX3Nlcmll cygwLCAxNSkgZyhpKTsKIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDMs IHplcm89PnRydWUpOwogKSk7Ci0JCSRwc3FsX2EtPntzdGRlcnJ9ID0gJyc7CisJCSRwc3Fs X2EtPmNsZWFyX3N0ZGVycigpOwogCiAJCXBzcWxfbGlrZSgKIAkJCSRpb19tZXRob2QsCkBA IC0xMDkxLDcgKzEwOTEsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3plcm8n LCAzLCB6ZXJvPT50cnVlKTsKIAkJCXFxKAogU0VMRUNUIGNvdW50KCopIEZST00gdGJsX3pl cm8pLAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IEVSUk9SOiAgaW52 YWxpZCBwYWdlIGluIGJsb2NrIDIgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKiQvCisJCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9j ayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLwogCQkpOwogCiAJCSMgVmVyaWZ5IHRo YXQgYnVmbWdyLmMgSU8gemVyb2VzIG91dCBwYWdlcyB3aXRoIHBhZ2UgdmFsaWRpdHkgZXJy b3JzCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBTRUxFQ1QgY291bnQoKikgRlJPTSB0YmxfemVy bzsKIENPTU1JVDsKICksCiAJCQlxci9eXGQrJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+Olxk KzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNl XC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIGlu dmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLwogCQkp OwogCiAJCSMgQ2hlY2sgdGhhdCB3YXJuaW5ncy9lcnJvcnMgYWJvdXQgcGFnZSB2YWxpZGl0 eSBpbiBhbiBJTyBzdGFydGVkIGJ5CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBEUk9QIFRBQkxF IHRibF96ZXJvOwogKSk7CiAJfQogCi0JJHBzcWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkkcHNx bF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3FsX2EtPnF1aXQoKTsKIAkkcHNxbF9iLT5x dWl0KCk7CkBAIC0xMTU3LDE5ICsxMTU3LDE3IEBAIHN1YiB0ZXN0X2NoZWNrc3VtCiAJbXkg JGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9h ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZSk7CiAKLQkkcHNxbF9hLT5xdWVyeV9zYWZlKAotCQlxcSgKLUNSRUFURSBU QUJMRSB0Ymxfbm9ybWFsKGlkIGludCkgV0lUSCAoQVVUT1ZBQ1VVTV9FTkFCTEVEID0gZmFs c2UpOwotSU5TRVJUIElOVE8gdGJsX25vcm1hbCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApOwotU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBjb3Jy dXB0X2NoZWNrc3VtPT50cnVlKTsKLQotQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0YmxfdGVt cChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKTsKLUlOU0VSVCBJ TlRPIHRibF90ZW1wIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCk7Ci1TRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygndGJsX3RlbXAnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVl KTsKLVNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hl Y2tzdW09PnRydWUpOwotKSk7CisJIyBTcGxpdCBtdWx0aS1zdGF0ZW1lbnQgcXVlcnkgaW50 byBzZXBhcmF0ZSBjYWxscyB0byBtYXRjaCBwc3FsIGJlaGF2aW9yCisJIyB3aGVyZSBlcnJv cnMgaW4gb25lIHN0YXRlbWVudCBkb24ndCBwcmV2ZW50IHN1YnNlcXVlbnQgc3RhdGVtZW50 cworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JFQVRFIFRBQkxFIHRibF9ub3JtYWwoaWQg aW50KSBXSVRIIChBVVRPVkFDVVVNX0VOQUJMRUQgPSBmYWxzZSkpKTsKKwkkcHNxbF9hLT5x dWVyeV9zYWZlKHFxKElOU0VSVCBJTlRPIHRibF9ub3JtYWwgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIG1vZGlm eV9yZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKSkp OworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0Ymxf dGVtcChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5BQkxFRCA9IGZhbHNlKSkpOworCSRw c3FsX2EtPnF1ZXJ5X3NhZmUocXEoSU5TRVJUIElOVE8gdGJsX3RlbXAgU0VMRUNUIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNU IG1vZGlmeV9yZWxfYmxvY2soJ3RibF90ZW1wJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1 ZSkpKTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2Nr KCd0YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hlY2tzdW09PnRydWUpKSk7CiAKIAkjIFRvIGJl IGFibGUgdG8gdGVzdCBjaGVja3N1bSBmYWlsdXJlcyBvbiBzaGFyZWQgcmVscyB3ZSBuZWVk IGEgc2hhcmVkIHJlbAogCSMgd2l0aCBpbnZhbGlkIHBhZ2VzIC0gd2hpY2ggaXMgYSBiaXQg c2NhcnkuIHBnX3Noc2VjbGFiZWwgc2VlbXMgbGlrZSBhCkBAIC0xMTkyLDcgKzExOTAsNyBA QCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJlbCcsIDMsIGNvcnJ1cHRf Y2hlY2tzdW09PnRydWUpOwogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJs X25vcm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAogCQlx ci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBp biBibG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNx bDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJl bGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAKIAlteSAoJGNzX2NvdW50X2FmdGVy LCAkY3NfdHNfYWZ0ZXIpID0KQEAgLTEyMTQsNyArMTIxMiw3IEBAIFNFTEVDVCByZWFkX3Jl bF9ibG9ja19sbCgndGJsX25vcm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9 PmZhbHNlKTspLAogCQlxcSgKIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3RlbXAn LCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAot CQlxci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sg NCBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC90XGQrX1xkKyIkLworCQlxci9eKD86cHNxbDo8 c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0IG9mIHJlbGF0 aW9uICJiYXNlXC9cZCtcL3RcZCtfXGQrIiQvCiAJKTsKIAogCSgkY3NfY291bnRfYWZ0ZXIs ICRjc190c19hZnRlcikgPSBjaGVja3N1bV9mYWlsdXJlcygkcHNxbF9hLCAncG9zdGdyZXMn KTsKQEAgLTEyMzUsNyArMTIzMyw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJs X3RlbXAnLCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEo CiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3BnX3Noc2VjbGFiZWwnLCAyLCBuYmxvY2tz PT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8 c3RkaW4+OlxkKzogRVJST1I6ICAyIGludmFsaWQgcGFnZXMgYW1vbmcgYmxvY2tzIDIuLjMg b2YgcmVsYXRpb24gImdsb2JhbFwvXGQrIlxuREVUQUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBm aXJzdCBpbnZhbGlkIHBhZ2VcLlxuSElOVDpbXlxuXSskLworCQlxci9eKD86cHNxbDo8c3Rk aW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMi4uMyBv ZiByZWxhdGlvbiAiZ2xvYmFsXC9cZCsiXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZp cnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5dKyQvCiAJKTsKIAogCSgkY3NfY291bnRf YWZ0ZXIsICRjc190c19hZnRlcikgPSBjaGVja3N1bV9mYWlsdXJlcygkcHNxbF9hKTsKQEAg LTEyNTMsNyArMTI1MSw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgncGdfc2hzZWNs YWJlbCcsIDIsIG5ibG9ja3M9PjIsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspCiBTRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJlbCcsIDEsIHplcm89PnRydWUpOwogRFJP UCBUQUJMRSB0Ymxfbm9ybWFsOwogKSk7Ci0JJHBzcWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkk cHNxbF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3FsX2EtPnF1aXQoKTsKIH0KQEAgLTEy NjYsNyArMTI2NCw3IEBAIHN1YiB0ZXN0X2NoZWNrc3VtX2NyZWF0ZWRiCiAJbXkgJGlvX21l dGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlt eSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKIAogCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJJ0NSRUFURSBEQVRBQkFT RSByZWdyZXNzaW9uX2NyZWF0ZWRiX3NvdXJjZScpOwpAQCAtMTMwMCw3ICsxMjk4LDcgQEAg U1RSQVRFR1kgd2FsX2xvZzsKIAkJImNyZWF0ZSBkYXRhYmFzZSB3LyB3YWwgc3RyYXRlZ3ks IGludmFsaWQgc291cmNlIiwKIAkJJGNyZWF0ZWRiX3NxbCwKIAkJcXIvXiQvLAotCQlxci9w c3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAxIG9mIHJl bGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzog KT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAxIG9mIHJlbGF0aW9uICJiYXNlXC9c ZCtcL1xkKyIkLwogCSk7CiAJbXkgKCRjc19jb3VudF9hZnRlciwgJGNzX3RzX2FmdGVyKSA9 CiAJICBjaGVja3N1bV9mYWlsdXJlcygkcHNxbCwgJ3JlZ3Jlc3Npb25fY3JlYXRlZGJfc291 cmNlJyk7CkBAIC0xMzI5LDcgKzEzMjcsNyBAQCBzdWIgdGVzdF9pZ25vcmVfY2hlY2tzdW0K IAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAotCW15ICRw c3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9w ID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGUgPT4gJG5vZGUpOwogCiAJIyBUZXN0IHNldHVwCiAJJHBzcWwtPnF1ZXJ5X3NhZmUoCkBA IC0xMzk0LDcgKzEzOTIsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2NzX2Zh aWwnLCA0LCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCXFxKAogU0VMRUNUIHJlYWRfcmVs X2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9fb25fZXJyb3I9 PmZhbHNlKTspLAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBXQVJOSU5H OiAgaWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBpbiBibG9jayAzLworCQlxci9eKD86cHNx bDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBp biBibG9jayAzLwogCSk7CiAKIAkjIENoZWNrIHRoYXQgdGhlIGxvZyBjb250YWlucyBhIExP RyBtZXNzYWdlIGFib3V0IHRoZSBmYWlsdXJlCkBAIC0xNDA5LDcgKzE0MDcsNyBAQCBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVy b19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xs KCd0YmxfY3NfZmFpbCcsIDIsIG5ibG9ja3M9PjMsIHplcm9fb25fZXJyb3I9PmZhbHNlKTsp LAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQg cGFnZSBpbiBibG9jayA0IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlxci9e KD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0 IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAKIAkjIFRlc3QgbXVsdGkt YmxvY2sgcmVhZCB3aXRoIGRpZmZlcmVudCBwcm9ibGVtcyBpbiBkaWZmZXJlbnQgYmxvY2tz CkBAIC0xNDIxLDcgKzE0MTksNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX2Nz X2ZhaWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlLCBjb3JydXB0X2hlYWRlcgogU0VM RUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNCwgY29ycnVwdF9oZWFkZXI9 PnRydWUpOwogU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgNSwgY29y cnVwdF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHBz cWwtPmNsZWFyX3N0ZGVycigpOwogCiAJJGxvZ19sb2NhdGlvbiA9IC1zICRub2RlLT5sb2dm aWxlOwogCXBzcWxfbGlrZSgKQEAgLTE0MzEsNyArMTQyOSw3IEBAIFNFTEVDVCBtb2RpZnlf cmVsX2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDUsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJ cXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMSwgbmJsb2Nr cz0+NSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8 c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcgMyBwYWdlXChzXCkgYW5kIGlnbm9yaW5n IDIgY2hlY2tzdW0gZmFpbHVyZVwoc1wpIGFtb25nIGJsb2NrcyAxLi41IG9mIHJlbGF0aW9u ICIvCisJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICB6ZXJvaW5nIDMg cGFnZVwoc1wpIGFuZCBpZ25vcmluZyAyIGNoZWNrc3VtIGZhaWx1cmVcKHNcKSBhbW9uZyBi bG9ja3MgMS4uNSBvZiByZWxhdGlvbiAiLwogCSk7CiAKIApAQCAtMTQ2NCw3ICsxNDYyLDcg QEAgU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDEsIG5ibG9ja3M9 PjUsIHplcm9fb25fZXJyb3I9PnRydWUpOyksCiAJCXFxKAogU0VMRUNUIG1vZGlmeV9yZWxf YmxvY2soJ3RibF9jc19mYWlsJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVw dF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWwt PmNsZWFyX3N0ZGVycigpOwogCiAJcHNxbF9saWtlKAogCQkkaW9fbWV0aG9kLApAQCAtMTQ3 Myw3ICsxNDcxLDcgQEAgU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywg MywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVwdF9oZWFkZXIKIAkJcXEoCiBTRUxF Q1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVy b19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFyL14kLywKLQkJcXIvXnBzcWw6PHN0ZGluPjpc ZCs6IEVSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDMgb2YgcmVsYXRpb24gIi8pOwor CQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBi bG9jayAzIG9mIHJlbGF0aW9uICIvKTsKIAogCXBzcWxfbGlrZSgKIAkJJGlvX21ldGhvZCwK QEAgLTE0ODIsNyArMTQ4MCw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX2Nz X2ZhaWwnLCAzLCBuYmxvY2tzPT4xLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEo CiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+ MSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3Rk aW4+OlxkKzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9u ICJiYXNlXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UvCisJCXFyL14oPzpwc3FsOjxzdGRpbj46 XGQrOiApP1dBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAi YmFzZVwvLioiOyB6ZXJvaW5nIG91dCBwYWdlLwogCSk7CiAKIApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDVfdGltZW91dHMucGwgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAwNV90aW1lb3V0cy5wbAppbmRleCBjMTZiN2RiZjVlNi4u ZDY0YTc4N2E5YWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3Qv MDA1X3RpbWVvdXRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1 X3RpbWVvdXRzLnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CiB1c2UgbG9jYWxlOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAg LTQyLDI0ICs0MywxNiBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Jyk7CiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndHJhbnNhY3Rpb24t dGltZW91dCcsICd3YWl0Jyk7Iik7CiAKLW15ICRwc3FsX3Nlc3Npb24gPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxfc2Vzc2lvbiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotIyBUaGUgZm9sbG93 aW5nIHF1ZXJ5IHdpbGwgZ2VuZXJhdGUgYSBzdHJlYW0gb2YgU0VMRUNUIDEgcXVlcmllcy4g VGhpcyBpcyBkb25lCi0jIHNvIHRvIGV4ZXJjaXNlIHRyYW5zYWN0aW9uIHRpbWVvdXQgaW4g dGhlIHByZXNlbmNlIG9mIHNob3J0IHF1ZXJpZXMuCi0jIE5vdGU6IHRoZSBpbnRlcnZhbCB2 YWx1ZSBpcyBwYXJzZWQgd2l0aCBsb2NhbGUtYXdhcmUgc3RydG9kKCkKLSRwc3FsX3Nlc3Np b24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2JnX3BzcWwvLAotCXNwcmludGYoCi0J CXEoXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAotCQlTRVQgdHJhbnNhY3Rpb25fdGltZW91dCB0 byAnMTBtcyc7Ci0JCUJFR0lOOwotCQlTRUxFQ1QgMSBcd2F0Y2ggJWcKLQkJXHEKLSksIDAu MDAxKSk7CiskcHNxbF9zZXNzaW9uLT5kbygiU0VUIHRyYW5zYWN0aW9uX3RpbWVvdXQgdG8g JzEwbXMnOyIpOworCiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygiQkVHSU47IERPICcgYmVn aW4gbG9vcCBQRVJGT1JNIHBnX3NsZWVwKDAuMDAxKTsgZW5kIGxvb3A7IGVuZCAnOyIpOwog CiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1lb3V0IGluamVjdGlv biBwb2ludC4gV2lsbCBnZXQgYW4gZXJyb3IKICMgaGVyZSBpZiBhbnl0aGluZyBnb2VzIHdy b25nLgogJG5vZGUtPndhaXRfZm9yX2V2ZW50KCdjbGllbnQgYmFja2VuZCcsICd0cmFuc2Fj dGlvbi10aW1lb3V0Jyk7CitwYXNzKCJnb3QgdHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIp OwogCiBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCkBAIC03MCwxMSAr NjMsOSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhl IHRpbWVvdXQgd2FzIGxvZ2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coJ3Rlcm1pbmF0aW5n IGNvbm5lY3Rpb24gZHVlIHRvIHRyYW5zYWN0aW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0 KTsKK3Bhc3MoImdvdCB0cmFuc2FjdGlvbiB0aW1lb3V0IGxvZyIpOwogCi0jIElmIHdlIHNl bmQgXHEgd2l0aCAkcHNxbF9zZXNzaW9uLT5xdWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50 IHRvIHRoZSBzZXNzaW9uCi0jIGFscmVhZHkgY2xvc2VkLiBTbyBccSBpcyBpbiBpbml0aWFs IHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlzaCBJUEM6OlJ1bi4KLSRwc3FsX3Nlc3Npb24t PntydW59LT5maW5pc2g7Ci0KKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiAjCiAjIDIuIFRl c3Qgb2YgdGhlIGlkbGUgaW4gdHJhbnNhY3Rpb24gdGltZW91dApAQCAtODUsMTAgKzc2LDgg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogKTsKIAogIyBXZSBiZWdpbiBhIHRy YW5zYWN0aW9uIGFuZCB0aGUgaGFuZCBvbiB0aGUgbGluZQotJHBzcWxfc2Vzc2lvbiA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVy eV91bnRpbCgKLQlxci9zdGFydGluZ19iZ19wc3FsLywgcSgKLSAgIFxlY2hvIHN0YXJ0aW5n X2JnX3BzcWwKKyRwc3FsX3Nlc3Npb24tPnJlY29ubmVjdDsKKyRwc3FsX3Nlc3Npb24tPmRv KHEoCiAgICBTRVQgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQgdG8gJzEw bXMnOwogICAgQkVHSU47CiApKTsKQEAgLTk2LDYgKzg1LDcgQEAgJHBzcWxfc2Vzc2lvbi0+ cXVlcnlfdW50aWwoCiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1l b3V0IGluamVjdGlvbiBwb2ludC4KICRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJh Y2tlbmQnLAogCSdpZGxlLWluLXRyYW5zYWN0aW9uLXNlc3Npb24tdGltZW91dCcpOworcGFz cygiZ290IGlkbGUgaW4gdHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIpOwogCiAkbG9nX29m ZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCkBAIC0xMDYsOCArOTYsOSBAQCAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhlIHRpbWVvdXQgd2FzIGxv Z2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2coCiAJJ3Rlcm1pbmF0aW5nIGNvbm5lY3Rpb24g ZHVlIHRvIGlkbGUtaW4tdHJhbnNhY3Rpb24gdGltZW91dCcsICRsb2dfb2Zmc2V0KTsKK3Bh c3MoImdvdCBpZGxlIGluIHRyYW5zYWN0aW9uIHRpbWVvdXQgbG9nIik7CiAKLW9rKCRwc3Fs X3Nlc3Npb24tPnF1aXQpOworJHBzcWxfc2Vzc2lvbi0+Y2xvc2U7CiAKIAogIwpAQCAtMTE3 LDE1ICsxMDgsMTQgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2lkbGUtc2Vzc2lvbi10aW1lb3V0JywgJ3dhaXQn KTsiKTsKIAogIyBXZSBqdXN0IGluaXRpYWxpemUgdGhlIEdVQyBhbmQgd2FpdC4gTm8gdHJh bnNhY3Rpb24gaXMgcmVxdWlyZWQuCi0kcHNxbF9zZXNzaW9uID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFy L3N0YXJ0aW5nX2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAorJHBz cWxfc2Vzc2lvbi0+cmVjb25uZWN0OworJHBzcWxfc2Vzc2lvbi0+ZG8ocSgKICAgIFNFVCBp ZGxlX3Nlc3Npb25fdGltZW91dCB0byAnMTBtcyc7CiApKTsKIAogIyBXYWl0IHVudGlsIHRo ZSBiYWNrZW5kIGVudGVycyB0aGUgdGltZW91dCBpbmplY3Rpb24gcG9pbnQuCiAkbm9kZS0+ d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5kJywgJ2lkbGUtc2Vzc2lvbi10aW1lb3V0 Jyk7CitwYXNzKCJnb3QgaWRsZSBzZXNzaW9uIHRpbWVvdXQgZXZlbnQiKTsKIAogJGxvZ19v ZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIApAQCAtMTM2LDcgKzEyNiw4IEBAICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICMgQ2hlY2sgdGhhdCB0aGUgdGltZW91dCB3YXMg bG9nZ2VkLgogJG5vZGUtPndhaXRfZm9yX2xvZygndGVybWluYXRpbmcgY29ubmVjdGlvbiBk dWUgdG8gaWRsZS1zZXNzaW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0KTsKK3Bhc3MoImdv dCBpZGxlIHNlc2lvbiB0aWVtb3V0IGxvZyIpOwogCi1vaygkcHNxbF9zZXNzaW9uLT5xdWl0 KTsKKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA3X2NhdGNhY2hlX2ludmFsLnBs IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwK aW5kZXggNDI0NTU2MjYxYzkuLmUzYjNmZDhiYWU5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNoZV9pbnZhbC5wbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRjYWNoZV9pbnZhbC5wbApAQCAtNDYsMTIg KzQ2LDEyIEBAICRub2RlLT5zYWZlX3BzcWwoCiAgICAgQ1JFQVRFIEZVTkNUSU9OIGZvb2Z1 bmMoZHVtbXkgaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTIFwkXCQgU0VMRUNUIDE7IC8q ICRsb25ndGV4dCAqLyBcJFwkIExBTkdVQUdFIFNRTAogXSk7CiAKLW15ICRwc3FsX3Nlc3Np b24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotbXkgJHBzcWxfc2Vz c2lvbjIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxf c2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2Rl KTsKK215ICRwc3FsX3Nlc3Npb24yID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOwogCiAjIFNldCBpbmplY3Rpb24gcG9pbnQgaW4gdGhlIHNlc3Np b24sIHRvIHBhdXNlIHdoaWxlIHBvcHVsYXRpbmcgdGhlCiAjIGNhdGNhY2hlIGxpc3QKLSRw c3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoCiskcHNxbF9zZXNzaW9uLT5kbygKIAlxcVsKICAg ICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKICAgICBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2NhdGNhY2hlLWxpc3QtbWlzcy1zeXN0YWJsZS1zY2Fu LXN0YXJ0ZWQnLCAnd2FpdCcpOwpAQCAtNTksMTAgKzU5LDkgQEAgJHBzcWxfc2Vzc2lvbi0+ cXVlcnlfc2FmZSgKIAogIyBUaGlzIHBhdXNlcyBvbiB0aGUgaW5qZWN0aW9uIHBvaW50IHdo aWxlIHBvcHVsYXRpbmcgY2F0Y2FjaGUgbGlzdAogIyBmb3IgZnVuY3Rpb25zIHdpdGggbmFt ZSAiZm9vZnVuYyIKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5n X2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAotICAgU0VMRUNUIGZv b2Z1bmMoMSk7CiskcHNxbF9zZXNzaW9uLT5kb19hc3luYygKKyAgIHEoCisgICAgICBTRUxF Q1QgZm9vZnVuYygxKTsKICkpOwogCiAjIFdoaWxlIHRoZSBmaXJzdCBzZXNzaW9uIGlzIGJ1 aWxkaW5nIHRoZSBjYXRjYWNoZSBsaXN0LCBjcmVhdGUgYSBuZXcKQEAgLTgzLDE2ICs4Miwx OSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyB0cnlpbmcgdG8gZXhlcmNpc2UgaGVyZS4pCiAj CiAjIFRoZSAiU0VMRUNUIGZvb2Z1bmMoMSkiIHF1ZXJ5IHdpbGwgbm93IGZpbmlzaC4KLSRw c3FsX3Nlc3Npb24yLT5xdWVyeV9zYWZlKAorJHBzcWxfc2Vzc2lvbjItPmRvKAogCXFxWwog ICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnY2F0Y2FjaGUtbGlzdC1taXNz LXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwogICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2RldGFjaCgnY2F0Y2FjaGUtbGlzdC1taXNzLXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwog XSk7CiAKICMgVGVzdCB0aGF0IHRoZSBuZXcgZnVuY3Rpb24gaXMgdmlzaWJsZSB0byB0aGUg c2Vzc2lvbi4KLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIlNFTEVDVCBmb29mdW5jKCk7 Iik7CiskcHNxbF9zZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOworbXkgJHJlcyA9ICRw c3FsX3Nlc3Npb24tPnF1ZXJ5KCJTRUxFQ1QgZm9vZnVuYygpOyIpOwogCi1vaygkcHNxbF9z ZXNzaW9uLT5xdWl0KTsKLW9rKCRwc3FsX3Nlc3Npb24yLT5xdWl0KTsKK2lzKCRyZXMtPntz dGF0dXN9LCAyLCAiZ290IFRVUExFU19PSyIpOworCiskcHNxbF9zZXNzaW9uLT5jbG9zZTsK KyRwc3FsX3Nlc3Npb24yLT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMF9pbmRleF9jb25jdXJyZW50bHlf dXBzZXJ0LnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfaW5kZXhfY29u Y3VycmVudGx5X3Vwc2VydC5wbAppbmRleCAzYmRiNjMyODg3ZS4uY2NhM2IzYTExZWEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDEwX2luZGV4X2NvbmN1 cnJlbnRseV91cHNlcnQucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbApAQCAtMTMsNiArMTMsNyBAQCB1c2Ug c3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiB1c2UgVGltZTo6 SGlSZXMgcXcodXNsZWVwKTsKQEAgLTUxLDQ3ICs1MiwzOCBAQCBBTFRFUiBUQUJMRSB0ZXN0 LnRibGV4cHIgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1 cCBhdCBzZXQtZGVhZCBwaGFzZSknKTsKIAotIyBDcmVhdGUgc2Vzc2lvbnMgd2l0aCBvbl9l cnJvcl9zdG9wID0+IDAgc28gcHNxbCBkb2Vzbid0IGV4aXQgb24gU1FMIGVycm9ycy4KLSMg VGhpcyBhbGxvd3MgdXMgdG8gY29sbGVjdCBzdGRlcnIgYW5kIGRldGVjdCBlcnJvcnMgYWZ0 ZXIgdGhlIHRlc3QgY29tcGxldGVzLgotbXkgJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMyID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMz ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+ IDApOworIyBDcmVhdGUgc2Vzc2lvbnMgZm9yIGNvbmN1cnJlbnQgb3BlcmF0aW9ucworbXkg JHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor bXkgJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUp OworbXkgJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5v ZGUpOwogCiAjIFNldHVwIGluamVjdGlvbiBwb2ludHMgZm9yIGVhY2ggc2Vzc2lvbgotJHMx LT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4 Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBd KTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7 CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdy ZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcp OwogXSk7CiAKICMgczMgc3RhcnRzIFJFSU5ERVggKHdpbGwgYmxvY2sgb24gcmVpbmRleC1y ZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkKQotJHMzLT5xdWVyeV91bnRp bCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgK LVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTsKLV0pOworJHMz LT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtl eTtdKTsKIAogIyBXYWl0IGZvciBzMyB0byBoaXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmpl Y3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc2V0LWRlYWQnKTsKIAogIyBzMSBzdGFydHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGNo ZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCkKLSRzMS0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1d KTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTtdKTsKIAogIyBXYWl0IGZvciBzMSB0byBoaXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmpl Y3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFp bnQtbm8tY29uZmxpY3QnKTsKQEAgLTEwMSwxMSArOTMsNyBAQCB3YWtldXBfaW5qZWN0aW9u X3BvaW50KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUt c2V0LWRlYWQnKTsKIAogIyBzMiBzdGFydHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGV4ZWMt aW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUpCi0kczItPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczIK LUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05G TElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKICMgV2Fp dCBmb3IgczIgdG8gaGl0IGluamVjdGlvbiBwb2ludAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwpAQCAtMTI1 LDUxICsxMTMsMzkgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUg VEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVz dDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1cCBhdCBzd2FwIHBoYXNl KScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgK KyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5p cXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVl cnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1i ZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5 X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlv bi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVl cnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19y ZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1d KTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRi bHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVs YXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwo Ci0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9z MQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElD VCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9f YXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENP TkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25z dHJhaW50LW5vLWNvbmZsaWN0Jyk7CiAKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc3dhcCcpOwogCi0kczIt PnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFy dGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3co KSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwot XSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEz LG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9y ZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtMTg0LDUwICsxNjAsMzggQEAgJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5U TFkgKyBVUFNFUlQgKHMxIHdha2VzIGJlZm9yZSByZWluZGV4KScpOwogCi0kczEgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0k czIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco bm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8o CiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1 bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAog CXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVm b3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFy L3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVjaG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2Fz eW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwog CiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lO U0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkp IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25f cG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnKTsKIAogIyBTdGFydCBzMiBCRUZPUkUgd2FraW5nIHJlaW5kZXggKGtleSBk aWZmZXJlbmNlIGZyb20gcGVybXV0YXRpb24gMSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5T RVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNU IChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0 aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2 ZScpOwogCkBAIC0yNDUsNTIgKzIwOSw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiBub3RlKCdUZXN0OiBSRUlOREVYICsgVVBTRVJUIE9OIENPTlNUUkFJTlQgKHNldC1k ZWFkIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVl cnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAK LSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVj LWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0pOwogCi0k czMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRl eC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJywgJ3dhaXQnKTsKIF0p OwogCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVj aG8gc3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50 Ymxwa19wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgdGVzdC50Ymxwa19wa2V5O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUs ICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAot JHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8g c3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs IG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05T VFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlx dWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50 KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRl YWQnKTsKIAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMo cVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElD VCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJl Zm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtMzA1LDUxICsyNTcsMzkgQEAgJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50Ymxwaycp OwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCArIFVQU0VS VCBPTiBDT05TVFJBSU5UIChzd2FwIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0k czMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAk bm9kZSk7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3Qn LCAnd2FpdCcpOwogXSk7CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywg J3dhaXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAn LCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVp bmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlv bl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1z d2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywg cVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBW QUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5 IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5j KHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJ Q1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVj dGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9y ZS1zd2FwJyk7CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3My LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50Ymxw ayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19w a2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09O RkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2Vy dC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTM2NCw1MCArMzA0LDM4IEBA ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJs cGsnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5ERVggKyBV UFNFUlQgT04gQ09OU1RSQUlOVCAoczEgd2FrZXMgYmVmb3JlIHJlaW5kZXgpJyk7CiAKLSRz MSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3Ry YWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAor JHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNl cnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRz My0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50 aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4 Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRz My0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3Br ZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24t Y29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAot CXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEK LUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNU IE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBu b3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFM VUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3Bv aW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNv bmZsaWN0Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1 ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGlu Z191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkp IE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVw ZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRl c3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQg dGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVj dWxhdGl2ZScpOwogCkBAIC00MjUsNTIgKzM1Myw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIG9uIHBhcnRpdGlvbmVkIHRhYmxlIChz ZXQtZGVhZCBwaGFzZSknKTsKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMxID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0kczEt PnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19z ZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnY2hlY2stZXhj bHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0JywgJ3dhaXQnKTsKIF0p OwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsK IAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jl aW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcsICd3YWl0Jyk7 CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsK LVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRl c3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9uX3BrZXk7XSk7CiAKIG9rX2lu amVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJl Zm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vw c2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRl c3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBE QVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNF UlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rp b25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQt bm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwKIAkncmVp bmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXNldC1kZWFkJyk7CiAKLSRzMi0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywg bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5z ZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApAQCAtNDg1LDUxICs0MDEsMzkg QEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50 YmxwYXJ0ZWQnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5E RVggb24gcGFydGl0aW9uZWQgdGFibGUgKHN3YXAgcGhhc2UpJyk7CiAKLSRzMSA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRz MiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9 PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1j b25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygK IAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3Vs YXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJ cVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVj dGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZv cmUtc3dhcCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFy dGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRv X2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9u X3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRp b24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQot SU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZM SUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5k b19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygp KSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7 CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlx dWUtY29uc3RyYWludC1uby1jb25mbGljdCcpOwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50 KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsK IAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVj aG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxV RVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxw YXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VU IHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC01NDQsNTAg KzQ0OCwzOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJM RSB0ZXN0LnRibHBhcnRlZCcpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVz dDogUkVJTkRFWCBvbiBwYXJ0aXRpb25lZCB0YWJsZSAoczEgd2FrZXMgYmVmb3JlIHJlaW5k ZXgpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25f ZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZl KAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11 bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5x dWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0 X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0 LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVl cnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0 aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRz My0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFy dGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0 aXRpb25fcGtleTsKLV0pOworJHMzLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5O10pOwogCiBva19pbmplY3Rpb25fcG9p bnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRl YWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRl ZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBk YXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVz dC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0 Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1ZXJ5X3Vu dGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNl cnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBP TiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsK KyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEz LCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZv cmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTYwNSwzNSArNDk3LDI3IEBAICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGFydGVk Jyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYIG9uIHBh cnRpdGlvbmVkIHRhYmxlLCBjYWNoZSBpbnZhbCBiZXR3ZWVuIHR3byBnZXRfcGFydGl0aW9u X2FuY2VzdG9ycycpOwogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMS0+cXVl cnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9s b2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdleGVjLWluaXQtcGFy dGl0aW9uLWFmdGVyLWdldC1wYXJ0aXRpb24tYW5jZXN0b3JzJywgJ3dhaXQnKTsKIF0pOwog Ci0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVp bmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3YXAnLCAnd2FpdCcpOwogXSk7 CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8sIHFbCi1cZWNo byBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0ZXN0LnRi bF9wYXJ0aXRpb25fcGtleTsKLV0pOworJHMyLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5O10pOwogCiBva19pbmplY3Rp b25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUt c3dhcCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8s IHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFy dGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0 ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQ REFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQo JG5vZGUsCiAJJ2V4ZWMtaW5pdC1wYXJ0aXRpb24tYWZ0ZXItZ2V0LXBhcnRpdGlvbi1hbmNl c3RvcnMnKTsKQEAgLTY1MiwyNiArNTM2LDI0IEBAIG5vdGUoJ1Rlc3Q6IENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgKyBVUFNFUlQnKTsKICMgVXNlcyBpbnZhbGlkYXRlLWNhdGFsb2ct c25hcHNob3QtZW5kIHRvIHRlc3QgY2F0YWxvZyBpbnZhbGlkYXRpb24KICMgZHVyaW5nIFVQ U0VSVAogCi0kczEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vy cm9yX3N0b3AgPT4gMCk7Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLW15ICRzMV9waWQgPSAkczEt PnF1ZXJ5X3NhZmUoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CisjIEdldCB0aGUgc2Vz c2lvbidzIGJhY2tlbmQgUElEIGJlZm9yZSBhdHRhY2hpbmcgaW5qZWN0aW9uIHBvaW50cwor bXkgJHMxX3BpZCA9ICRzMS0+cXVlcnlfb25ldmFsKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQo KScpOwogCiAjIHMxIGF0dGFjaGVzIEJPVEggaW5qZWN0aW9uIHBvaW50cyAtIHRoZSB1bmlx dWUgY29uc3RyYWludCBjaGVjayBBTkQgY2F0YWxvZyBzbmFwc2hvdAotJHMxLT5xdWVyeV9z YWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1v ci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMx LT5xdWVyeV91bnRpbCgKLQlxci9hdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50LywgcVsKLVxl Y2hvIGF0dGFjaGluZ19pbmplY3Rpb25fcG9pbnQKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0Jyk7Ci1d KTsKLQogIyBJbiBjYXNlcyBvZiBjYWNoZSBjbG9iYmVyaW5nLCBzMSBtYXkgaGl0IHRoZSBp bmplY3Rpb24gcG9pbnQgZHVyaW5nIGF0dGFjaC4KKyMgU3RhcnQgYXR0YWNoIGFzeW5jaHJv bm91c2x5IHNvIHdlIGNhbiBjaGVjayBpZiBpdCBibG9ja3MuCiskczEtPmRvX2FzeW5jKHFb U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbnZhbGlkYXRlLWNhdGFsb2ctc25h cHNob3QtZW5kJywgJ3dhaXQnKTtdKTsKKwogIyBXYWl0IGZvciB0aGF0IHNlc3Npb24gdG8g YmVjb21lIGlkbGUgKGF0dGFjaCBjb21wbGV0ZWQpLCBvciB3YWtlIGl0IHVwIGlmCiAjIGl0 IGJlY29tZXMgc3R1Y2sgb24gaW5qZWN0aW9uIHBvaW50LgogaWYgKCF3YWl0X2Zvcl9pZGxl KCRub2RlLCAkczFfcGlkKSkKQEAgLTY4NSwzNCArNTY3LDI4IEBAIGlmICghd2FpdF9mb3Jf aWRsZSgkbm9kZSwgJHMxX3BpZCkpCiAJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCV0pOwogfQorIyBXYWl0 IGZvciBhc3luYyBjb21tYW5kIHRvIGNvbXBsZXRlCiskczEtPndhaXRfZm9yX2NvbXBsZXRp b247CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dhaXQnKTsKIF0p OwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnLCAnd2FpdCcpOwogXSk7CiAKICMgczM6 IFN0YXJ0IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgKGJsb2NrcyBvbiBkZWZpbmUtaW5k ZXgtYmVmb3JlLXNldC12YWxpZCkKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdf Y3JlYXRlX2luZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX2NyZWF0ZV9pbmRleAotQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRlIE9OIHRlc3Qu dGJscGsoaSk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSB0YmxfcGtleV9kdXBsaWNhdGUgT04gdGVzdC50YmxwayhpKTtdKTsKIAog b2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFs aWQnKTsKIAogIyBzMTogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24gaW52YWxpZGF0ZS1jYXRh bG9nLXNuYXBzaG90LWVuZCkKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBz ZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVz dC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNF VCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5U TyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLCAnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCkBAIC03MjAsMTEg KzU5Niw3IEBAIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUtY2F0YWxv Zy1zbmFwc2hvdC1lbmQnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdkZWZp bmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMyOiBTdGFydCBVUFNFUlQgKGJs b2NrcyBvbiBleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlKQotJHMyLT5x dWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3RhcnRp bmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkp IE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0p OworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMyxu b3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygp O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZvcmUt aW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAKQEAgLTc0NSwyNCArNjE3LDIwIEBAICRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGFydGVkJyk7 CiBub3RlKCdUZXN0OiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9uIHBhcnRpYWwgaW5k ZXggKyBVUFNFUlQnKTsKICMgVXNlcyBpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5k IHRvIHRlc3QgY2F0YWxvZyBpbnZhbGlkYXRpb24gZHVyaW5nIFVQU0VSVAogCi0kczEgPSAk bm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7 Ci0kczIgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0 b3AgPT4gMCk7Ci0kczMgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9u X2Vycm9yX3N0b3AgPT4gMCk7CiskczEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiskczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiskczMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiAKLSRzMV9waWQgPSAkczEtPnF1ZXJ5X3NhZmUoJ1NFTEVD VCBwZ19iYWNrZW5kX3BpZCgpJyk7CiskczFfcGlkID0gJHMxLT5xdWVyeV9vbmV2YWwoJ1NF TEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7CiAKICMgczEgYXR0YWNoZXMgQk9USCBpbmplY3Rp b24gcG9pbnRzIC0gdGhlIHVuaXF1ZSBjb25zdHJhaW50IGNoZWNrIEFORCBjYXRhbG9nIHNu YXBzaG90Ci0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0Jywg J3dhaXQnKTsKIF0pOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL2F0dGFjaGluZ19pbmpl Y3Rpb25fcG9pbnQvLCBxWwotXGVjaG8gYXR0YWNoaW5nX2luamVjdGlvbl9wb2ludAotU0VM RUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNo b3QtZW5kJywgJ3dhaXQnKTsKLV0pOworJHMxLT5kbyhxW1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcsICd3YWl0Jyk7 XSk7CiAKICMgSW4gY2FzZXMgb2YgY2FjaGUgY2xvYmJlcmluZywgczEgbWF5IGhpdCB0aGUg aW5qZWN0aW9uIHBvaW50IGR1cmluZyBhdHRhY2guCiAjIFdhaXQgZm9yIHRoYXQgc2Vzc2lv biB0byBiZWNvbWUgaWRsZSAoYXR0YWNoIGNvbXBsZXRlZCksIG9yIHdha2UgaXQgdXAgaWYK QEAgLTc3OSwzMyArNjQ3LDI1IEBAIGlmICghd2FpdF9mb3JfaWRsZSgkbm9kZSwgJHMxX3Bp ZCkpCiAJXSk7CiB9CiAKLSRzMi0+cXVlcnlfc2FmZSgKKyRzMi0+ZG8oCiAJcVsKIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJywgJ3dh aXQnKTsKIF0pOwogCi0kczMtPnF1ZXJ5X3NhZmUoCiskczMtPmRvKAogCXFbCiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnZGVmaW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnLCAnd2FpdCcpOwogXSk7 CiAKICMgczM6IFN0YXJ0IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgKGJsb2NrcyBvbiBk ZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCkKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIv c3RhcnRpbmdfY3JlYXRlX2luZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX2NyZWF0ZV9pbmRl eAotQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJsX3BrZXlfc3BlY2lhbF9k dXBsaWNhdGUgT04gdGVzdC50YmxleHByKGFicyhpKSkgV0hFUkUgaSA8IDEwMDAwOwotXSk7 CiskczMtPmRvX2FzeW5jKHFbQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgdGJs X3BrZXlfc3BlY2lhbF9kdXBsaWNhdGUgT04gdGVzdC50YmxleHByKGFicyhpKSkgV0hFUkUg aSA8IDEwMDAwO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdkZWZpbmUtaW5k ZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMxOiBTdGFydCBVUFNFUlQgKGJsb2NrcyBv biBpbnZhbGlkYXRlLWNhdGFsb2ctc25hcHNob3QtZW5kKQotJHMxLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3Mx Ci1JTlNFUlQgSU5UTyB0ZXN0LnRibGV4cHIgVkFMVUVTKDEzLG5vdygpKSBPTiBDT05GTElD VCAoYWJzKGkpKSBXSEVSRSBpIDwgMTAwIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxleHByIFZB TFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hFUkUgaSA8IDEwMCBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50 KCRub2RlLCAnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCcpOwogCkBAIC04MTMs MTEgKzY3Myw3IEBAIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUtY2F0 YWxvZy1zbmFwc2hvdC1lbmQnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdk ZWZpbmUtaW5kZXgtYmVmb3JlLXNldC12YWxpZCcpOwogCiAjIHMyOiBTdGFydCBVUFNFUlQg KGJsb2NrcyBvbiBleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlKQotJHMy LT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3Rh cnRpbmdfdXBzZXJ0X3MyCi1JTlNFUlQgSU5UTyB0ZXN0LnRibGV4cHIgVkFMVUVTKDEzLG5v dygpKSBPTiBDT05GTElDVCAoYWJzKGkpKSBXSEVSRSBpIDwgMTAwIERPIFVQREFURSBTRVQg dXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8g dGVzdC50YmxleHByIFZBTFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hF UkUgaSA8IDEwMCBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tf aW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVj dWxhdGl2ZScpOwogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2ludmFsaWRhdGUt Y2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKQEAgLTkxOCwzMyArNzc0LDIzIEBAIFNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnJHBvaW50X25hbWUnKTsKIF0pOwogfQogCi0jIFdh aXQgZm9yIGFueSBwZW5kaW5nIHF1ZXJ5IHRvIGNvbXBsZXRlLCBjYXB0dXJlIHN0ZGVyciwg YW5kIGNsb3NlIHRoZSBzZXNzaW9uLgotIyBSZXR1cm5zIHRoZSBzdGRlcnIgb3V0cHV0IChl eGNsdWRpbmcgaW50ZXJuYWwgbWFya2VycykuCisjIFdhaXQgZm9yIGFueSBwZW5kaW5nIHF1 ZXJ5IHRvIGNvbXBsZXRlIGFuZCBjbG9zZSB0aGUgc2Vzc2lvbi4KKyMgUmV0dXJucyBlbXB0 eSBzdHJpbmcgb24gc3VjY2VzcywgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgogc3ViIHNh ZmVfcXVpdAogewogCW15ICgkc2Vzc2lvbikgPSBAXzsKIAotCSMgU2VuZCBhIG1hcmtlciBh bmQgd2FpdCBmb3IgaXQgdG8gZW5zdXJlIGFueSBwZW5kaW5nIHF1ZXJ5IGNvbXBsZXRlcwot CW15ICRiYW5uZXIgPSAic2FmZV9xdWl0X21hcmtlciI7Ci0JbXkgJGJhbm5lcl9tYXRjaCA9 IHFyLyhefFxuKSRiYW5uZXJccj9cbi87CisJIyBXYWl0IGZvciBhbnkgYXN5bmMgcXVlcmll cyB0byBjb21wbGV0ZQorCSRzZXNzaW9uLT53YWl0X2Zvcl9jb21wbGV0aW9uOwogCi0JJHNl c3Npb24tPntzdGRpbn0gLj0gIlxcZWNobyAkYmFubmVyXG5cXHdhcm4gJGJhbm5lclxuIjsK LQotCXB1bXBfdW50aWwoCi0JCSRzZXNzaW9uLT57cnVufSwgJHNlc3Npb24tPnt0aW1lb3V0 fSwKLQkJXCRzZXNzaW9uLT57c3Rkb3V0fSwgJGJhbm5lcl9tYXRjaCk7Ci0JcHVtcF91bnRp bCgKLQkJJHNlc3Npb24tPntydW59LCAkc2Vzc2lvbi0+e3RpbWVvdXR9LAotCQlcJHNlc3Np b24tPntzdGRlcnJ9LCAkYmFubmVyX21hdGNoKTsKLQotCSMgQ2FwdHVyZSBzdGRlcnIgKGV4 Y2x1ZGluZyB0aGUgYmFubmVyKQotCW15ICRzdGRlcnIgPSAkc2Vzc2lvbi0+e3N0ZGVycn07 Ci0JJHN0ZGVyciA9fiBzLyRiYW5uZXJfbWF0Y2gvLzsKKwkjIENoZWNrIGNvbm5lY3Rpb24g c3RhdHVzCisJbXkgJHN0YXR1cyA9ICRzZXNzaW9uLT5jb25uX3N0YXR1czsKIAogCSMgQ2xv c2UgdGhlIHNlc3Npb24KLQkkc2Vzc2lvbi0+cXVpdDsKKwkkc2Vzc2lvbi0+Y2xvc2U7CiAK LQlyZXR1cm4gJHN0ZGVycjsKKwkjIFJldHVybiBlbXB0eSBzdHJpbmcgaWYgY29ubmVjdGlv biB3YXMgT0ssIG90aGVyd2lzZSByZXR1cm4gZXJyb3IKKwlyZXR1cm4gKCRzdGF0dXMgPT0g UG9zdGdyZVNRTDo6UHFGRkk6OkNPTk5FQ1RJT05fT0soKSkgPyAnJyA6ICdjb25uZWN0aW9u IGVycm9yJzsKIH0KIAogIyBIZWxwZXIgZnVuY3Rpb246IHZlcmlmeSB0aGF0IHRoZSBnaXZl biBzZXNzaW9ucyBleGl0IGNsZWFubHkuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhhY3QucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2xydS90LzAwMV9tdWx0aXhhY3QucGwKaW5kZXggZjZmNDU4OTVlYmQuLjJkODY0MzRkN2Jj IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhh Y3QucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdC8wMDFfbXVsdGl4YWN0 LnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1 c2UgVGVzdDo6TW9yZTsKQEAgLTMwLDggKzMxLDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gdGVzdF9zbHJ1KSk7CiAjIGxvc3QuCiAKICMg Q3JlYXRlIHRoZSBmaXJzdCBtdWx0aXhhY3QKLW15ICRiZ19wc3FsID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLW15ICRtdWx0aTEgPSAkYmdfcHNxbC0+cXVlcnlf c2FmZShxKFNFTEVDVCB0ZXN0X2NyZWF0ZV9tdWx0aXhhY3QoKTspKTsKK215ICRiZ19zZXNz aW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor bXkgJG11bHRpMSA9ICRiZ19zZXNzaW9uLT5xdWVyeV9vbmV2YWwocShTRUxFQ1QgdGVzdF9j cmVhdGVfbXVsdGl4YWN0KCk7KSk7CiAKICMgQXNzaWduIHRoZSBtaWRkbGUgbXVsdGl4YWN0 LiBVc2UgYW4gaW5qZWN0aW9uIHBvaW50IHRvIHByZXZlbnQgaXQKICMgZnJvbSBiZWluZyBm dWxseSByZWNvcmRlZC4KQEAgLTM5LDExICs0MCw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAlxe1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbXVsdGl4YWN0 LWNyZWF0ZS1mcm9tLW1lbWJlcnMnLCd3YWl0Jyk7fQogKTsKIAotJGJnX3BzcWwtPnF1ZXJ5 X3VudGlsKAotCXFyL2Fzc2lnbmluZyBsb3N0IG11bHRpLywgcSgKLVxlY2hvIGFzc2lnbmlu ZyBsb3N0IG11bHRpCi0JU0VMRUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgpOwotKSk7Cisj IFN0YXJ0IHRoZSBzZWNvbmQgbXVsdGl4YWN0IGNyZWF0aW9uIGFzeW5jaHJvbm91c2x5IC0g aXQgd2lsbCBibG9jayBhdAorIyB0aGUgaW5qZWN0aW9uIHBvaW50CiskYmdfc2Vzc2lvbi0+ ZG9fYXN5bmMocShTRUxFQ1QgdGVzdF9jcmVhdGVfbXVsdGl4YWN0KCk7KSk7CiAKICRub2Rl LT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbXVsdGl4YWN0LWNyZWF0ZS1m cm9tLW1lbWJlcnMnKTsKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTUyLDEw ICs1MSwxMCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENyZWF0ZSB0aGUg dGhpcmQgbXVsdGl4aWQKIG15ICRtdWx0aTIgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7U0VMRUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgpO30pOwogCi0jIEFsbCBzZXQg YW5kIGRvbmUsIGl0J3MgdGltZSBmb3IgaGFyZCByZXN0YXJ0CisjIEFsbCBzZXQgYW5kIGRv bmUsIGl0J3MgdGltZSBmb3IgaGFyZCByZXN0YXJ0LiBUaGUgYmFja2dyb3VuZCBzZXNzaW9u CisjIHdpbGwgYmUgdGVybWluYXRlZCBieSB0aGUgY3Jhc2guCiAkbm9kZS0+c3RvcCgnaW1t ZWRpYXRlJyk7CiAkbm9kZS0+c3RhcnQ7Ci0kYmdfcHNxbC0+e3J1bn0tPmZpbmlzaDsKIAog IyBWZXJpZnkgdGhhdCB0aGUgcmVjb3JkZWQgbXVsdGl4aWRzIGFyZSByZWFkYWJsZQogaXMo ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7U0VMRUNUIHRlc3RfcmVhZF9tdWx0 aXhhY3QoJyRtdWx0aTEnKTt9KSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlk X3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbCBiL3NyYy90ZXN0L21vZHVs ZXMveGlkX3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbAppbmRleCAyMTNm OTA1MmVkMi4uMzA0MDc2NzM1YjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMveGlk X3dyYXBhcm91bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAxX2VtZXJnZW5jeV92YWN1dW0ucGwKQEAgLTQs NiArNCw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCkBAIC00NywxNyArNDgsMTAgQEAgQ1JFQVRFIFRBQkxFIHNtYWxsX3RydW5jKGlkIHNl cmlhbCBwcmltYXJ5IGtleSwgZGF0YSB0ZXh0LCBmaWxsZXIgdGV4dCBkZWZhdWx0IHIKIElO U0VSVCBJTlRPIHNtYWxsX3RydW5jKGRhdGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwx NTAwMCk7CiBdKTsKIAotIyBCdW1wIHRoZSBxdWVyeSB0aW1lb3V0IHRvIGF2b2lkIGZhbHNl IG5lZ2F0aXZlcyBvbiBzbG93IHRlc3Qgc3lzdGVtcy4KLW15ICRwc3FsX3RpbWVvdXRfc2Vj cyA9IDQgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKLQog IyBTdGFydCBhIGJhY2tncm91bmQgc2Vzc2lvbiwgd2hpY2ggaG9sZHMgYSB0cmFuc2FjdGlv biBvcGVuLCBwcmV2ZW50aW5nCiAjIGF1dG92YWN1dW0gZnJvbSBhZHZhbmNpbmcgcmVsZnJv emVueGlkIGFuZCBkYXRmcm96ZW54aWQuCi1teSAkYmFja2dyb3VuZF9wc3FsID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgKLQkncG9zdGdyZXMnLAotCW9uX2Vycm9yX3N0b3AgPT4gMCwK LQl0aW1lb3V0ID0+ICRwc3FsX3RpbWVvdXRfc2Vjcyk7Ci0kYmFja2dyb3VuZF9wc3FsLT5z ZXRfcXVlcnlfdGltZXJfcmVzdGFydCgpOwotJGJhY2tncm91bmRfcHNxbC0+cXVlcnlfc2Fm ZSgKK215ICRiYWNrZ3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5kbygKIAlxcVsK IAlCRUdJTjsKIAlERUxFVEUgRlJPTSBsYXJnZSBXSEVSRSBpZCAlIDIgPSAwOwpAQCAtODks OCArODMsOCBAQCBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCiAjIEZp bmlzaCB0aGUgb2xkIHRyYW5zYWN0aW9uLCB0byBhbGxvdyB2YWN1dW0gZnJlZXppbmcgdG8g YWR2YW5jZQogIyByZWxmcm96ZW54aWQgYW5kIGRhdGZyb3plbnhpZCBhZ2Fpbi4KLSRiYWNr Z3JvdW5kX3BzcWwtPnF1ZXJ5X3NhZmUocXFbQ09NTUlUXSk7Ci0kYmFja2dyb3VuZF9wc3Fs LT5xdWl0OworJGJhY2tncm91bmRfc2Vzc2lvbi0+ZG8ocXFbQ09NTUlUO10pOworJGJhY2tn cm91bmRfc2Vzc2lvbi0+Y2xvc2U7CiAKICMgV2FpdCB1bnRpbCBhdXRvdmFjdXVtIHByb2Nl c3NlZCBhbGwgdGFibGVzIGFuZCBhZHZhbmNlZCB0aGUKICMgc3lzdGVtLXdpZGUgb2xkZXN0 LVhJRC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8w MDJfbGltaXRzLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9s aW1pdHMucGwKaW5kZXggODY2MzJhOGQ1MTAuLjBlZjY3ZDBmNGI4IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbApAQCAtMTAs NiArMTAsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwpAQCAtMjksNiArMzAsOCBAQCAkbm9k ZS0+YXBwZW5kX2NvbmYoCiAJJ3Bvc3RncmVzcWwuY29uZicsIHFxWwogYXV0b3ZhY3V1bV9u YXB0aW1lID0gMXMKIGxvZ19hdXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKK2xvZ19jb25u ZWN0aW9ucyA9IG9uCitsb2dfc3RhdGVtZW50ID0gJ2FsbCcKIF0pOwogJG5vZGUtPnN0YXJ0 OwogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB4aWRf d3JhcGFyb3VuZCcpOwpAQCAtNDEsMTYgKzQ0LDEwIEBAIENSRUFURSBUQUJMRSB3cmFwYXJv dW5kdGVzdCh0IHRleHQpIFdJVEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7CiBJTlNF UlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdzdGFydCcpOwogXSk7CiAKLSMgQnVt cCB0aGUgcXVlcnkgdGltZW91dCB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMgb24gc2xvdyB0 ZXN0IHN5c3RlbXMuCi1teSAkcHNxbF90aW1lb3V0X3NlY3MgPSA0ICogJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7Ci0KICMgU3RhcnQgYSBiYWNrZ3JvdW5k IHNlc3Npb24sIHdoaWNoIGhvbGRzIGEgdHJhbnNhY3Rpb24gb3BlbiwgcHJldmVudGluZwog IyBhdXRvdmFjdXVtIGZyb20gYWR2YW5jaW5nIHJlbGZyb3plbnhpZCBhbmQgZGF0ZnJvemVu eGlkLgotbXkgJGJhY2tncm91bmRfcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoCi0J J3Bvc3RncmVzJywKLQlvbl9lcnJvcl9zdG9wID0+IDAsCi0JdGltZW91dCA9PiAkcHNxbF90 aW1lb3V0X3NlY3MpOwotJGJhY2tncm91bmRfcHNxbC0+cXVlcnlfc2FmZSgKK215ICRiYWNr Z3JvdW5kX3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9 PiAkbm9kZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlJ TlNFUlQgSU5UTyB3cmFwYXJvdW5kdGVzdCBWQUxVRVMgKCdvbGR4YWN0Jyk7CkBAIC0xMDgs OCArMTA1LDggQEAgbGlrZSgKIAogIyBGaW5pc2ggdGhlIG9sZCB0cmFuc2FjdGlvbiwgdG8g YWxsb3cgdmFjdXVtIGZyZWV6aW5nIHRvIGFkdmFuY2UKICMgcmVsZnJvemVueGlkIGFuZCBk YXRmcm96ZW54aWQgYWdhaW4uCi0kYmFja2dyb3VuZF9wc3FsLT5xdWVyeV9zYWZlKHFxW0NP TU1JVF0pOwotJGJhY2tncm91bmRfcHNxbC0+cXVpdDsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24t PmRvKHFxW0NPTU1JVDtdKTsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmNsb3NlOwogCiAjIFZB Q1VVTSwgdG8gZnJlZXplIHRoZSB0YWJsZXMgYW5kIGFkdmFuY2UgZGF0ZnJvemVueGlkLgog IwpAQCAtMTIyLDggKzExOSw4IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZB Q1VVTScpOwogIyB0aGUgc3lzdGVtLXdpZGUgb2xkZXN0LVhJRC4KICRyZXQgPQogICAkbm9k ZS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAotCXFxW0lOU0VSVCBJTlRPIHdyYXBh cm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScpXSwKLQknSU5TRVJUIDAgMScpOwor CXFxW0lOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScp IFJFVFVSTklORyB0cnVlXSwKKwkJCQkJCSApOwogCiAjIENoZWNrIHRoZSB0YWJsZSBjb250 ZW50cwogJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICog ZnJvbSB3cmFwYXJvdW5kdGVzdF0pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94 aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsIGIvc3JjL3Rlc3QvbW9kdWxl cy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsCmluZGV4IGQwYTFmMWZl MmZjLi5mMmZhNGU1YTZiOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3Jh cGFyb3VuZC90LzAwNF9ub3RpZnlfZnJlZXplLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv eGlkX3dyYXBhcm91bmQvdC8wMDRfbm90aWZ5X2ZyZWV6ZS5wbApAQCAtNyw2ICs3LDcgQEAK IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwog dXNlIFRlc3Q6Ok1vcmU7CiAKIG15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdub2RlJyk7CkBAIC0yNCw5ICsyNSw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAknQUxURVIgREFUQUJBU0UgdGVtcGxhdGUwIFdJVEggQUxMT1dfQ09OTkVD VElPTlMgdHJ1ZScpOwogCiAjIFN0YXJ0IFNlc3Npb24gMSBhbmQgbGVhdmUgaXQgaWRsZSBp biB0cmFuc2FjdGlvbgotbXkgJHBzcWxfc2Vzc2lvbjEgPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2xpc3RlbiBz OycpOwotJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2JlZ2luOycpOworbXkgJHNlc3Np b24xID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwor JHNlc3Npb24xLT5kbygnTElTVEVOIHMnKTsKKyRzZXNzaW9uMS0+ZG8oJ0JFR0lOJyk7CiAK ICMgU2VuZCBzb21lIG5vdGlmeXMgZnJvbSBvdGhlciBzZXNzaW9ucwogZm9yIG15ICRpICgx IC4uIDEwKQpAQCAtNTQsMTggKzU1LDIwIEBAIG15ICRkYXRhZnJvbnplbnhpZF9mcmVlemUg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJInNlbGVjdCBtaW4oZGF0ZnJvemVu eGlkOjp0ZXh0OjpiaWdpbnQpIGZyb20gcGdfZGF0YWJhc2UiKTsKIG9rKCRkYXRhZnJvbnpl bnhpZF9mcmVlemUgPiAkZGF0YWZyb256ZW54aWQsICdkYXRmcm96ZW54aWQgYWR2YW5jZWQn KTsKIAotIyBPbiBTZXNzaW9uIDEsIGNvbW1pdCBhbmQgZW5zdXJlIHRoYXQgdGhlIGFsbCB0 aGUgbm90aWZpY2F0aW9ucyBhcmUKKyMgT24gU2Vzc2lvbiAxLCBjb21taXQgYW5kIGVuc3Vy ZSB0aGF0IGFsbCB0aGUgbm90aWZpY2F0aW9ucyBhcmUKICMgcmVjZWl2ZWQuIFRoaXMgZGVw ZW5kcyBvbiBjb3JyZWN0bHkgZnJlZXppbmcgdGhlIFhJRHMgaW4gdGhlIHBlbmRpbmcKICMg bm90aWZpY2F0aW9uIGVudHJpZXMuCi1teSAkcmVzID0gJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5 X3NhZmUoJ2NvbW1pdDsnKTsKLW15ICRub3RpZmljYXRpb25zX2NvdW50ID0gMDsKLWZvcmVh Y2ggbXkgJGkgKHNwbGl0KCdcbicsICRyZXMpKQorJHNlc3Npb24xLT5kbygnQ09NTUlUJyk7 CisKK215ICRub3RpZmljYXRpb25zID0gJHNlc3Npb24xLT5nZXRfYWxsX25vdGlmaWNhdGlv bnMoKTsKK2lzKHNjYWxhcihAJG5vdGlmaWNhdGlvbnMpLCAxMCwgJ3JlY2VpdmVkIGFsbCBj b21taXR0ZWQgbm90aWZpY2F0aW9ucycpOworCitteSAkZXhwZWN0ZWRfcGF5bG9hZCA9IDE7 Citmb3JlYWNoIG15ICRub3RpZnkgKEAkbm90aWZpY2F0aW9ucykKIHsKLQkkbm90aWZpY2F0 aW9uc19jb3VudCsrOwotCWxpa2UoJGksCi0JCXFyL0FzeW5jaHJvbm91cyBub3RpZmljYXRp b24gInMiIHdpdGggcGF5bG9hZCAiJG5vdGlmaWNhdGlvbnNfY291bnQiIHJlY2VpdmVkLwot CSk7CisJaXMoJG5vdGlmeS0+e2NoYW5uZWx9LCAncycsICJub3RpZmljYXRpb24gJGV4cGVj dGVkX3BheWxvYWQgaGFzIGNvcnJlY3QgY2hhbm5lbCIpOworCWlzKCRub3RpZnktPntwYXls b2FkfSwgJGV4cGVjdGVkX3BheWxvYWQsICJub3RpZmljYXRpb24gJGV4cGVjdGVkX3BheWxv YWQgaGFzIGNvcnJlY3QgcGF5bG9hZCIpOworCSRleHBlY3RlZF9wYXlsb2FkKys7CiB9Ci1p cygkbm90aWZpY2F0aW9uc19jb3VudCwgMTAsICdyZWNlaXZlZCBhbGwgY29tbWl0dGVkIG5v dGlmaWNhdGlvbnMnKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9wZXJsL01ha2VmaWxlIGIvc3JjL3Rlc3QvcGVybC9NYWtlZmlsZQppbmRleCBmZDRmZGFm NzAwYi4uMjk3M2Q2ZWMzNWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUK KysrIGIvc3JjL3Rlc3QvcGVybC9NYWtlZmlsZQpAQCAtMTUsNiArMTUsMTAgQEAgaW5jbHVk ZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBpZmVxICgkKGVuYWJs ZV90YXBfdGVzdHMpLHllcykKIAorU1VCRElSUyA9IFBvc3RncmVTUUwvVGVzdAorCiskKHJl Y3Vyc2UpCisKIGluc3RhbGxkaXJzOgogCSQoTUtESVJfUCkgJyQoREVTVERJUikkKHBneHNk aXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QnCiAKQEAgLTI4LDYgKzMyLDggQEAgaW5z dGFsbDogYWxsIGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0 Z3JlU1FML1Rlc3QvQWRqdXN0RHVtcC5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJk aXIpL1Bvc3RncmVTUUwvVGVzdC9BZGp1c3REdW1wLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAk KHNyY2RpcikvUG9zdGdyZVNRTC9UZXN0L0FkanVzdFVwZ3JhZGUucG0gJyQoREVTVERJUikk KHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0VXBncmFkZS5wbScK IAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbSAnJChE RVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbScKKwkk KElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24u cG0nCisJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0Z3JlU1FML1BxRkZJLnBtICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9QcUZGSS5wbScKIAog dW5pbnN0YWxsOgogCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9z dGdyZVNRTC9UZXN0L1V0aWxzLnBtJwpAQCAtMzksNSArNDUsNyBAQCB1bmluc3RhbGw6CiAJ cm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3Qv QWRqdXN0RHVtcC5wbScKIAlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIp L1Bvc3RncmVTUUwvVGVzdC9BZGp1c3RVcGdyYWRlLnBtJwogCXJtIC1mICckKERFU1RESVIp JChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9WZXJzaW9uLnBtJworCXJtIC1mICck KERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24u cG0nCisJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FM L1BxRkZJLnBtJwogCiBlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl U1FML0ZpbmRMaWIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvRmluZExpYi5wbQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjQyOTBjODRjNGYKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvRmluZExpYi5wbQpA QCAtMCwwICsxLDE2NCBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisKKz1oZWFkMSBOQU1FCisK K1Bvc3RncmVTUUw6OkZpbmRMaWIgLSBmaW5kIHNoYXJlZCBsaWJyYXJpZXMgZm9yIFBvc3Rn cmVTUUwgVEFQIHRlc3RzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FM OjpGaW5kTGliOworCisgIG15ICRsaWJwYXRoID0gZmluZF9saWJfb3JfZGllKAorICAgICAg bGliICAgICA9PiAncHEnLAorICAgICAgbGlicGF0aCA9PiBbJy91c3IvbG9jYWwvcGdzcWwv bGliJ10sCisgICk7CisKKz1oZWFkMSBERVNDUklQVElPTgorCitUaGlzIG1vZHVsZSBwcm92 aWRlcyBhIHNpbXBsZSBtZWNoYW5pc20gdG8gbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMsCit1 c2VkIGFzIGEgbGlnaHR3ZWlnaHQgcmVwbGFjZW1lbnQgZm9yIEM8RkZJOjpDaGVja0xpYj4u IEl0IHNlYXJjaGVzCitmb3IgbGlicmFyaWVzIGluIHNwZWNpZmllZCBwYXRocyBhbmQgY29t bW9uIHN5c3RlbSBsb2NhdGlvbnMuCisKKz1oZWFkMSBFWFBPUlRFRCBGVU5DVElPTlMKKwor PW92ZXIKKworPWl0ZW0gZmluZF9saWJfb3JfZGllKCVhcmdzKQorCitTZWFyY2hlcyBmb3Ig YSBzaGFyZWQgbGlicmFyeSBhbmQgcmV0dXJucyBpdHMgZnVsbCBwYXRoLiBEaWVzIGlmIHRo ZQorbGlicmFyeSBjYW5ub3QgYmUgZm91bmQuCisKK0FyZ3VtZW50czoKKworPW92ZXIKKwor PWl0ZW0gbGliID0+ICRuYW1lCisKK1JlcXVpcmVkLiBUaGUgbGlicmFyeSBuYW1lIHdpdGhv dXQgcHJlZml4IG9yIHN1ZmZpeCAoZS5nLiwgQzwncHEnPiBmb3IKK0M8bGlicHEuc28+KS4K KworPWl0ZW0gbGlicGF0aCA9PiBcQHBhdGhzCisKK09wdGlvbmFsLiBBcnJheSBvZiBkaXJl Y3RvcmllcyB0byBzZWFyY2ggZmlyc3QuCisKKz1pdGVtIHN5c3RlbXBhdGggPT4gXEBwYXRo cworCitPcHRpb25hbC4gSWYgc2V0IHRvIGFuIGVtcHR5IGFycmF5IEM8W10+LCBzeXN0ZW0g cGF0aHMgd2lsbCBub3QgYmUgc2VhcmNoZWQuCisKKz1iYWNrCisKKz1iYWNrCisKKz1jdXQK KworcGFja2FnZSBQb3N0Z3JlU1FMOjpGaW5kTGliOworCit1c2Ugc3RyaWN0OwordXNlIHdh cm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBFeHBvcnRlciBxdyhpbXBvcnQpOwor dXNlIEZpbGU6OlNwZWM7Cit1c2UgQ29uZmlnOworCitvdXIgQEVYUE9SVCA9IHF3KGZpbmRf bGliX29yX2RpZSk7CisKK3N1YiBmaW5kX2xpYl9vcl9kaWUKK3sKKwlteSAlYXJncyA9IEBf OworCisJbXkgJGxpYm5hbWUgPSAkYXJnc3tsaWJ9IG9yIGRpZSAiZmluZF9saWJfb3JfZGll OiAnbGliJyBhcmd1bWVudCByZXF1aXJlZCI7CisJbXkgJGxpYnBhdGggPSAkYXJnc3tsaWJw YXRofSAvLyBbXTsKKwlteSAkc3lzdGVtcGF0aCA9ICRhcmdze3N5c3RlbXBhdGh9OworCisJ bXkgQHNlYXJjaF9wYXRocyA9IEAkbGlicGF0aDsKKworCSMgQWRkIHN5c3RlbSBwYXRocyB1 bmxlc3MgZXhwbGljaXRseSBkaXNhYmxlZAorCXVubGVzcyAoZGVmaW5lZCAkc3lzdGVtcGF0 aCAmJiByZWYoJHN5c3RlbXBhdGgpIGVxICdBUlJBWScgJiYgQCRzeXN0ZW1wYXRoID09IDAp CisJeworCQlwdXNoIEBzZWFyY2hfcGF0aHMsIF9nZXRfc3lzdGVtX2xpYl9wYXRocygpOwor CX0KKworCSMgRGV0ZXJtaW5lIGxpYnJhcnkgZmlsZSBwYXR0ZXJucyBiYXNlZCBvbiBPUwor CW15IEBwYXR0ZXJucyA9IF9nZXRfbGliX3BhdHRlcm5zKCRsaWJuYW1lKTsKKworCWZvciBt eSAkZGlyIChAc2VhcmNoX3BhdGhzKQorCXsKKwkJbmV4dCB1bmxlc3MgLWQgJGRpcjsKKwor CQlmb3IgbXkgJHBhdHRlcm4gKEBwYXR0ZXJucykKKwkJeworCQkJbXkgQG1hdGNoZXMgPSBn bG9iKEZpbGU6OlNwZWMtPmNhdGZpbGUoJGRpciwgJHBhdHRlcm4pKTsKKwkJCWZvciBteSAk bWF0Y2ggKEBtYXRjaGVzKQorCQkJeworCQkJCXJldHVybiAkbWF0Y2ggaWYgLWYgJG1hdGNo ICYmIC1yICRtYXRjaDsKKwkJCX0KKwkJfQorCX0KKworCWRpZSAiZmluZF9saWJfb3JfZGll OiB1bmFibGUgdG8gZmluZCBsaWIkbGlibmFtZSBpbjogIiAuIGpvaW4oIiwgIiwgQHNlYXJj aF9wYXRocyk7Cit9CisKK3N1YiBfZ2V0X2xpYl9wYXR0ZXJucworeworCW15ICRsaWJuYW1l ID0gc2hpZnQ7CisKKwlpZiAoJF5PIGVxICdkYXJ3aW4nKQorCXsKKwkJcmV0dXJuICgibGli JGxpYm5hbWUuZHlsaWIiLCAibGliJGxpYm5hbWUuKi5keWxpYiIpOworCX0KKwllbHNpZiAo JF5PIGVxICdNU1dpbjMyJyB8fCAkXk8gZXEgJ2N5Z3dpbicpCisJeworCQlyZXR1cm4gKCIk bGlibmFtZS5kbGwiLCAibGliJGxpYm5hbWUuZGxsIik7CisJfQorCWVsc2UKKwl7CisJCSMg TGludXggYW5kIG90aGVyIFVuaXgtbGlrZSBzeXN0ZW1zCisJCXJldHVybiAoImxpYiRsaWJu YW1lLnNvIiwgImxpYiRsaWJuYW1lLnNvLioiKTsKKwl9Cit9CisKK3N1YiBfZ2V0X3N5c3Rl bV9saWJfcGF0aHMKK3sKKwlteSBAcGF0aHM7CisKKwkjIENvbW1vbiBzeXN0ZW0gbGlicmFy eSBwYXRocworCXB1c2ggQHBhdGhzLCAnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInLCAn L2xpYic7CisKKwkjIEFkZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgcGF0aHMgb24gTGludXgK KwlpZiAoJF5PIGVxICdsaW51eCcpCisJeworCQlwdXNoIEBwYXRocywgJy91c3IvbGliL3g4 Nl82NC1saW51eC1nbnUnLCAnL3Vzci9saWIvYWFyY2g2NC1saW51eC1nbnUnOworCQlwdXNo IEBwYXRocywgJy91c3IvbGliNjQnLCAnL2xpYjY0JzsKKwl9CisKKwkjIEFkZCBwYXRocyBm cm9tIExEX0xJQlJBUllfUEFUSAorCWlmICgkRU5We0xEX0xJQlJBUllfUEFUSH0pCisJewor CQlwdXNoIEBwYXRocywgc3BsaXQoLzovLCAkRU5We0xEX0xJQlJBUllfUEFUSH0pOworCX0K KworCSMgbWFjT1Mgc3BlY2lmaWMKKwlpZiAoJF5PIGVxICdkYXJ3aW4nKQorCXsKKwkJcHVz aCBAcGF0aHMsICcvb3B0L2hvbWVicmV3L2xpYicsICcvdXNyL2xvY2FsL29wdC9saWJwcS9s aWInOworCQlpZiAoJEVOVntEWUxEX0xJQlJBUllfUEFUSH0pCisJCXsKKwkJCXB1c2ggQHBh dGhzLCBzcGxpdCgvOi8sICRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9KTsKKwkJfQorCX0KKwor CXJldHVybiBAcGF0aHM7Cit9CisKKz1wb2QKKworPWhlYWQxIFNFRSBBTFNPCisKK0w8UG9z dGdyZVNRTDo6UHFGRkk+CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9QR1R5cGVzLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BH VHlwZXMucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVhODUy M2Q0ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BH VHlwZXMucG0KQEAgLTAsMCArMSwzNTYgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAy NiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworPXBvZAorCis9aGVh ZDEgTkFNRQorCitQb3N0Z3JlU1FMOjpQR1R5cGVzIC0gUG9zdGdyZVNRTCBiYWNrZW5kIHR5 cGUgT0lEIGNvbnN0YW50cworCis9aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9zdGdyZVNR TDo6UEdUeXBlczsKKworICBpZiAoJHR5cGVfb2lkID09IFRFWFRPSUQpIHsgLi4uIH0KKwor ICBpZiAoJHR5cGVfb2lkID09IElOVDRBUlJBWU9JRCkgeyAuLi4gfQorCis9aGVhZDEgREVT Q1JJUFRJT04KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgY29uc3RhbnRzIGZvciBQb3N0Z3Jl U1FMIGJhY2tlbmQgdHlwZSBPSURzLCBhcyBkZWZpbmVkCitpbiBDPHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfdHlwZV9kLmg+LiBUaGVzZSBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBjb2x1 bW4KK3R5cGVzIGluIHF1ZXJ5IHJlc3VsdHMgdmlhIEM8UFFmdHlwZSgpPi4KKworQWxsIGNv bnN0YW50cyBhcmUgZXhwb3J0ZWQgYnkgZGVmYXVsdC4KKworPWhlYWQxIEVYUE9SVEVEIENP TlNUQU5UUworCis9aGVhZDIgQmFzaWMgVHlwZXMKKworQzxCT09MT0lEPiwgQzxCWVRFQU9J RD4sIEM8Q0hBUk9JRD4sIEM8TkFNRU9JRD4sIEM8SU5UOE9JRD4sIEM8SU5UMk9JRD4sCitD PElOVDJWRUNUT1JPSUQ+LCBDPElOVDRPSUQ+LCBDPFRFWFRPSUQ+LCBDPE9JRE9JRD4sIEM8 VElET0lEPiwgQzxYSURPSUQ+LAorQzxDSURPSUQ+LCBDPE9JRFZFQ1RPUk9JRD4sIEM8SlNP Tk9JRD4sIEM8WE1MT0lEPiwgQzxYSUQ4T0lEPiwgQzxQT0lOVE9JRD4sCitDPExTRUdPSUQ+ LCBDPFBBVEhPSUQ+LCBDPEJPWE9JRD4sIEM8UE9MWUdPTk9JRD4sIEM8TElORU9JRD4sIEM8 RkxPQVQ0T0lEPiwKK0M8RkxPQVQ4T0lEPiwgQzxVTktOT1dOT0lEPiwgQzxDSVJDTEVPSUQ+ LCBDPE1PTkVZT0lEPiwgQzxNQUNBRERST0lEPiwKK0M8SU5FVE9JRD4sIEM8Q0lEUk9JRD4s IEM8TUFDQUREUjhPSUQ+LCBDPEFDTElURU1PSUQ+LCBDPEJQQ0hBUk9JRD4sCitDPFZBUkNI QVJPSUQ+LCBDPERBVEVPSUQ+LCBDPFRJTUVPSUQ+LCBDPFRJTUVTVEFNUE9JRD4sIEM8VElN RVNUQU1QVFpPSUQ+LAorQzxJTlRFUlZBTE9JRD4sIEM8VElNRVRaT0lEPiwgQzxCSVRPSUQ+ LCBDPFZBUkJJVE9JRD4sIEM8TlVNRVJJQ09JRD4sCitDPFJFRkNVUlNPUk9JRD4sIEM8VVVJ RE9JRD4sIEM8VFNWRUNUT1JPSUQ+LCBDPEdUU1ZFQ1RPUk9JRD4sIEM8VFNRVUVSWU9JRD4s CitDPEpTT05CT0lEPiwgQzxKU09OUEFUSE9JRD4sIEM8VFhJRF9TTkFQU0hPVE9JRD4KKwor PWhlYWQyIFJhbmdlIFR5cGVzCisKK0M8SU5UNFJBTkdFT0lEPiwgQzxOVU1SQU5HRU9JRD4s IEM8VFNSQU5HRU9JRD4sIEM8VFNUWlJBTkdFT0lEPiwKK0M8REFURVJBTkdFT0lEPiwgQzxJ TlQ4UkFOR0VPSUQ+CisKKz1oZWFkMiBNdWx0aXJhbmdlIFR5cGVzCisKK0M8SU5UNE1VTFRJ UkFOR0VPSUQ+LCBDPE5VTU1VTFRJUkFOR0VPSUQ+LCBDPFRTTVVMVElSQU5HRU9JRD4sCitD PFRTVFpNVUxUSVJBTkdFT0lEPiwgQzxEQVRFTVVMVElSQU5HRU9JRD4sIEM8SU5UOE1VTFRJ UkFOR0VPSUQ+CisKKz1oZWFkMiBQc2V1ZG8gVHlwZXMKKworQzxSRUNPUkRPSUQ+LCBDPFJF Q09SREFSUkFZT0lEPiwgQzxDU1RSSU5HT0lEPiwgQzxWT0lET0lEPiwgQzxUUklHR0VST0lE PiwKK0M8RVZFTlRfVFJJR0dFUk9JRD4KKworPWhlYWQyIEFycmF5IFR5cGVzCisKK0FycmF5 IHR5cGUgT0lEcyBmb2xsb3cgdGhlIHBhdHRlcm4gQzx7QkFTRU5BTUV9QVJSQVlPSUQ+LCBl LmcuLCBDPFRFWFRBUlJBWU9JRD4sCitDPElOVDRBUlJBWU9JRD4sIEM8SlNPTkJBUlJBWU9J RD4uCisKKz1jdXQKKworcGFja2FnZSBQb3N0Z3JlU1FMOjpQR1R5cGVzOworCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBFeHBvcnRlciBx dyhpbXBvcnQpOworCitvdXIgQEVYUE9SVCA9IHF3KAorCisgIEJPT0xPSUQKKyAgQllURUFP SUQKKyAgQ0hBUk9JRAorICBOQU1FT0lECisgIElOVDhPSUQKKyAgSU5UMk9JRAorICBJTlQy VkVDVE9ST0lECisgIElOVDRPSUQKKyAgVEVYVE9JRAorICBPSURPSUQKKyAgVElET0lECisg IFhJRE9JRAorICBDSURPSUQKKyAgT0lEVkVDVE9ST0lECisgIEpTT05PSUQKKyAgWE1MT0lE CisgIFhJRDhPSUQKKyAgUE9JTlRPSUQKKyAgTFNFR09JRAorICBQQVRIT0lECisgIEJPWE9J RAorICBQT0xZR09OT0lECisgIExJTkVPSUQKKyAgRkxPQVQ0T0lECisgIEZMT0FUOE9JRAor ICBVTktOT1dOT0lECisgIENJUkNMRU9JRAorICBNT05FWU9JRAorICBNQUNBRERST0lECisg IElORVRPSUQKKyAgQ0lEUk9JRAorICBNQUNBRERSOE9JRAorICBBQ0xJVEVNT0lECisgIEJQ Q0hBUk9JRAorICBWQVJDSEFST0lECisgIERBVEVPSUQKKyAgVElNRU9JRAorICBUSU1FU1RB TVBPSUQKKyAgVElNRVNUQU1QVFpPSUQKKyAgSU5URVJWQUxPSUQKKyAgVElNRVRaT0lECisg IEJJVE9JRAorICBWQVJCSVRPSUQKKyAgTlVNRVJJQ09JRAorICBSRUZDVVJTT1JPSUQKKyAg VVVJRE9JRAorICBUU1ZFQ1RPUk9JRAorICBHVFNWRUNUT1JPSUQKKyAgVFNRVUVSWU9JRAor ICBKU09OQk9JRAorICBKU09OUEFUSE9JRAorICBUWElEX1NOQVBTSE9UT0lECisgIElOVDRS QU5HRU9JRAorICBOVU1SQU5HRU9JRAorICBUU1JBTkdFT0lECisgIFRTVFpSQU5HRU9JRAor ICBEQVRFUkFOR0VPSUQKKyAgSU5UOFJBTkdFT0lECisgIElOVDRNVUxUSVJBTkdFT0lECisg IE5VTU1VTFRJUkFOR0VPSUQKKyAgVFNNVUxUSVJBTkdFT0lECisgIFRTVFpNVUxUSVJBTkdF T0lECisgIERBVEVNVUxUSVJBTkdFT0lECisgIElOVDhNVUxUSVJBTkdFT0lECisgIFJFQ09S RE9JRAorICBSRUNPUkRBUlJBWU9JRAorICBDU1RSSU5HT0lECisgIFZPSURPSUQKKyAgVFJJ R0dFUk9JRAorICBFVkVOVF9UUklHR0VST0lECisKKyAgQk9PTEFSUkFZT0lECisgIEJZVEVB QVJSQVlPSUQKKyAgQ0hBUkFSUkFZT0lECisgIE5BTUVBUlJBWU9JRAorICBJTlQ4QVJSQVlP SUQKKyAgSU5UMkFSUkFZT0lECisgIElOVDJWRUNUT1JBUlJBWU9JRAorICBJTlQ0QVJSQVlP SUQKKyAgVEVYVEFSUkFZT0lECisgIE9JREFSUkFZT0lECisgIFRJREFSUkFZT0lECisgIFhJ REFSUkFZT0lECisgIENJREFSUkFZT0lECisgIE9JRFZFQ1RPUkFSUkFZT0lECisgIEpTT05B UlJBWU9JRAorICBYTUxBUlJBWU9JRAorICBYSUQ4QVJSQVlPSUQKKyAgUE9JTlRBUlJBWU9J RAorICBMU0VHQVJSQVlPSUQKKyAgUEFUSEFSUkFZT0lECisgIEJPWEFSUkFZT0lECisgIFBP TFlHT05BUlJBWU9JRAorICBMSU5FQVJSQVlPSUQKKyAgRkxPQVQ0QVJSQVlPSUQKKyAgRkxP QVQ4QVJSQVlPSUQKKyAgQ0lSQ0xFQVJSQVlPSUQKKyAgTU9ORVlBUlJBWU9JRAorICBNQUNB RERSQVJSQVlPSUQKKyAgSU5FVEFSUkFZT0lECisgIENJRFJBUlJBWU9JRAorICBNQUNBRERS OEFSUkFZT0lECisgIEFDTElURU1BUlJBWU9JRAorICBCUENIQVJBUlJBWU9JRAorICBWQVJD SEFSQVJSQVlPSUQKKyAgREFURUFSUkFZT0lECisgIFRJTUVBUlJBWU9JRAorICBUSU1FU1RB TVBBUlJBWU9JRAorICBUSU1FU1RBTVBUWkFSUkFZT0lECisgIElOVEVSVkFMQVJSQVlPSUQK KyAgVElNRVRaQVJSQVlPSUQKKyAgQklUQVJSQVlPSUQKKyAgVkFSQklUQVJSQVlPSUQKKyAg TlVNRVJJQ0FSUkFZT0lECisgIFJFRkNVUlNPUkFSUkFZT0lECisgIFVVSURBUlJBWU9JRAor ICBUU1ZFQ1RPUkFSUkFZT0lECisgIEdUU1ZFQ1RPUkFSUkFZT0lECisgIFRTUVVFUllBUlJB WU9JRAorICBKU09OQkFSUkFZT0lECisgIEpTT05QQVRIQVJSQVlPSUQKKyAgVFhJRF9TTkFQ U0hPVEFSUkFZT0lECisgIElOVDRSQU5HRUFSUkFZT0lECisgIE5VTVJBTkdFQVJSQVlPSUQK KyAgVFNSQU5HRUFSUkFZT0lECisgIFRTVFpSQU5HRUFSUkFZT0lECisgIERBVEVSQU5HRUFS UkFZT0lECisgIElOVDhSQU5HRUFSUkFZT0lECisgIElOVDRNVUxUSVJBTkdFQVJSQVlPSUQK KyAgTlVNTVVMVElSQU5HRUFSUkFZT0lECisgIFRTTVVMVElSQU5HRUFSUkFZT0lECisgIFRT VFpNVUxUSVJBTkdFQVJSQVlPSUQKKyAgREFURU1VTFRJUkFOR0VBUlJBWU9JRAorICBJTlQ4 TVVMVElSQU5HRUFSUkFZT0lECisgIENTVFJJTkdBUlJBWU9JRAorCispOworCit1c2UgY29u c3RhbnQgeworCUJPT0xPSUQgICAgICAgICAgICAgICAgID0+IDE2LAorCUJZVEVBT0lEICAg ICAgICAgICAgICAgID0+IDE3LAorCUNIQVJPSUQgICAgICAgICAgICAgICAgID0+IDE4LAor CU5BTUVPSUQgICAgICAgICAgICAgICAgID0+IDE5LAorCUlOVDhPSUQgICAgICAgICAgICAg ICAgID0+IDIwLAorCUlOVDJPSUQgICAgICAgICAgICAgICAgID0+IDIxLAorCUlOVDJWRUNU T1JPSUQgICAgICAgICAgID0+IDIyLAorCUlOVDRPSUQgICAgICAgICAgICAgICAgID0+IDIz LAorCVRFWFRPSUQgICAgICAgICAgICAgICAgID0+IDI1LAorCU9JRE9JRCAgICAgICAgICAg ICAgICAgID0+IDI2LAorCVRJRE9JRCAgICAgICAgICAgICAgICAgID0+IDI3LAorCVhJRE9J RCAgICAgICAgICAgICAgICAgID0+IDI4LAorCUNJRE9JRCAgICAgICAgICAgICAgICAgID0+ IDI5LAorCU9JRFZFQ1RPUk9JRCAgICAgICAgICAgID0+IDMwLAorCUpTT05PSUQgICAgICAg ICAgICAgICAgID0+IDExNCwKKwlYTUxPSUQgICAgICAgICAgICAgICAgICA9PiAxNDIsCisJ WElEOE9JRCAgICAgICAgICAgICAgICAgPT4gNTA2OSwKKwlQT0lOVE9JRCAgICAgICAgICAg ICAgICA9PiA2MDAsCisJTFNFR09JRCAgICAgICAgICAgICAgICAgPT4gNjAxLAorCVBBVEhP SUQgICAgICAgICAgICAgICAgID0+IDYwMiwKKwlCT1hPSUQgICAgICAgICAgICAgICAgICA9 PiA2MDMsCisJUE9MWUdPTk9JRCAgICAgICAgICAgICAgPT4gNjA0LAorCUxJTkVPSUQgICAg ICAgICAgICAgICAgID0+IDYyOCwKKwlGTE9BVDRPSUQgICAgICAgICAgICAgICA9PiA3MDAs CisJRkxPQVQ4T0lEICAgICAgICAgICAgICAgPT4gNzAxLAorCVVOS05PV05PSUQgICAgICAg ICAgICAgID0+IDcwNSwKKwlDSVJDTEVPSUQgICAgICAgICAgICAgICA9PiA3MTgsCisJTU9O RVlPSUQgICAgICAgICAgICAgICAgPT4gNzkwLAorCU1BQ0FERFJPSUQgICAgICAgICAgICAg ID0+IDgyOSwKKwlJTkVUT0lEICAgICAgICAgICAgICAgICA9PiA4NjksCisJQ0lEUk9JRCAg ICAgICAgICAgICAgICAgPT4gNjUwLAorCU1BQ0FERFI4T0lEICAgICAgICAgICAgID0+IDc3 NCwKKwlBQ0xJVEVNT0lEICAgICAgICAgICAgICA9PiAxMDMzLAorCUJQQ0hBUk9JRCAgICAg ICAgICAgICAgID0+IDEwNDIsCisJVkFSQ0hBUk9JRCAgICAgICAgICAgICAgPT4gMTA0MywK KwlEQVRFT0lEICAgICAgICAgICAgICAgICA9PiAxMDgyLAorCVRJTUVPSUQgICAgICAgICAg ICAgICAgID0+IDEwODMsCisJVElNRVNUQU1QT0lEICAgICAgICAgICAgPT4gMTExNCwKKwlU SU1FU1RBTVBUWk9JRCAgICAgICAgICA9PiAxMTg0LAorCUlOVEVSVkFMT0lEICAgICAgICAg ICAgID0+IDExODYsCisJVElNRVRaT0lEICAgICAgICAgICAgICAgPT4gMTI2NiwKKwlCSVRP SUQgICAgICAgICAgICAgICAgICA9PiAxNTYwLAorCVZBUkJJVE9JRCAgICAgICAgICAgICAg ID0+IDE1NjIsCisJTlVNRVJJQ09JRCAgICAgICAgICAgICAgPT4gMTcwMCwKKwlSRUZDVVJT T1JPSUQgICAgICAgICAgICA9PiAxNzkwLAorCVVVSURPSUQgICAgICAgICAgICAgICAgID0+ IDI5NTAsCisJVFNWRUNUT1JPSUQgICAgICAgICAgICAgPT4gMzYxNCwKKwlHVFNWRUNUT1JP SUQgICAgICAgICAgICA9PiAzNjQyLAorCVRTUVVFUllPSUQgICAgICAgICAgICAgID0+IDM2 MTUsCisJSlNPTkJPSUQgICAgICAgICAgICAgICAgPT4gMzgwMiwKKwlKU09OUEFUSE9JRCAg ICAgICAgICAgICA9PiA0MDcyLAorCVRYSURfU05BUFNIT1RPSUQgICAgICAgID0+IDI5NzAs CisJSU5UNFJBTkdFT0lEICAgICAgICAgICAgPT4gMzkwNCwKKwlOVU1SQU5HRU9JRCAgICAg ICAgICAgICA9PiAzOTA2LAorCVRTUkFOR0VPSUQgICAgICAgICAgICAgID0+IDM5MDgsCisJ VFNUWlJBTkdFT0lEICAgICAgICAgICAgPT4gMzkxMCwKKwlEQVRFUkFOR0VPSUQgICAgICAg ICAgICA9PiAzOTEyLAorCUlOVDhSQU5HRU9JRCAgICAgICAgICAgID0+IDM5MjYsCisJSU5U NE1VTFRJUkFOR0VPSUQgICAgICAgPT4gNDQ1MSwKKwlOVU1NVUxUSVJBTkdFT0lEICAgICAg ICA9PiA0NTMyLAorCVRTTVVMVElSQU5HRU9JRCAgICAgICAgID0+IDQ1MzMsCisJVFNUWk1V TFRJUkFOR0VPSUQgICAgICAgPT4gNDUzNCwKKwlEQVRFTVVMVElSQU5HRU9JRCAgICAgICA9 PiA0NTM1LAorCUlOVDhNVUxUSVJBTkdFT0lEICAgICAgID0+IDQ1MzYsCisJUkVDT1JET0lE ICAgICAgICAgICAgICAgPT4gMjI0OSwKKwlSRUNPUkRBUlJBWU9JRCAgICAgICAgICA9PiAy Mjg3LAorCUNTVFJJTkdPSUQgICAgICAgICAgICAgID0+IDIyNzUsCisJVk9JRE9JRCAgICAg ICAgICAgICAgICAgPT4gMjI3OCwKKwlUUklHR0VST0lEICAgICAgICAgICAgICA9PiAyMjc5 LAorCUVWRU5UX1RSSUdHRVJPSUQgICAgICAgID0+IDM4MzgsCisKKwlCT09MQVJSQVlPSUQg ICAgICAgICAgICA9PiAxMDAwLAorCUJZVEVBQVJSQVlPSUQgICAgICAgICAgID0+IDEwMDEs CisJQ0hBUkFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwMiwKKwlOQU1FQVJSQVlPSUQgICAg ICAgICAgICA9PiAxMDAzLAorCUlOVDhBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMTYsCisJ SU5UMkFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwNSwKKwlJTlQyVkVDVE9SQVJSQVlPSUQg ICAgICA9PiAxMDA2LAorCUlOVDRBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMDcsCisJVEVY VEFSUkFZT0lEICAgICAgICAgICAgPT4gMTAwOSwKKwlPSURBUlJBWU9JRCAgICAgICAgICAg ICA9PiAxMDI4LAorCVRJREFSUkFZT0lEICAgICAgICAgICAgID0+IDEwMTAsCisJWElEQVJS QVlPSUQgICAgICAgICAgICAgPT4gMTAxMSwKKwlDSURBUlJBWU9JRCAgICAgICAgICAgICA9 PiAxMDEyLAorCU9JRFZFQ1RPUkFSUkFZT0lEICAgICAgID0+IDEwMTMsCisJSlNPTkFSUkFZ T0lEICAgICAgICAgICAgPT4gMTk5LAorCVhNTEFSUkFZT0lEICAgICAgICAgICAgID0+IDE0 MywKKwlYSUQ4QVJSQVlPSUQgICAgICAgICAgICA9PiAyNzEsCisJUE9JTlRBUlJBWU9JRCAg ICAgICAgICAgPT4gMTAxNywKKwlMU0VHQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDE4LAor CVBBVEhBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMTksCisJQk9YQVJSQVlPSUQgICAgICAg ICAgICAgPT4gMTAyMCwKKwlQT0xZR09OQVJSQVlPSUQgICAgICAgICA9PiAxMDI3LAorCUxJ TkVBUlJBWU9JRCAgICAgICAgICAgID0+IDYyOSwKKwlGTE9BVDRBUlJBWU9JRCAgICAgICAg ICA9PiAxMDIxLAorCUZMT0FUOEFSUkFZT0lEICAgICAgICAgID0+IDEwMjIsCisJQ0lSQ0xF QVJSQVlPSUQgICAgICAgICAgPT4gNzE5LAorCU1PTkVZQVJSQVlPSUQgICAgICAgICAgID0+ IDc5MSwKKwlNQUNBRERSQVJSQVlPSUQgICAgICAgICA9PiAxMDQwLAorCUlORVRBUlJBWU9J RCAgICAgICAgICAgID0+IDEwNDEsCisJQ0lEUkFSUkFZT0lEICAgICAgICAgICAgPT4gNjUx LAorCU1BQ0FERFI4QVJSQVlPSUQgICAgICAgID0+IDc3NSwKKwlBQ0xJVEVNQVJSQVlPSUQg ICAgICAgICA9PiAxMDM0LAorCUJQQ0hBUkFSUkFZT0lEICAgICAgICAgID0+IDEwMTQsCisJ VkFSQ0hBUkFSUkFZT0lEICAgICAgICAgPT4gMTAxNSwKKwlEQVRFQVJSQVlPSUQgICAgICAg ICAgICA9PiAxMTgyLAorCVRJTUVBUlJBWU9JRCAgICAgICAgICAgID0+IDExODMsCisJVElN RVNUQU1QQVJSQVlPSUQgICAgICAgPT4gMTExNSwKKwlUSU1FU1RBTVBUWkFSUkFZT0lEICAg ICA9PiAxMTg1LAorCUlOVEVSVkFMQVJSQVlPSUQgICAgICAgID0+IDExODcsCisJVElNRVRa QVJSQVlPSUQgICAgICAgICAgPT4gMTI3MCwKKwlCSVRBUlJBWU9JRCAgICAgICAgICAgICA9 PiAxNTYxLAorCVZBUkJJVEFSUkFZT0lEICAgICAgICAgID0+IDE1NjMsCisJTlVNRVJJQ0FS UkFZT0lEICAgICAgICAgPT4gMTIzMSwKKwlSRUZDVVJTT1JBUlJBWU9JRCAgICAgICA9PiAy MjAxLAorCVVVSURBUlJBWU9JRCAgICAgICAgICAgID0+IDI5NTEsCisJVFNWRUNUT1JBUlJB WU9JRCAgICAgICAgPT4gMzY0MywKKwlHVFNWRUNUT1JBUlJBWU9JRCAgICAgICA9PiAzNjQ0 LAorCVRTUVVFUllBUlJBWU9JRCAgICAgICAgID0+IDM2NDUsCisJSlNPTkJBUlJBWU9JRCAg ICAgICAgICAgPT4gMzgwNywKKwlKU09OUEFUSEFSUkFZT0lEICAgICAgICA9PiA0MDczLAor CVRYSURfU05BUFNIT1RBUlJBWU9JRCAgID0+IDI5NDksCisJSU5UNFJBTkdFQVJSQVlPSUQg ICAgICAgPT4gMzkwNSwKKwlOVU1SQU5HRUFSUkFZT0lEICAgICAgICA9PiAzOTA3LAorCVRT UkFOR0VBUlJBWU9JRCAgICAgICAgID0+IDM5MDksCisJVFNUWlJBTkdFQVJSQVlPSUQgICAg ICAgPT4gMzkxMSwKKwlEQVRFUkFOR0VBUlJBWU9JRCAgICAgICA9PiAzOTEzLAorCUlOVDhS QU5HRUFSUkFZT0lEICAgICAgID0+IDM5MjcsCisJSU5UNE1VTFRJUkFOR0VBUlJBWU9JRCAg PT4gNjE1MCwKKwlOVU1NVUxUSVJBTkdFQVJSQVlPSUQgICA9PiA2MTUxLAorCVRTTVVMVElS QU5HRUFSUkFZT0lEICAgID0+IDYxNTIsCisJVFNUWk1VTFRJUkFOR0VBUlJBWU9JRCAgPT4g NjE1MywKKwlEQVRFTVVMVElSQU5HRUFSUkFZT0lEICA9PiA2MTU1LAorCUlOVDhNVUxUSVJB TkdFQVJSQVlPSUQgID0+IDYxNTcsCisJQ1NUUklOR0FSUkFZT0lEICAgICAgICAgPT4gMTI2 MywKK307CisKKz1wb2QKKworPWhlYWQxIFNFRSBBTFNPCisKK0w8UG9zdGdyZVNRTDo6UHFG Rkk+LCBMPFBvc3RncmVTUUw6OlRlc3Q6OlBxPiwgTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uPgorCis9Y3V0CisKKzE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVT UUwvUHFDb25zdGFudHMucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFDb25zdGFu dHMucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4MjVmY2U1 MDdkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29u c3RhbnRzLnBtCkBAIC0wLDAgKzEsMTg2IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIw MjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKz1wb2QKKworPWhl YWQxIE5BTUUKKworUG9zdGdyZVNRTDo6UHFDb25zdGFudHMgLSBsaWJwcSBjb25zdGFudHMg Zm9yIFBvc3RncmVTUUwgVEFQIHRlc3RzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQ b3N0Z3JlU1FMOjpQcUNvbnN0YW50czsKKworICBpZiAoUFFzdGF0dXMoJGNvbm4pID09IENP Tk5FQ1RJT05fT0spIHsgLi4uIH0KKworICBpZiAoUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCkg PT0gUEdSRVNfVFVQTEVTX09LKSB7IC4uLiB9CisKKz1oZWFkMSBERVNDUklQVElPTgorCitU aGlzIG1vZHVsZSBwcm92aWRlcyBsaWJwcSBjb25zdGFudHMgc2hhcmVkIGJ5IGJvdGggdGhl IEZGSQorKEM8UG9zdGdyZVNRTDo6UHFGRkk+KSBhbmQgWFMgKEM8UG9zdGdyZVNRTDo6VGVz dDo6UHE+KSBiYWNrZW5kcy4KK0FsbCBjb25zdGFudHMgYXJlIGV4cG9ydGVkIGJ5IGRlZmF1 bHQuCisKKz1oZWFkMSBFWFBPUlRFRCBDT05TVEFOVFMKKworPWhlYWQyIENvbm5lY3Rpb24g U3RhdHVzIChDb25uU3RhdHVzVHlwZSkKKworQzxDT05ORUNUSU9OX09LPiwgQzxDT05ORUNU SU9OX0JBRD4sIEM8Q09OTkVDVElPTl9TVEFSVEVEPiwKK0M8Q09OTkVDVElPTl9NQURFPiwg QzxDT05ORUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFPiwgQzxDT05ORUNUSU9OX0FVVEhfT0s+ LAorQzxDT05ORUNUSU9OX1NFVEVOVj4sIEM8Q09OTkVDVElPTl9TU0xfU1RBUlRVUD4sIEM8 Q09OTkVDVElPTl9ORUVERUQ+LAorQzxDT05ORUNUSU9OX0NIRUNLX1dSSVRBQkxFPiwgQzxD T05ORUNUSU9OX0NPTlNVTUU+LCBDPENPTk5FQ1RJT05fR1NTX1NUQVJUVVA+LAorQzxDT05O RUNUSU9OX0NIRUNLX1RBUkdFVD4sIEM8Q09OTkVDVElPTl9DSEVDS19TVEFOREJZPiwgQzxD T05ORUNUSU9OX0FMTE9DQVRFRD4KKworPWhlYWQyIEV4ZWN1dGlvbiBTdGF0dXMgKEV4ZWNT dGF0dXNUeXBlKQorCitDPFBHUkVTX0VNUFRZX1FVRVJZPiwgQzxQR1JFU19DT01NQU5EX09L PiwgQzxQR1JFU19UVVBMRVNfT0s+LAorQzxQR1JFU19DT1BZX09VVD4sIEM8UEdSRVNfQ09Q WV9JTj4sIEM8UEdSRVNfQkFEX1JFU1BPTlNFPiwKK0M8UEdSRVNfTk9ORkFUQUxfRVJST1I+ LCBDPFBHUkVTX0ZBVEFMX0VSUk9SPiwgQzxQR1JFU19DT1BZX0JPVEg+LAorQzxQR1JFU19T SU5HTEVfVFVQTEU+LCBDPFBHUkVTX1BJUEVMSU5FX1NZTkM+LCBDPFBHUkVTX1BJUEVMSU5F X0FCT1JURUQ+LAorQzxQR1JFU19UVVBMRVNfQ0hVTks+CisKKz1oZWFkMiBQb2xsaW5nIFN0 YXR1cyAoUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSkKKworQzxQR1JFU19QT0xMSU5HX0ZB SUxFRD4sIEM8UEdSRVNfUE9MTElOR19SRUFESU5HPiwgQzxQR1JFU19QT0xMSU5HX1dSSVRJ Tkc+LAorQzxQR1JFU19QT0xMSU5HX09LPiwgQzxQR1JFU19QT0xMSU5HX0FDVElWRT4KKwor PWhlYWQyIFBpbmcgU3RhdHVzIChQR1BpbmcpCisKK0M8UFFQSU5HX09LPiwgQzxQUVBJTkdf UkVKRUNUPiwgQzxQUVBJTkdfTk9fUkVTUE9OU0U+LCBDPFBRUElOR19OT19BVFRFTVBUPgor Cis9aGVhZDIgVHJhbnNhY3Rpb24gU3RhdHVzIChQR1RyYW5zYWN0aW9uU3RhdHVzVHlwZSkK KworQzxQUVRSQU5TX0lETEU+LCBDPFBRVFJBTlNfQUNUSVZFPiwgQzxQUVRSQU5TX0lOVFJB TlM+LCBDPFBRVFJBTlNfSU5FUlJPUj4sCitDPFBRVFJBTlNfVU5LTk9XTj4KKworPWN1dAor CitwYWNrYWdlIFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzOworCit1c2Ugc3RyaWN0OwordXNl IHdhcm5pbmdzIEZBVEFMID0+IHF3KGFsbCk7CisKK3VzZSBFeHBvcnRlciBxdyhpbXBvcnQp OworCitvdXIgQEVYUE9SVCA9IHF3KAorCisgIENPTk5FQ1RJT05fT0sKKyAgQ09OTkVDVElP Tl9CQUQKKyAgQ09OTkVDVElPTl9TVEFSVEVECisgIENPTk5FQ1RJT05fTUFERQorICBDT05O RUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFCisgIENPTk5FQ1RJT05fQVVUSF9PSworICBDT05O RUNUSU9OX1NFVEVOVgorICBDT05ORUNUSU9OX1NTTF9TVEFSVFVQCisgIENPTk5FQ1RJT05f TkVFREVECisgIENPTk5FQ1RJT05fQ0hFQ0tfV1JJVEFCTEUKKyAgQ09OTkVDVElPTl9DT05T VU1FCisgIENPTk5FQ1RJT05fR1NTX1NUQVJUVVAKKyAgQ09OTkVDVElPTl9DSEVDS19UQVJH RVQKKyAgQ09OTkVDVElPTl9DSEVDS19TVEFOREJZCisgIENPTk5FQ1RJT05fQUxMT0NBVEVE CisKKyAgUEdSRVNfRU1QVFlfUVVFUlkKKyAgUEdSRVNfQ09NTUFORF9PSworICBQR1JFU19U VVBMRVNfT0sKKyAgUEdSRVNfQ09QWV9PVVQKKyAgUEdSRVNfQ09QWV9JTgorICBQR1JFU19C QURfUkVTUE9OU0UKKyAgUEdSRVNfTk9ORkFUQUxfRVJST1IKKyAgUEdSRVNfRkFUQUxfRVJS T1IKKyAgUEdSRVNfQ09QWV9CT1RICisgIFBHUkVTX1NJTkdMRV9UVVBMRQorICBQR1JFU19Q SVBFTElORV9TWU5DCisgIFBHUkVTX1BJUEVMSU5FX0FCT1JURUQKKyAgUEdSRVNfVFVQTEVT X0NIVU5LCisKKyAgUEdSRVNfUE9MTElOR19GQUlMRUQKKyAgUEdSRVNfUE9MTElOR19SRUFE SU5HCisgIFBHUkVTX1BPTExJTkdfV1JJVElORworICBQR1JFU19QT0xMSU5HX09LCisgIFBH UkVTX1BPTExJTkdfQUNUSVZFCisKKyAgUFFQSU5HX09LCisgIFBRUElOR19SRUpFQ1QKKyAg UFFQSU5HX05PX1JFU1BPTlNFCisgIFBRUElOR19OT19BVFRFTVBUCisKKyAgUFFUUkFOU19J RExFCisgIFBRVFJBTlNfQUNUSVZFCisgIFBRVFJBTlNfSU5UUkFOUworICBQUVRSQU5TX0lO RVJST1IKKyAgUFFUUkFOU19VTktOT1dOCisKKyk7CisKKyMgQ29ublN0YXR1c1R5cGU6Cit1 c2UgY29uc3RhbnQgeworCUNPTk5FQ1RJT05fT0sgICAgICAgICAgICAgICAgID0+IDAsCisJ Q09OTkVDVElPTl9CQUQgICAgICAgICAgICAgICAgPT4gMSwKKwlDT05ORUNUSU9OX1NUQVJU RUQgICAgICAgICAgICA9PiAyLAorCUNPTk5FQ1RJT05fTUFERSAgICAgICAgICAgICAgID0+ IDMsCisJQ09OTkVDVElPTl9BV0FJVElOR19SRVNQT05TRSAgPT4gNCwKKwlDT05ORUNUSU9O X0FVVEhfT0sgICAgICAgICAgICA9PiA1LAorCUNPTk5FQ1RJT05fU0VURU5WICAgICAgICAg ICAgID0+IDYsCisJQ09OTkVDVElPTl9TU0xfU1RBUlRVUCAgICAgICAgPT4gNywKKwlDT05O RUNUSU9OX05FRURFRCAgICAgICAgICAgICA9PiA4LAorCUNPTk5FQ1RJT05fQ0hFQ0tfV1JJ VEFCTEUgICAgID0+IDksCisJQ09OTkVDVElPTl9DT05TVU1FICAgICAgICAgICAgPT4gMTAs CisJQ09OTkVDVElPTl9HU1NfU1RBUlRVUCAgICAgICAgPT4gMTEsCisJQ09OTkVDVElPTl9D SEVDS19UQVJHRVQgICAgICAgPT4gMTIsCisJQ09OTkVDVElPTl9DSEVDS19TVEFOREJZICAg ICAgPT4gMTMsCisJQ09OTkVDVElPTl9BTExPQ0FURUQgICAgICAgICAgPT4gMTQsCit9Owor CisjIEV4ZWNTdGF0dXNUeXBlOgordXNlIGNvbnN0YW50IHsKKwlQR1JFU19FTVBUWV9RVUVS WSAgICAgPT4gMCwKKwlQR1JFU19DT01NQU5EX09LICAgICAgPT4gMSwKKwlQR1JFU19UVVBM RVNfT0sgICAgICAgPT4gMiwKKwlQR1JFU19DT1BZX09VVCAgICAgICAgPT4gMywKKwlQR1JF U19DT1BZX0lOICAgICAgICAgPT4gNCwKKwlQR1JFU19CQURfUkVTUE9OU0UgICAgPT4gNSwK KwlQR1JFU19OT05GQVRBTF9FUlJPUiAgPT4gNiwKKwlQR1JFU19GQVRBTF9FUlJPUiAgICAg PT4gNywKKwlQR1JFU19DT1BZX0JPVEggICAgICAgPT4gOCwKKwlQR1JFU19TSU5HTEVfVFVQ TEUgICAgPT4gOSwKKwlQR1JFU19QSVBFTElORV9TWU5DICAgPT4gMTAsCisJUEdSRVNfUElQ RUxJTkVfQUJPUlRFRCA9PiAxMSwKKwlQR1JFU19UVVBMRVNfQ0hVTksgICAgPT4gMTIsCit9 OworCisjIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGU6Cit1c2UgY29uc3RhbnQgeworCVBH UkVTX1BPTExJTkdfRkFJTEVEICA9PiAwLAorCVBHUkVTX1BPTExJTkdfUkVBRElORyA9PiAx LAorCVBHUkVTX1BPTExJTkdfV1JJVElORyA9PiAyLAorCVBHUkVTX1BPTExJTkdfT0sgICAg ICA9PiAzLAorCVBHUkVTX1BPTExJTkdfQUNUSVZFICA9PiA0LAorfTsKKworIyBQR1Bpbmc6 Cit1c2UgY29uc3RhbnQgeworCVBRUElOR19PSyAgICAgICAgICA9PiAwLAorCVBRUElOR19S RUpFQ1QgICAgICA9PiAxLAorCVBRUElOR19OT19SRVNQT05TRSA9PiAyLAorCVBRUElOR19O T19BVFRFTVBUICA9PiAzLAorfTsKKworIyBQR1RyYW5zYWN0aW9uU3RhdHVzVHlwZToKK3Vz ZSBjb25zdGFudCB7CisJUFFUUkFOU19JRExFICAgID0+IDAsCisJUFFUUkFOU19BQ1RJVkUg ID0+IDEsCisJUFFUUkFOU19JTlRSQU5TID0+IDIsCisJUFFUUkFOU19JTkVSUk9SID0+IDMs CisJUFFUUkFOU19VTktOT1dOID0+IDQsCit9OworCis9cG9kCisKKz1oZWFkMSBTRUUgQUxT TworCitMPFBvc3RncmVTUUw6OlBxRkZJPiwgTDxQb3N0Z3JlU1FMOjpUZXN0OjpQcT4sIEw8 UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbj4KKworPWN1dAorCisxOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxRkZJLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0 Z3JlU1FML1BxRkZJLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40YWE3YzcwOTFlMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZVNRTC9QcUZGSS5wbQpAQCAtMCwwICsxLDQzOCBAQAorCisjIENvcHlyaWdodCAoYykgMjAy MS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisK Kz1oZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6OlBxRkZJIC0gRkZJIHdyYXBwZXIgZm9yIGxp YnBxCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FMOjpQcUZGSTsKKwor ICAjIEluaXRpYWxpemUgdGhlIEZGSSBiaW5kaW5ncyAocmVxdWlyZWQgYmVmb3JlIHVzZSkK KyAgUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRsaWJkaXIpOworCisgICMgQ29ubmVjdCB0 byBkYXRhYmFzZQorICBteSAkY29ubiA9IFBRY29ubmVjdGRiKCJkYm5hbWU9cG9zdGdyZXMi KTsKKyAgZGllIFBRZXJyb3JNZXNzYWdlKCRjb25uKSB1bmxlc3MgUFFzdGF0dXMoJGNvbm4p ID09IENPTk5FQ1RJT05fT0s7CisKKyAgIyBFeGVjdXRlIHF1ZXJ5CisgIG15ICRyZXN1bHQg PSBQUWV4ZWMoJGNvbm4sICJTRUxFQ1QgMSIpOworICBpZiAoUFFyZXN1bHRTdGF0dXMoJHJl c3VsdCkgPT0gUEdSRVNfVFVQTEVTX09LKSB7CisgICAgICBwcmludCBQUWdldHZhbHVlKCRy ZXN1bHQsIDAsIDApLCAiXG4iOworICB9CisgIFBRY2xlYXIoJHJlc3VsdCk7CisKKyAgUFFm aW5pc2goJGNvbm4pOworCis9aGVhZDEgREVTQ1JJUFRJT04KKworVGhpcyBtb2R1bGUgcHJv dmlkZXMgUGVybCBiaW5kaW5ncyB0byBsaWJwcSB1c2luZyBMPEZGSTo6UGxhdHlwdXM+Lgor SXQgaXMgdGhlIGRlZmF1bHQgYmFja2VuZCBmb3IgTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uPiB3aGVuCitDPFBHX1VTRV9QUV9YUz4gaXMgbm90IHNldC4KKworVGhlIG1vZHVsZSBt dXN0IGJlIGluaXRpYWxpemVkIGJ5IGNhbGxpbmcgQzxzZXR1cCgpPiBiZWZvcmUgYW55IGxp YnBxCitmdW5jdGlvbnMgY2FuIGJlIHVzZWQuCisKKz1oZWFkMSBGVU5DVElPTlMKKworPWhl YWQyIHNldHVwKCRsaWJkaXIgWywgJHVzZV9zeXN0ZW1fcGF0aF0pCisKK0luaXRpYWxpemUg dGhlIEZGSSBiaW5kaW5ncy4gQzwkbGliZGlyPiBzcGVjaWZpZXMgd2hlcmUgdG8gZmluZCBs aWJwcS4KK0lmIEM8JHVzZV9zeXN0ZW1fcGF0aD4gaXMgZmFsc2UsIG9ubHkgQzwkbGliZGly PiBpcyBzZWFyY2hlZC4KKworPWhlYWQyIGxpYnBxIEZ1bmN0aW9ucworCitBbGwgc3RhbmRh cmQgbGlicHEgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gU2VlIHRoZSBQb3N0Z3JlU1FMIGxp YnBxCitkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiBDb21tb25seSB1c2VkIGZ1bmN0aW9u cyBpbmNsdWRlOgorCitCPENvbm5lY3Rpb246PiBDPFBRY29ubmVjdGRiPiwgQzxQUWNvbm5l Y3RTdGFydD4sIEM8UFFjb25uZWN0UG9sbD4sCitDPFBRZmluaXNoPiwgQzxQUXN0YXR1cz4s IEM8UFFlcnJvck1lc3NhZ2U+CisKK0I8RXhlY3V0aW9uOj4gQzxQUWV4ZWM+LCBDPFBRZXhl Y1BhcmFtcz4sIEM8UFFwcmVwYXJlPiwgQzxQUWV4ZWNQcmVwYXJlZD4sCitDPFBRc2VuZFF1 ZXJ5PiwgQzxQUWdldFJlc3VsdD4sIEM8UFFjbGVhcj4KKworQjxSZXN1bHRzOj4gQzxQUXJl c3VsdFN0YXR1cz4sIEM8UFFudHVwbGVzPiwgQzxQUW5maWVsZHM+LCBDPFBRZm5hbWU+LAor QzxQUWZ0eXBlPiwgQzxQUWdldHZhbHVlPiwgQzxQUWdldGlzbnVsbD4KKworQjxQaXBlbGlu ZTo+IEM8UFFlbnRlclBpcGVsaW5lTW9kZT4sIEM8UFFleGl0UGlwZWxpbmVNb2RlPiwKK0M8 UFFwaXBlbGluZVN5bmM+LCBDPFBRc2VuZFF1ZXJ5UGFyYW1zPgorCitCPE5vdGlmaWNhdGlv bnM6PiBDPFBRbm90aWZpZXM+LCBDPFBRbm90aWZ5X2NoYW5uZWw+LCBDPFBRbm90aWZ5X3Bh eWxvYWQ+LAorQzxQUW5vdGlmeV9iZV9waWQ+LCBDPFBRbm90aWZ5X2ZyZWU+CisKK0I8Tm90 aWNlIFByb2Nlc3Npbmc6PiBDPFBRc2V0Tm90aWNlUHJvY2Vzc29yPiwgQzxjcmVhdGVfbm90 aWNlX3Byb2Nlc3Nvcj4KKworPWhlYWQyIGNyZWF0ZV9ub3RpY2VfcHJvY2Vzc29yKCRjYWxs YmFjaykKKworQ3JlYXRlcyBhIG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0aGF0IGNhbiBi ZSBwYXNzZWQgdG8KK0M8UFFzZXROb3RpY2VQcm9jZXNzb3I+LiBUaGUgY2FsbGJhY2sgcmVj ZWl2ZXMgQzwoJGFyZywgJG1lc3NhZ2UpPi4KK1RoZSBjYWxsZXIgbXVzdCBrZWVwIGEgcmVm ZXJlbmNlIHRvIHRoZSByZXR1cm5lZCBjbG9zdXJlIHRvIHByZXZlbnQKK2dhcmJhZ2UgY29s bGVjdGlvbi4KKworPWhlYWQxIEVYUE9SVEVEIENPTlNUQU5UUworCitUaGlzIG1vZHVsZSBy ZS1leHBvcnRzIGFsbCBjb25zdGFudHMgZnJvbSBMPFBvc3RncmVTUUw6OlBxQ29uc3RhbnRz PgorYW5kIEw8UG9zdGdyZVNRTDo6UEdUeXBlcz4uCisKKz1jdXQKKworcGFja2FnZSBQb3N0 Z3JlU1FMOjpQcUZGSTsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiBx dyhhbGwpOworCit1c2UgRkZJOjpQbGF0eXB1czsKK3VzZSBGRkk6OlBsYXR5cHVzOjpSZWNv cmQ7Cit1c2UgUG9zdGdyZVNRTDo6RmluZExpYjsKKworIyBQR25vdGlmeSBzdHJ1Y3QgZm9y IG5vdGlmaWNhdGlvbiBzdXBwb3J0CisjIHR5cGVkZWYgc3RydWN0IHBnTm90aWZ5IHsKKyMg ICAgIGNoYXIgKnJlbG5hbWU7ICAgIC8qIG5vdGlmaWNhdGlvbiBjaGFubmVsIG5hbWUgKi8K KyMgICAgIGludCAgIGJlX3BpZDsgICAgIC8qIHByb2Nlc3MgSUQgb2Ygbm90aWZ5aW5nIHNl cnZlciBwcm9jZXNzICovCisjICAgICBjaGFyICpleHRyYTsgICAgICAvKiBub3RpZmljYXRp b24gcGF5bG9hZCBzdHJpbmcgKi8KKyMgfSBQR25vdGlmeTsKK3BhY2thZ2UgUEdub3RpZnkg eworCXVzZSBGRkk6OlBsYXR5cHVzOjpSZWNvcmQ7CisJcmVjb3JkX2xheW91dF8xKAorCQkn b3BhcXVlJyA9PiAncmVsbmFtZScsCisJCSdzaW50MzInID0+ICdiZV9waWQnLAorCQknb3Bh cXVlJyA9PiAnZXh0cmEnLAorCSk7Cit9CitwYWNrYWdlIFBvc3RncmVTUUw6OlBxRkZJOwor dXNlIFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzOwordXNlIFBvc3RncmVTUUw6OlBHVHlwZXM7 CisKK3VzZSBFeHBvcnRlciBxdyhpbXBvcnQpOworCitvdXIgQEVYUE9SVCA9ICgKKyAgQFBv c3RncmVTUUw6OlBxQ29uc3RhbnRzOjpFWFBPUlQsCisgIEBQb3N0Z3JlU1FMOjpQR1R5cGVz OjpFWFBPUlQsCispOworCisKKworbXkgQHByb2NzID0gcXcoCisKKyAgUFFub3RpZmllcwor ICBQUWZyZWVtZW0KKyAgUFFub3RpZnlfY2hhbm5lbAorICBQUW5vdGlmeV9wYXlsb2FkCisg IFBRbm90aWZ5X2JlX3BpZAorICBQUW5vdGlmeV9mcmVlCisKKyAgUFFjb25uZWN0ZGIKKyAg UFFjb25uZWN0ZGJQYXJhbXMKKyAgUFFzZXRkYkxvZ2luCisgIFBRZmluaXNoCisgIFBRcmVz ZXQKKyAgUFFkYgorICBQUXVzZXIKKyAgUFFwYXNzCisgIFBRaG9zdAorICBQUWhvc3RhZGRy CisgIFBRcG9ydAorICBQUXR0eQorICBQUW9wdGlvbnMKKyAgUFFzdGF0dXMKKyAgUFF0cmFu c2FjdGlvblN0YXR1cworICBQUXBhcmFtZXRlclN0YXR1cworICBQUXBpbmcKKyAgUFFwaW5n UGFyYW1zCisKKyAgUFFleGVjCisgIFBRZXhlY1BhcmFtcworICBQUXByZXBhcmUKKyAgUFFl eGVjUHJlcGFyZWQKKworICBQUWRlc2NyaWJlUHJlcGFyZWQKKyAgUFFkZXNjcmliZVBvcnRh bAorCisgIFBRY2xvc2VQcmVwYXJlZAorICBQUWNsb3NlUG9ydGFsCisgIFBRY2xlYXIKKwor ICBQUXNlbmRRdWVyeQorICBQUWdldFJlc3VsdAorICBQUWlzQnVzeQorICBQUWNvbnN1bWVJ bnB1dAorCisgIFBRcHJvdG9jb2xWZXJzaW9uCisgIFBRc2VydmVyVmVyc2lvbgorICBQUWVy cm9yTWVzc2FnZQorICBQUXNvY2tldAorICBQUXNvY2tldFBvbGwKKyAgUFFnZXRDdXJyZW50 VGltZVVTZWMKKyAgUFFiYWNrZW5kUElECisgIFBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQK KyAgUFFjb25uZWN0aW9uVXNlZFBhc3N3b3JkCisgIFBRY29ubmVjdGlvblVzZWRHU1NBUEkK KyAgUFFjbGllbnRFbmNvZGluZworICBQUXNldENsaWVudEVuY29kaW5nCisKKyAgUFFyZXN1 bHRTdGF0dXMKKyAgUFFyZXNTdGF0dXMKKyAgUFFyZXN1bHRFcnJvck1lc3NhZ2UKKyAgUFFy ZXN1bHRFcnJvckZpZWxkCisgIFBRbnR1cGxlcworICBQUW5maWVsZHMKKyAgUFFiaW5hcnlU dXBsZXMKKyAgUFFmbmFtZQorICBQUWZudW1iZXIKKyAgUFFmdGFibGUKKyAgUFFmdGFibGVj b2wKKyAgUFFmZm9ybWF0CisgIFBRZnR5cGUKKyAgUFFmc2l6ZQorICBQUWZtb2QKKyAgUFFj bWRTdGF0dXMKKyAgUFFvaWRWYWx1ZQorICBQUWNtZFR1cGxlcworICBQUWdldHZhbHVlCisg IFBRZ2V0bGVuZ3RoCisgIFBRZ2V0aXNudWxsCisgIFBRbnBhcmFtcworICBQUXBhcmFtdHlw ZQorICBQUWNoYW5nZVBhc3N3b3JkCisKKyAgUFFwaXBlbGluZVN0YXR1cworICBQUWVudGVy UGlwZWxpbmVNb2RlCisgIFBRZXhpdFBpcGVsaW5lTW9kZQorICBQUXBpcGVsaW5lU3luYwor ICBQUXNlbmRGbHVzaFJlcXVlc3QKKyAgUFFzZW5kUGlwZWxpbmVTeW5jCisgIFBRc2VuZFF1 ZXJ5UGFyYW1zCisKKyAgUFFzZXRub25ibG9ja2luZworICBQUWlzbm9uYmxvY2tpbmcKKyAg UFFmbHVzaAorCisgIFBRY29ubmVjdFN0YXJ0CisgIFBRY29ubmVjdFN0YXJ0UGFyYW1zCisg IFBRY29ubmVjdFBvbGwKKworICBQUXNldE5vdGljZVByb2Nlc3NvcgorICBjcmVhdGVfbm90 aWNlX3Byb2Nlc3NvcgorCispOworCitwdXNoKEBFWFBPUlQsIEBwcm9jcyk7CisKK3N1YiBz ZXR1cAoreworCW15ICRsaWJkaXIgPSBzaGlmdDsKKwlteSAkdXNlX3N5c3RlbV9wYXRoID0g c2hpZnQ7CisKKwlteSAkZmZpID0gRkZJOjpQbGF0eXB1cy0+bmV3KGFwaSA9PiAxKTsKKwor CW15IEBzeXN0ZW1fcGF0aDsKKwlAc3lzdGVtX3BhdGggPSAoc3lzdGVtcGF0aCA9PiBbXSkg dW5sZXNzICR1c2Vfc3lzdGVtX3BhdGg7CisKKwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQ R2Nvbm4nKTsKKwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQR3Jlc3VsdCcpOworCSRmZmkt PnR5cGUoJ3VpbnQzMicgPT4gJ09pZCcpOworCSRmZmktPnR5cGUoJ2ludCcgPT4gJ0V4ZWNT dGF0dXNUeXBlJyk7CisKKwkjIFJlZ2lzdGVyIHRoZSBQR25vdGlmeSByZWNvcmQgdHlwZSBm b3Igc3RydWN0IGFjY2VzcworCSRmZmktPnR5cGUoJ3JlY29yZChQR25vdGlmeSknID0+ICdQ R25vdGlmeV9yZWNvcmQnKTsKKworCW15ICRsaWIgPSBmaW5kX2xpYl9vcl9kaWUoCisJCWxp YiA9PiAncHEnLAorCQlsaWJwYXRoID0+IFskbGliZGlyXSwKKwkgICAgQHN5c3RlbV9wYXRo LAorCSAgICk7CisJJGZmaS0+bGliKCRsaWIpOworCisJJGZmaS0+YXR0YWNoKCdQUWNvbm5l Y3RkYicgPT4gWydzdHJpbmcnXSA9PiAnUEdjb25uJyk7CisJJGZmaS0+YXR0YWNoKAorCQkn UFFjb25uZWN0ZGJQYXJhbXMnID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcg XSA9PiAnUEdjb25uJyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFzZXRkYkxvZ2luJyA9PiBb CisJCQknc3RyaW5nJywgJ3N0cmluZycsICdzdHJpbmcnLCAnc3RyaW5nJywKKwkJCSdzdHJp bmcnLCAnc3RyaW5nJywgJ3N0cmluZycsCisJCV0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0 dGFjaCgnUFFmaW5pc2gnID0+IFsnUEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRh Y2goJ1BRcmVzZXQnID0+IFsnUEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2go J1BRZGInID0+IFsnUEdjb25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF1 c2VyJyA9PiBbJ1BHY29ubiddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFz cycgPT4gWydQR2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUWhvc3Qn ID0+IFsnUEdjb25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFob3N0YWRk cicgPT4gWydQR2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXBvcnQn ID0+IFsnUEdjb25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF0dHknID0+ IFsnUEdjb25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFvcHRpb25zJyA9 PiBbJ1BHY29ubiddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc3RhdHVzJyA9 PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRdHJhbnNhY3Rpb25T dGF0dXMnID0+IFsnUEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFwYXJh bWV0ZXJTdGF0dXMnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ3N0cmluZycpOwor CSRmZmktPmF0dGFjaCgnUFFwaW5nJyA9PiBbJ3N0cmluZyddID0+ICdpbnQnKTsKKwkkZmZp LT5hdHRhY2goCisJCSdQUXBpbmdQYXJhbXMnID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1td JywgJ2ludCcgXSA9PiAnaW50Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcHJvdG9jb2xWZXJz aW9uJyA9PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VydmVy VmVyc2lvbicgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWVy cm9yTWVzc2FnZScgPT4gWydQR2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNo KCdQUXNvY2tldCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQ UXNvY2tldFBvbGwnID0+IFsnaW50JywgJ2ludCcsICdpbnQnLCAnc2ludDY0J10gPT4gJ2lu dCcpOworCSRmZmktPmF0dGFjaCgnUFFnZXRDdXJyZW50VGltZVVTZWMnID0+IFtdID0+ICdz aW50NjQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRYmFja2VuZFBJRCcgPT4gWydQR2Nvbm4nXSA9 PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3Rpb25OZWVkc1Bhc3N3b3JkJyA9 PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY29ubmVjdGlvblVz ZWRQYXNzd29yZCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQ UWNvbm5lY3Rpb25Vc2VkR1NTQVBJJyA9PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZp LT5hdHRhY2goJ1BRY2xpZW50RW5jb2RpbmcnID0+IFsnUEdjb25uJ10gPT4gJ2ludCcpOwor CSRmZmktPmF0dGFjaCgnUFFzZXRDbGllbnRFbmNvZGluZycgPT4gWyAnUEdjb25uJywgJ3N0 cmluZycgXSA9PiAnaW50Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRZXhlYycgPT4gWyAnUEdj b25uJywgJ3N0cmluZycgXSA9PiAnUEdyZXN1bHQnKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQ UWV4ZWNQYXJhbXMnID0+IFsKKwkJCSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdpbnRb XScsCisJCQknc3RyaW5nW10nLCAnaW50W10nLCAnaW50W10nLCAnaW50JworCQldID0+ICdQ R3Jlc3VsdCcpOworCSRmZmktPmF0dGFjaCgKKwkJJ1BRcHJlcGFyZScgPT4gWyAnUEdjb25u JywgJ3N0cmluZycsICdzdHJpbmcnLCAnaW50JywgJ2ludFtdJyBdID0+CisJCSAgJ1BHcmVz dWx0Jyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFleGVjUHJlcGFyZWQnID0+IFsgJ1BHY29u bicsICdzdHJpbmcnLCAnaW50JywKKwkJCSdzdHJpbmdbXScsICdpbnRbXScsICdpbnRbXScs ICdpbnQnIF0gPT4gJ1BHcmVzdWx0Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcmVzdWx0U3Rh dHVzJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ0V4ZWNTdGF0dXNUeXBlJyk7CisJJGZmaS0+YXR0 YWNoKCdQUXJlc1N0YXR1cycgPT4gWydFeGVjU3RhdHVzVHlwZSddID0+ICdzdHJpbmcnKTsK KwkkZmZpLT5hdHRhY2goJ1BRcmVzdWx0RXJyb3JNZXNzYWdlJyA9PiBbJ1BHcmVzdWx0J10g PT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFyZXN1bHRFcnJvckZpZWxkJyA9PiBb ICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFu dHVwbGVzJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFu ZmllbGRzJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFi aW5hcnlUdXBsZXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNo KCdQUWZuYW1lJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ3N0cmluZycpOworCSRm ZmktPmF0dGFjaCgnUFFmbnVtYmVyJyA9PiBbICdQR3Jlc3VsdCcsICdzdHJpbmcnIF0gPT4g J2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFmdGFibGUnID0+IFsgJ1BHcmVzdWx0JywgJ2lu dCcgXSA9PiAnT2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUWZ0YWJsZWNvbCcgPT4gWyAnUEdy ZXN1bHQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZmZvcm1hdCcg PT4gWyAnUEdyZXN1bHQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BR ZnR5cGUnID0+IFsgJ1BHcmVzdWx0JywgJ2ludCcgXSA9PiAnT2lkJyk7CisJJGZmaS0+YXR0 YWNoKCdQUWZzaXplJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRm ZmktPmF0dGFjaCgnUFFmbW9kJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcp OworCSRmZmktPmF0dGFjaCgnUFFjbWRTdGF0dXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3Ry aW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUW9pZFZhbHVlJyA9PiBbJ1BHcmVzdWx0J10gPT4g J09pZCcpOworCSRmZmktPmF0dGFjaCgnUFFjbWRUdXBsZXMnID0+IFsnUEdyZXN1bHQnXSA9 PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUWdldHZhbHVlJyA9PiBbICdQR3Jlc3Vs dCcsICdpbnQnLCAnaW50JyBdID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0 bGVuZ3RoJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkk ZmZpLT5hdHRhY2goJ1BRZ2V0aXNudWxsJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50 JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRbnBhcmFtcycgPT4gWydQR3Jlc3Vs dCddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFyYW10eXBlJyA9PiBbICdQR3Jl c3VsdCcsICdpbnQnIF0gPT4gJ09pZCcpOworCisKKwkkZmZpLT5hdHRhY2goCisJCSdQUWRl c2NyaWJlUHJlcGFyZWQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0 Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWRlc2NyaWJlUG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAn c3RyaW5nJyBdID0+ICdQR3Jlc3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUWNsb3NlUHJl cGFyZWQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZm aS0+YXR0YWNoKCdQUWNsb3NlUG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ ICdQR3Jlc3VsdCcpOworCSRmZmktPmF0dGFjaCgnUFFjbGVhcicgPT4gWydQR3Jlc3VsdCdd ID0+ICd2b2lkJyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRY29ubmVjdFN0YXJ0JyA9PiBbICdz dHJpbmcnIF0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0dGFjaCgKKwkJJ1BRY29ubmVjdFN0 YXJ0UGFyYW1zJyA9PiBbICdzdHJpbmdbXScsICdzdHJpbmdbXScsICdpbnQnIF0gPT4gJ1BH Y29ubicpOworCSRmZmktPmF0dGFjaCgnUFFjb25uZWN0UG9sbCcgPT4gWyAnUEdjb25uJyBd ID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVzZXRTdGFydCcgPT4gWyAnUEdjb25u JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVzZXRQb2xsJyA9PiBbICdQR2Nv bm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzZW5kUXVlcnknID0+IFsgJ1BH Y29ubicsICAnc3RyaW5nJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VuZFF1 ZXJ5UGFyYW1zJyA9PiBbCisJCSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdPaWQqJywg J3N0cmluZyonLAorCQknaW50KicsICdpbnQqJywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZm aS0+YXR0YWNoKCdQUXNlbmRQcmVwYXJlJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJywgJ3N0 cmluZycsICdpbnQnLCAnT2lkW10nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFn ZXRSZXN1bHQnID0+IFsgJ1BHY29ubicgXSA9PiAnUEdyZXN1bHQnKTsKKworCSRmZmktPmF0 dGFjaCgnUFFpc0J1c3knID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0 YWNoKCdQUWNvbnN1bWVJbnB1dCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZp LT5hdHRhY2goJ1BRY2hhbmdlUGFzc3dvcmQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAn c3RyaW5nJyBdID0+ICdQR3Jlc3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUXBpcGVsaW5l U3RhdHVzJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFl bnRlclBpcGVsaW5lTW9kZScgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5h dHRhY2goJ1BRZXhpdFBpcGVsaW5lTW9kZScgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsK KwkkZmZpLT5hdHRhY2goJ1BRcGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2lu dCcpOworCSRmZmktPmF0dGFjaCgnUFFzZW5kRmx1c2hSZXF1ZXN0JyA9PiBbICdQR2Nvbm4n IF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzZW5kUGlwZWxpbmVTeW5jJyA9PiBb ICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzZXRub25ibG9ja2lu ZycgPT4gWyAnUEdjb25uJywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQ UWlzbm9uYmxvY2tpbmcnID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0 YWNoKCdQUWZsdXNoJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCisJIyBOb3RpZmlj YXRpb24gc3VwcG9ydCAtIFBRbm90aWZpZXMgcmV0dXJucyBhIHBvaW50ZXIgdG8gUEdub3Rp Znkgc3RydWN0CisJIyBXZSByZXR1cm4gb3BhcXVlIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5h bCBwb2ludGVyIGZvciBmcmVlaW5nIHdpdGggUFFmcmVlbWVtCisJJGZmaS0+YXR0YWNoKCdQ UW5vdGlmaWVzJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ29wYXF1ZScpOworCSRmZmktPmF0dGFj aCgnUFFmcmVlbWVtJyA9PiBbICdvcGFxdWUnIF0gPT4gJ3ZvaWQnKTsKKworCSMgTm90aWNl IHByb2Nlc3NvciBjYWxsYmFjayBzdXBwb3J0CisJIyB0eXBlZGVmIHZvaWQgKCpQUW5vdGlj ZVByb2Nlc3Nvcikodm9pZCAqYXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkkZmZpLT50 eXBlKCcob3BhcXVlLHN0cmluZyktPnZvaWQnID0+ICdQUW5vdGljZVByb2Nlc3NvcicpOwor CSRmZmktPmF0dGFjaCgnUFFzZXROb3RpY2VQcm9jZXNzb3InID0+IFsgJ1BHY29ubicsICdQ UW5vdGljZVByb2Nlc3NvcicsICdvcGFxdWUnIF0gPT4gJ29wYXF1ZScpOworCisJIyBTdG9y ZSB0aGUgJGZmaSBpbnN0YW5jZSBmb3IgdXNlIGJ5IGhlbHBlciBmdW5jdGlvbnMKKwkkUG9z dGdyZVNRTDo6UHFGRkk6Ol9mZmkgPSAkZmZpOworfQorCisjIEhlbHBlciBmdW5jdGlvbnMg dG8gZXh0cmFjdCB2YWx1ZXMgZnJvbSBQR25vdGlmeSBzdHJ1Y3QKKyMgVGhlIG9wYXF1ZSBw b2ludGVyIGlzIGNhc3QgdG8gdGhlIHJlY29yZCB0eXBlIHRvIGFjY2VzcyBmaWVsZHMKKwor c3ViIF9jYXN0X3RvX3Bnbm90aWZ5Cit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVybiB1 bmRlZiB1bmxlc3MgJHB0cjsKKwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5j YXN0KCdvcGFxdWUnLCAncmVjb3JkKFBHbm90aWZ5KSonLCAkcHRyKTsKK30KKworc3ViIFBR bm90aWZ5X2NoYW5uZWwKK3sKKwlteSAkcHRyID0gc2hpZnQ7CisJcmV0dXJuIHVuZGVmIHVu bGVzcyAkcHRyOworCW15ICRub3RpZnkgPSBfY2FzdF90b19wZ25vdGlmeSgkcHRyKTsKKwlt eSAkc3RyX3B0ciA9ICRub3RpZnktPnJlbG5hbWU7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAk c3RyX3B0cjsKKwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFx dWUnLCAnc3RyaW5nJywgJHN0cl9wdHIpOworfQorCitzdWIgUFFub3RpZnlfcGF5bG9hZAor eworCW15ICRwdHIgPSBzaGlmdDsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRwdHI7CisJbXkg JG5vdGlmeSA9IF9jYXN0X3RvX3Bnbm90aWZ5KCRwdHIpOworCW15ICRzdHJfcHRyID0gJG5v dGlmeS0+ZXh0cmE7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsKKwlyZXR1cm4g JFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3RyaW5nJywgJHN0 cl9wdHIpOworfQorCitzdWIgUFFub3RpZnlfYmVfcGlkCit7CisJbXkgJHB0ciA9IHNoaWZ0 OworCXJldHVybiB1bmRlZiB1bmxlc3MgJHB0cjsKKwlteSAkbm90aWZ5ID0gX2Nhc3RfdG9f cGdub3RpZnkoJHB0cik7CisJcmV0dXJuICRub3RpZnktPmJlX3BpZDsKK30KKworIyBGcmVl IGEgUEdub3RpZnkgc3RydWN0IHVzaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyCitzdWIgUFFu b3RpZnlfZnJlZQoreworCW15ICRwdHIgPSBzaGlmdDsKKwlyZXR1cm4gdW5sZXNzICRwdHI7 CisJUFFmcmVlbWVtKCRwdHIpOworfQorCisjIENyZWF0ZSBhIG5vdGljZSBwcm9jZXNzb3Ig Y2xvc3VyZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFFzZXROb3RpY2VQcm9jZXNzb3IuCisj IFRoZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCAoYXJnLCBtZXNzYWdlKSB3aGVy ZSBhcmcgaXMgb3BhcXVlIGFuZCBtZXNzYWdlIGlzIHN0cmluZy4KKyMgUmV0dXJucyB0aGUg Y2xvc3VyZSAtIGNhbGxlciBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gcHJldmVudCBnYXJi YWdlIGNvbGxlY3Rpb24uCitzdWIgY3JlYXRlX25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAk Y2FsbGJhY2sgPSBzaGlmdDsgICMgc3ViIHsgbXkgKCRhcmcsICRtZXNzYWdlKSA9IEBfOyAu Li4gfQorCXJldHVybiAkUG9zdGdyZVNRTDo6UHFGRkk6Ol9mZmktPmNsb3N1cmUoJGNhbGxi YWNrKTsKK30KKworPXBvZAorCis9aGVhZDEgU0VFIEFMU08KKworTDxQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uPiwgTDxQb3N0Z3JlU1FMOjpUZXN0OjpQcT4sCitMPFBvc3RncmVTUUw6 OlBxQ29uc3RhbnRzPiwgTDxQb3N0Z3JlU1FMOjpQR1R5cGVzPiwgTDxGRkk6OlBsYXR5cHVz PgorCis9Y3V0CisKKzE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rl ci5wbQppbmRleCBlMjY3YmE4NjhmZS4uZTU2MDA4Mjg3YzYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rlc3QvcGVy bC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQpAQCAtMTEyLDYgKzExMiw3IEBAIHVzZSBT b2NrZXQ7CiB1c2UgVGVzdDo6TW9yZTsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlscyAg ICAgICAgICAoKTsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpCYWNrZ3JvdW5kUHNxbCAoKTsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRleHQ6OlBhcnNlV29yZHMg ICAgICAgICAgICAgICAgIHF3KHNoZWxsd29yZHMpOwogdXNlIFRpbWU6OkhpUmVzICAgICAg ICAgICAgICAgICAgICAgIHF3KHVzbGVlcCk7CiB1c2UgU2NhbGFyOjpVdGlsICAgICAgICAg ICAgICAgICAgICAgcXcoYmxlc3NlZCk7CkBAIC0yMDM2LDIwICsyMDM3LDQwIEBAIHN1YiBz YWZlX3BzcWwKIAogCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKIAotCW15ICRyZXQgPSAkc2Vs Zi0+cHNxbCgKLQkJJGRibmFtZSwgJHNxbCwKLQkJJXBhcmFtcywKLQkJc3Rkb3V0ID0+IFwk c3Rkb3V0LAotCQlzdGRlcnIgPT4gXCRzdGRlcnIsCi0JCW9uX2Vycm9yX2RpZSA9PiAxLAot CQlvbl9lcnJvcl9zdG9wID0+IDEpOwotCi0JIyBwc3FsIGNhbiBlbWl0IHN0ZGVyciBmcm9t IE5PVElDRXMgZXRjCi0JaWYgKCRzdGRlcnIgbmUgIiIpCisJIyBmb3Igbm93IG9ubHkgdXNl IGEgU2Vzc2lvbiBvYmplY3QgZm9yIHNpbmdsZSBzdGF0ZW1lbnQgc3FsIHdpdGhvdXQKKwkj IGFueSBzcGVjaWFsIHBhcmFtcworCWlmICAoJHNxbCA9fiAvXHcvICYmICRzcWwgIX4gL1xc YmluZHw7Lipcdy9zICYmICFzY2FsYXIoa2V5cyglcGFyYW1zKSkpCiAJewotCQlwcmludCAi IyMjIyBCZWdpbiBzdGFuZGFyZCBlcnJvclxuIjsKLQkJcHJpbnQgJHN0ZGVycjsKLQkJcHJp bnQgIlxuIyMjIyBFbmQgc3RhbmRhcmQgZXJyb3JcbiI7CisKKwkJbXkgJHNlc3Npb24gPSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZT0+ICRzZWxmLAorCQkJCQkJCQkJ CQkJCSBkYm5hbWUgPT4gJGRibmFtZSk7CisJCW15ICRyZXMgPSAkc2Vzc2lvbi0+cXVlcnko JHNxbCk7CisJCW15ICRzdGF0dXMgPSAkcmVzLT57c3RhdHVzfTsKKwkJJHN0ZG91dCA9ICRy ZXMtPntwc3Fsb3V0fSAvLyAiIjsKKwkJJHN0ZGVyciA9ICRyZXMtPntlcnJvcl9tZXNzYWdl fSAvLyAiIjsKKwkJZGllICJlcnJvcjogc3RhdHVzID0gJHN0YXR1cyBzdGRlcnI6ICckc3Rk ZXJyJ1xud2hpbGUgcnVubmluZyAnJHNxbCciCisJCSAgaWYgKCRzdGF0dXMgIT0gMSAmJiAk c3RhdHVzICE9IDIpOyAjIENPTU1BTkRfT0sgb3IgQ09NTUFORF9UVVBMRVMKKworCX0KKwll bHNlCisJeworCQkjIGRpYWcgInNhZmVfcHNxbCBjYWxsIGhhcyBwYXJhbXMgb3IgbXVsdGlw bGUgc3RhdGVtZW50cyI7CisKKwkJbXkgJHJldCA9ICRzZWxmLT5wc3FsKAorCQkJJGRibmFt ZSwgJHNxbCwKKwkJCSVwYXJhbXMsCisJCQlzdGRvdXQgPT4gXCRzdGRvdXQsCisJCQlzdGRl cnIgPT4gXCRzdGRlcnIsCisJCQlvbl9lcnJvcl9kaWUgPT4gMSwKKwkJCW9uX2Vycm9yX3N0 b3AgPT4gMSk7CisKKwkJIyBwc3FsIGNhbiBlbWl0IHN0ZGVyciBmcm9tIE5PVElDRXMgZXRj CisJCWlmICgkc3RkZXJyIG5lICIiKQorCQl7CisJCQlwcmludCAiIyMjIyBCZWdpbiBzdGFu ZGFyZCBlcnJvclxuIjsKKwkJCXByaW50ICRzdGRlcnI7CisJCQlwcmludCAiXG4jIyMjIEVu ZCBzdGFuZGFyZCBlcnJvclxuIjsKKwkJfQogCX0KIAogCXJldHVybiAkc3Rkb3V0OwpAQCAt MjE1Myw2ICsyMTc0LDkgQEAgc3ViIHBzcWwKIAogCWxvY2FsICVFTlYgPSAkc2VsZi0+X2dl dF9lbnYoKTsKIAorCSMgdW5jb21tZW50IHRvIGdldCBhIGNvdW50IG9mIGNhbGxzIHRvIHBz cWwKKwkjIG5vdGUoImNvdW50aW5nIHBzcWwiKTsKKwogCW15ICRzdGRvdXQgPSAkcGFyYW1z e3N0ZG91dH07CiAJbXkgJHN0ZGVyciA9ICRwYXJhbXN7c3RkZXJyfTsKIAlteSAkcmVwbGlj YXRpb24gPSAkcGFyYW1ze3JlcGxpY2F0aW9ufTsKQEAgLTI3MjYsMzMgKzI3NTAsMjAgQEAg c3ViIHBvbGxfcXVlcnlfdW50aWwKIHsKIAlteSAoJHNlbGYsICRkYm5hbWUsICRxdWVyeSwg JGV4cGVjdGVkKSA9IEBfOwogCi0JbG9jYWwgJUVOViA9ICRzZWxmLT5fZ2V0X2VudigpOwot CiAJJGV4cGVjdGVkID0gJ3QnIHVubGVzcyBkZWZpbmVkKCRleHBlY3RlZCk7ICAgICMgZGVm YXVsdCB2YWx1ZQogCi0JbXkgJGNtZCA9IFsKLQkJJHNlbGYtPmluc3RhbGxlZF9jb21tYW5k KCdwc3FsJyksICctLW5vLXBzcWxyYycsCi0JCSctLW5vLWFsaWduJywgJy0tdHVwbGVzLW9u bHknLAotCQknLS1kYm5hbWUnID0+ICRzZWxmLT5jb25uc3RyKCRkYm5hbWUpCi0JXTsKLQlt eSAoJHN0ZG91dCwgJHN0ZGVycik7CisJbXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkc2VsZiwKKwkJCQkJCQkJCQkJCSBkYm5hbWUgPT4g JGRibmFtZSk7CiAJbXkgJG1heF9hdHRlbXB0cyA9IDEwICogJFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CiAJbXkgJGF0dGVtcHRzID0gMDsKIAorCW15ICRx dWVyeV92YWx1ZTsKKwogCXdoaWxlICgkYXR0ZW1wdHMgPCAkbWF4X2F0dGVtcHRzKQogCXsK LQkJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gJGNtZCwKLQkJICAnPCcgPT4gXCRxdWVy eSwKLQkJICAnPicgPT4gXCRzdGRvdXQsCi0JCSAgJzI+JyA9PiBcJHN0ZGVycjsKLQotCQlj aG9tcCgkc3Rkb3V0KTsKLQkJY2hvbXAoJHN0ZGVycik7Ci0KLQkJaWYgKCRzdGRvdXQgZXEg JGV4cGVjdGVkICYmICRzdGRlcnIgZXEgJycpCi0JCXsKLQkJCXJldHVybiAxOwotCQl9CisJ CW15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnkoJHF1ZXJ5KTsKKwkJJHF1ZXJ5X3ZhbHVl ID0gKCRyZXN1bHQtPntwc3Fsb3V0fSAvLyAiIik7CisJCXJldHVybiAxIGlmICAkcXVlcnlf dmFsdWUgZXEgJGV4cGVjdGVkOwogCiAJCSMgV2FpdCAwLjEgc2Vjb25kIGJlZm9yZSByZXRy eWluZy4KIAkJdXNsZWVwKDEwMF8wMDApOwpAQCAtMjc2Nyw5ICsyNzc4LDQwIEBAICRxdWVy eQogZXhwZWN0aW5nIHRoaXMgb3V0cHV0OgogJGV4cGVjdGVkCiBsYXN0IGFjdHVhbCBxdWVy eSBvdXRwdXQ6Ci0kc3Rkb3V0Ci13aXRoIHN0ZGVycjoKLSRzdGRlcnIpOworJHF1ZXJ5X3Zh bHVlCispOworCXJldHVybiAwOworfQorCis9cG9kCisKKz1pdGVtICRub2RlLT5wb2xsX3Vu dGlsX2Nvbm5lY3Rpb24oJGRibmFtZSkKKworVHJ5IHRvIGNvbm5lY3QgcmVwZWF0ZWRseSwg dW50aWwgaXQgd2Ugc3VjY2VlZC4KK1RpbWVzIG91dCBhZnRlciAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCBzZWNvbmRzLgorUmV0dXJucyAxIGlmIHN1Y2Nl c3NmdWwsIDAgaWYgdGltZWQgb3V0LgorCis9Y3V0CisKK3N1YiBwb2xsX3VudGlsX2Nvbm5l Y3Rpb24KK3sKKwlteSAoJHNlbGYsICRkYm5hbWUpID0gQF87CisKKwlteSAkbWF4X2F0dGVt cHRzID0gMTAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsK KwlteSAkYXR0ZW1wdHMgPSAwOworCisJd2hpbGUgKCRhdHRlbXB0cyA8ICRtYXhfYXR0ZW1w dHMpCisJeworCQlteSAkc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5l dyhub2RlID0+ICRzZWxmLAorCQkJCQkJCQkJCQkJCSBkYm5hbWUgPT4gJGRibmFtZSk7CisJ CXJldHVybiAxIGlmICRzZXNzaW9uOworCisJCSMgV2FpdCAwLjEgc2Vjb25kIGJlZm9yZSBy ZXRyeWluZy4KKwkJdXNsZWVwKDEwMF8wMDApOworCisJCSRhdHRlbXB0cysrOworCX0KKwog CXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9HTlVtYWtlZmlsZSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0dOVW1h a2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjU4NmMw NjI2YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0 L0dOVW1ha2VmaWxlCkBAIC0wLDAgKzEsNzEgQEAKKyMgTWFrZWZpbGUgZm9yIFBvc3RncmVT UUw6OlRlc3Q6OlBxCisjIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0dOVW1ha2Vm aWxlCisKK3N1YmRpciA9IHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0Cit0b3BfYnVp bGRkaXIgPSAuLi8uLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbAorCisjIHdoZXJlIHRvIGZpbmQgeHN1YnBwIGZvciBidWlsZGluZyBY Uy4KK1hTVUJQUERJUiA9ICQoc2hlbGwgJChQRVJMKSAtZSAndXNlIExpc3Q6OlV0aWwgcXco Zmlyc3QpOyBwcmludCBmaXJzdCB7IC1yICIkJF8vRXh0VXRpbHMveHN1YnBwIiB9IEBJTkMn KQorCitBUkNITElCRVhQID0gJChzaGVsbCAkKFBFUkwpIC1lICd1c2UgQ29uZmlnOyBwcmlu dCAkJENvbmZpZ3thcmNobGliZXhwfTsnKQorCisjIG9ubHkgYnVpbGQgaWYgd2UgY2FuIGZp bmQgeHN1YnBwCitpZm5lcSAoLCQoWFNVQlBQRElSKSkKKworaWZlcSAoJChQT1JUTkFNRSks IHdpbjMyKQorb3ZlcnJpZGUgQ1BQRkxBR1MgKz0gLURQTFBFUkxfSEFWRV9VSURfR0lECisj IFBlcmwgb24gd2luMzIgY29udGFpbnMgLyogd2l0aGluIGNvbW1lbnQgYWxsIG92ZXIgdGhl IGhlYWRlciBmaWxlLAorIyBzbyBkaXNhYmxlIHRoaXMgd2FybmluZy4KK292ZXJyaWRlIENQ UEZMQUdTICs9IC1Xbm8tY29tbWVudAorZW5kaWYKKworIyBTdXBwcmVzcyB3YXJuaW5ncyBm cm9tIFBlcmwgaGVhZGVycyB0aGF0IHdlIGNhbm5vdCBmaXgKK292ZXJyaWRlIENGTEFHUyAr PSAtV25vLXNoYWRvdz1jb21wYXRpYmxlLWxvY2FsIC1Xbm8tZGVjbGFyYXRpb24tYWZ0ZXIt c3RhdGVtZW50CisKKyMgTm90ZTogd2UgbmVlZCB0byBpbmNsdWRlIHRoZSBwZXJsX2luY2x1 ZGVzcGVjIGRpcmVjdG9yeSBsYXN0LAorIyBwcm9iYWJseSBiZWNhdXNlIGl0IHNvbWV0aW1l cyBjb250YWlucyBzb21lIGhlYWRlciBmaWxlcyB3aXRoIG5hbWVzCisjIHRoYXQgY2xhc2gg d2l0aCBzb21lIG9mIG91cnMsIG9yIHdpdGggc29tZSB0aGF0IHdlIGluY2x1ZGUsIG5vdGFi bHkgb24KKyMgV2luZG93cy4KKyMKKyMgV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBwbHBlcmwg ZGlyZWN0b3J5IGZvciBwcHBvcnQuaAorIworb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkuIC1J JChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMvcGwvcGxwZXJsIC1JJCh0b3Bfc3JjZGly KS9zcmMvaW50ZXJmYWNlcy9saWJwcSAkKENQUEZMQUdTKSAtSSQoQVJDSExJQkVYUCkvQ09S RQorCisjIHRoaXMgaXMgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCB0aGUgc2FtZSBkaXJlY3Rv cnkgbmFtZWQgYnkgcGVybF9pbmNsdWRlc3BlYworIyBycGF0aGRpciA9ICQocGVybF9hcmNo bGliZXhwKS9DT1JFCisKKyMgTmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGUgYm9vdHN0cmFwIGZ1 bmN0aW9uIGlzIHZpc2libGUuCisjIElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBkbyB0aGlz PworQ0ZMQUdTX1NMX01PRFVMRSA6PQorCitOQU1FID0gUHEKKworT0JKUyA9IFBxLm8KKwor U0hMSUJfTElOS19JTlRFUk5BTCA9ICQobGlicHEpCisKKworaW5jbHVkZSAkKHRvcF9zcmNk aXIpL3NyYy9NYWtlZmlsZS5zaGxpYgorCithbGw6IGFsbC1saWIKKworUHEuYzogUHEueHMK KwkkKFBFUkwpICQoWFNVQlBQRElSKS9FeHRVdGlscy94c3VicHAgJDwgPiAkQAorCisjIFBx LntzbyxkbGwsZHlsaWJ9IHNob3VsZCBiZSBpbnN0YWxsZWQgYWxvbmdzaWRlIHRoZSAucG0g bW9kdWxlCitpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMKKwkkKElOU1RBTExfU0hMSUIpIFBx JChETFNVRkZJWCkgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9QcSQoRExTVUZG SVgpJworCSQoSU5TVEFMTF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoc3ViZGlyKS9QcS5wbSAn JChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1BxLnBtJworCit1bmluc3RhbGw6CisJ cm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9QcSQoRExTVUZGSVgpJwor CXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUHEucG0nCisKK2Vsc2UK KworIyBubyB4c3VicHAsIHNvIG5vdGhpbmcgdG8gYnVpbGQKK2FsbDoKKwlAZWNobyBDYW5u b3QgYnVpbGQgUHEuJChETFNVRkZJWCkKKworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1BxLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FM L1Rlc3QvUHEucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNm NDQ3N2NjY2MzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FM L1Rlc3QvUHEucG0KQEAgLTAsMCArMSwxMTEgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworPXBvZAorCis9 aGVhZDEgTkFNRQorCitQb3N0Z3JlU1FMOjpUZXN0OjpQcSAtIFhTIHdyYXBwZXIgZm9yIGxp YnBxCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpQcTsK KworICBteSAkY29ubiA9IFBRY29ubmVjdGRiKCJkYm5hbWU9cG9zdGdyZXMiKTsKKyAgZGll IFBRZXJyb3JNZXNzYWdlKCRjb25uKSB1bmxlc3MgUFFzdGF0dXMoJGNvbm4pID09IENPTk5F Q1RJT05fT0s7CisKKyAgbXkgJHJlc3VsdCA9IFBRZXhlYygkY29ubiwgIlNFTEVDVCAxIik7 CisgIGlmIChQUXJlc3VsdFN0YXR1cygkcmVzdWx0KSA9PSBQR1JFU19UVVBMRVNfT0spIHsK KyAgICAgIHByaW50IFBRZ2V0dmFsdWUoJHJlc3VsdCwgMCwgMCksICJcbiI7CisgIH0KKyAg UFFjbGVhcigkcmVzdWx0KTsKKworICBQUWZpbmlzaCgkY29ubik7CisKKz1oZWFkMSBERVND UklQVElPTgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBQZXJsIGJpbmRpbmdzIHRvIGxpYnBx IHVzaW5nIFhTLiBJdCBpcyBhbiBhbHRlcm5hdGl2ZQorYmFja2VuZCBmb3IgTDxQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uPiB0aGF0IGNhbiBiZSBlbmFibGVkIGJ5IHNldHRpbmcKK3Ro ZSBDPFBHX1VTRV9QUV9YUz4gZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK1VubGlrZSBMPFBv c3RncmVTUUw6OlBxRkZJPiwgdGhpcyBtb2R1bGUgcmVxdWlyZXMgY29tcGlsYXRpb24gYnV0 IGhhcworbm8gcnVudGltZSBkZXBlbmRlbmNpZXMgb24gRkZJIGxpYnJhcmllcy4KKworPWhl YWQxIEZVTkNUSU9OUworCitBbGwgc3RhbmRhcmQgbGlicHEgZnVuY3Rpb25zIGxpc3RlZCBi ZWxvdyBhcmUgZXhwb3J0ZWQuIFNlZSB0aGUgUG9zdGdyZVNRTAorbGlicHEgZG9jdW1lbnRh dGlvbiBmb3IgZGV0YWlscy4KKworQjxDb25uZWN0aW9uOj4gQzxQUWNvbm5lY3RkYj4sIEM8 UFFjb25uZWN0U3RhcnQ+LCBDPFBRY29ubmVjdFBvbGw+LAorQzxQUWZpbmlzaD4sIEM8UFFz dGF0dXM+LCBDPFBRZXJyb3JNZXNzYWdlPiwgQzxQUWJhY2tlbmRQSUQ+LAorQzxQUXRyYW5z YWN0aW9uU3RhdHVzPgorCitCPEV4ZWN1dGlvbjo+IEM8UFFleGVjPiwgQzxQUXNlbmRRdWVy eT4sIEM8UFFzZW5kUXVlcnlQYXJhbXM+LAorQzxQUWdldFJlc3VsdD4sIEM8UFFjbGVhcj4s IEM8UFFjb25zdW1lSW5wdXQ+LCBDPFBRaXNCdXN5PgorCitCPFJlc3VsdHM6PiBDPFBRcmVz dWx0U3RhdHVzPiwgQzxQUW50dXBsZXM+LCBDPFBRbmZpZWxkcz4sIEM8UFFmbmFtZT4sCitD PFBRZnR5cGU+LCBDPFBRZ2V0dmFsdWU+LCBDPFBRZ2V0aXNudWxsPgorCitCPFBpcGVsaW5l Oj4gQzxQUWVudGVyUGlwZWxpbmVNb2RlPiwgQzxQUWV4aXRQaXBlbGluZU1vZGU+LAorQzxQ UXBpcGVsaW5lU3RhdHVzPiwgQzxQUXBpcGVsaW5lU3luYz4sIEM8UFFzZXRub25ibG9ja2lu Zz4sCitDPFBRaXNub25ibG9ja2luZz4KKworQjxOb3RpZmljYXRpb25zOj4gQzxQUW5vdGlm aWVzPiAocmV0dXJucyBoYXNocmVmKSwgQzxQUW5vdGlmeV9jaGFubmVsPiwKK0M8UFFub3Rp ZnlfcGF5bG9hZD4sIEM8UFFub3RpZnlfYmVfcGlkPiwgQzxQUW5vdGlmeV9mcmVlPgorCitC PE90aGVyOj4gQzxQUWNoYW5nZVBhc3N3b3JkPiwgQzxQUWZyZWVtZW0+CisKKz1oZWFkMiBO b3RpZmljYXRpb24gSGFuZGxpbmcKKworVW5saWtlIHRoZSBGRkkgYmFja2VuZCwgQzxQUW5v dGlmaWVzPiByZXR1cm5zIGEgUGVybCBoYXNocmVmIGRpcmVjdGx5Cit3aXRoIGtleXMgQzxj aGFubmVsPiwgQzxwaWQ+LCBhbmQgQzxwYXlsb2FkPi4gVGhlIGhlbHBlciBmdW5jdGlvbnMK K0M8UFFub3RpZnlfY2hhbm5lbD4sIEM8UFFub3RpZnlfYmVfcGlkPiwgQzxQUW5vdGlmeV9w YXlsb2FkPiwgYW5kCitDPFBRbm90aWZ5X2ZyZWU+IGFyZSBwcm92aWRlZCBmb3IgQVBJIGNv bXBhdGliaWxpdHkgd2l0aCB0aGUgRkZJIGJhY2tlbmQuCisKKz1oZWFkMSBFWFBPUlRFRCBD T05TVEFOVFMKKworVGhpcyBtb2R1bGUgcmUtZXhwb3J0cyBhbGwgY29uc3RhbnRzIGZyb20g TDxQb3N0Z3JlU1FMOjpQcUNvbnN0YW50cz4uCisKKz1oZWFkMSBTRUUgQUxTTworCitMPFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24+LCBMPFBvc3RncmVTUUw6OlBxRkZJPiwgTDxQb3N0 Z3JlU1FMOjpQcUNvbnN0YW50cz4KKworPWN1dAorCitwYWNrYWdlIFBvc3RncmVTUUw6OlRl c3Q6OlBxOworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIENhcnA7CisKK3Jl cXVpcmUgRXhwb3J0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6UHFDb25zdGFudHM7CisKK291ciBA SVNBID0gcXcoRXhwb3J0ZXIpOworCitvdXIgJFZFUlNJT04gPSAnMS4wMCc7CisKK215IEBy b3V0aW5lcyA9IHF3KAorICBQUWNsZWFyIFBRY29ubmVjdGRiIFBRY29uc3VtZUlucHV0IFBR ZXJyb3JNZXNzYWdlIFBRZXhlYyAgUFFmaW5pc2ggUFFmbmFtZQorICBQUWZ0eXBlIFBRZ2V0 aXNudWxsIFBRZ2V0UmVzdWx0IFBRZ2V0dmFsdWUgUFFpc0J1c3kgUFFuZmllbGRzIFBRbnR1 cGxlcworICBQUXJlc3VsdFN0YXR1cyBQUXNlbmRRdWVyeSBQUXN0YXR1cyBQUWNoYW5nZVBh c3N3b3JkCisgIFBRY29ubmVjdFN0YXJ0IFBRY29ubmVjdFBvbGwgUFFiYWNrZW5kUElEIFBR dHJhbnNhY3Rpb25TdGF0dXMKKyAgUFFzZXRub25ibG9ja2luZyBQUWlzbm9uYmxvY2tpbmcK KyAgUFFlbnRlclBpcGVsaW5lTW9kZSBQUWV4aXRQaXBlbGluZU1vZGUgUFFwaXBlbGluZVN0 YXR1cyBQUXBpcGVsaW5lU3luYworICBQUXNlbmRRdWVyeVBhcmFtcworICBQUW5vdGlmaWVz IFBRZnJlZW1lbQorICBQUW5vdGlmeV9jaGFubmVsIFBRbm90aWZ5X2JlX3BpZCBQUW5vdGlm eV9wYXlsb2FkIFBRbm90aWZ5X2ZyZWUKKyk7CisKK291ciBARVhQT1JUID0gKEByb3V0aW5l cywgQFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzOjpFWFBPUlQpOworCisjIEhlbHBlciBmdW5j dGlvbnMgZm9yIFBHbm90aWZ5IC0gWFMgcmV0dXJucyBhIGhhc2hyZWYgZGlyZWN0bHkKK3N1 YiBQUW5vdGlmeV9jaGFubmVsIHsgcmV0dXJuICRfWzBdLT57Y2hhbm5lbH07IH0KK3N1YiBQ UW5vdGlmeV9iZV9waWQgIHsgcmV0dXJuICRfWzBdLT57cGlkfTsgfQorc3ViIFBRbm90aWZ5 X3BheWxvYWQgeyByZXR1cm4gJF9bMF0tPntwYXlsb2FkfTsgfQorc3ViIFBRbm90aWZ5X2Zy ZWUgICAgeyB9ICAjIG5vLW9wLCBwZXJsIEdDcyB0aGUgaGFzaHJlZgorCityZXF1aXJlIFhT TG9hZGVyOworWFNMb2FkZXI6OmxvYWQoJ1Bvc3RncmVTUUw6OlRlc3Q6OlBxJywgKTsKKwor MTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1BxLnhzIGIv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvUHEueHMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmViZWNiNTRmMDBkCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvUHEueHMKQEAgLTAsMCArMSwxNzIgQEAK KyNkZWZpbmUgUEVSTF9OT19HRVRfQ09OVEVYVAorI2luY2x1ZGUgIkVYVEVSTi5oIgorI2lu Y2x1ZGUgInBlcmwuaCIKKyNpbmNsdWRlICJYU1VCLmgiCisKKyNpbmNsdWRlICJwcHBvcnQu aCIKKworI2luY2x1ZGUgImxpYnBxLWZlLmgiCisKK01PRFVMRSA9IFBvc3RncmVTUUw6OlRl c3Q6OlBxCQlQQUNLQUdFID0gUG9zdGdyZVNRTDo6VGVzdDo6UHEKKworUFJPVE9UWVBFUzog RU5BQkxFCisKK1RZUEVNQVA6IDw8RU9UWVBFCisKKyMgd291bGQgbGlrZSB0byB1c2UgVF9Q VFJPQkogaGVyZSBidXQgaXQgZ2V0cyBodW5nIHVwIG9uIGNvbnN0LW5lc3MKKworUEdyZXN1 bHQgKiAgICAgICBUX1BUUgorY29uc3QgUEdyZXN1bHQgKiBUX1BUUgorUEdjb25uICogICAg ICAgICBUX1BUUgorY29uc3QgUEdjb25uICogICBUX1BUUgorY2hhciAqICAgICAgICAgICBU X1BWCitjb25zdCBjaGFyICogICAgIFRfUFYKK0Nvbm5TdGF0dXNUeXBlICAgVF9FTlVNCitF eGVjU3RhdHVzVHlwZSAgIFRfRU5VTQorT2lkICAgICAgICAgICAgICBUX1VWCisKK0VPVFlQ RQorCitQR3Jlc3VsdCAqCitQUWNoYW5nZVBhc3N3b3JkKFBHY29ubiAqY29ubiwgY29uc3Qg Y2hhciAqdXNlciwgY29uc3QgY2hhciAqcGFzc3dkKTsKKwordm9pZAorUFFjbGVhcihQR3Jl c3VsdCAqcmVzKTsKKworUEdjb25uICoKK1BRY29ubmVjdGRiKGNvbnN0IGNoYXIgKmNvbm5p bmZvKTsKKworaW50CitQUWNvbnN1bWVJbnB1dChQR2Nvbm4gKmNvbm4pOworCitjaGFyICoK K1BRZXJyb3JNZXNzYWdlKGNvbnN0IFBHY29ubiAqY29ubik7CisKK1BHcmVzdWx0ICoKK1BR ZXhlYyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KTsKKwordm9pZAorUFFmaW5p c2goUEdjb25uICpjb25uKTsKKworY2hhciAqCitQUWZuYW1lKGNvbnN0IFBHcmVzdWx0ICpy ZXMsIGludCBmaWVsZF9udW0pOworCitPaWQKK1BRZnR5cGUoY29uc3QgUEdyZXN1bHQgKnJl cywgaW50IGZpZWxkX251bSk7CisKK2ludAorUFFnZXRpc251bGwoY29uc3QgUEdyZXN1bHQg KnJlcywgaW50IHR1cF9udW0sIGludCBmaWVsZF9udW0pOworCitQR3Jlc3VsdCAqCitQUWdl dFJlc3VsdChQR2Nvbm4gKmNvbm4pOworCitjaGFyICoKK1BRZ2V0dmFsdWUoY29uc3QgUEdy ZXN1bHQgKnJlcywgaW50IHR1cF9udW0sIGludCBmaWVsZF9udW0pOworCitpbnQKK1BRaXNC dXN5KFBHY29ubiAqY29ubik7CisKK2ludAorUFFuZmllbGRzKGNvbnN0IFBHcmVzdWx0ICpy ZXMpOworCitpbnQKK1BRbnR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzKTsKKworRXhlY1N0 YXR1c1R5cGUKK1BRcmVzdWx0U3RhdHVzKGNvbnN0IFBHcmVzdWx0ICpyZXMpOworCitpbnQK K1BRc2VuZFF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpOworCitDb25u U3RhdHVzVHlwZQorUFFzdGF0dXMoY29uc3QgUEdjb25uICpjb25uKTsKKworUEdjb25uICoK K1BRY29ubmVjdFN0YXJ0KGNvbnN0IGNoYXIgKmNvbm5pbmZvKTsKKworaW50CitQUWNvbm5l Y3RQb2xsKFBHY29ubiAqY29ubik7CisKK2ludAorUFFiYWNrZW5kUElEKGNvbnN0IFBHY29u biAqY29ubik7CisKK2ludAorUFF0cmFuc2FjdGlvblN0YXR1cyhjb25zdCBQR2Nvbm4gKmNv bm4pOworCitpbnQKK1BRc2V0bm9uYmxvY2tpbmcoUEdjb25uICpjb25uLCBpbnQgYXJnKTsK KworaW50CitQUWlzbm9uYmxvY2tpbmcoY29uc3QgUEdjb25uICpjb25uKTsKKworaW50CitQ UWVudGVyUGlwZWxpbmVNb2RlKFBHY29ubiAqY29ubik7CisKK2ludAorUFFleGl0UGlwZWxp bmVNb2RlKFBHY29ubiAqY29ubik7CisKK2ludAorUFFwaXBlbGluZVN0YXR1cyhjb25zdCBQ R2Nvbm4gKmNvbm4pOworCitpbnQKK1BRcGlwZWxpbmVTeW5jKFBHY29ubiAqY29ubik7CisK K2ludAorUFFzb2NrZXQoY29uc3QgUEdjb25uICpjb25uKTsKKworaW50CitQUXNvY2tldFBv bGwoaW50IHNvY2ssIGludCBmb3JSZWFkLCBpbnQgZm9yV3JpdGUsIGxvbmcgZW5kX3RpbWUp OworCitsb25nCitQUWdldEN1cnJlbnRUaW1lVVNlYygpOworCit2b2lkCitQUWZyZWVtZW0o dm9pZCAqcHRyKTsKKworU1YgKgorUFFub3RpZmllcyhQR2Nvbm4gKmNvbm4pCisgICAgQ09E RToKKyAgICAgICAgUEdub3RpZnkgKm5vdGlmeSA9IFBRbm90aWZpZXMoY29ubik7CisgICAg ICAgIGlmIChub3RpZnkgPT0gTlVMTCkgeworICAgICAgICAgICAgUkVUVkFMID0gJlBMX3N2 X3VuZGVmOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgSFYgKmh2ID0gbmV3SFYo KTsKKyAgICAgICAgICAgIGh2X3N0b3JlKGh2LCAiY2hhbm5lbCIsIDcsIG5ld1NWcHYobm90 aWZ5LT5yZWxuYW1lLCAwKSwgMCk7CisgICAgICAgICAgICBodl9zdG9yZShodiwgInBpZCIs IDMsIG5ld1NWaXYobm90aWZ5LT5iZV9waWQpLCAwKTsKKyAgICAgICAgICAgIGh2X3N0b3Jl KGh2LCAicGF5bG9hZCIsIDcsCisgICAgICAgICAgICAgICAgICAgICBub3RpZnktPmV4dHJh ID8gbmV3U1Zwdihub3RpZnktPmV4dHJhLCAwKSA6IG5ld1NWcHYoIiIsIDApLCAwKTsKKyAg ICAgICAgICAgIFBRZnJlZW1lbShub3RpZnkpOworICAgICAgICAgICAgUkVUVkFMID0gbmV3 UlZfbm9pbmMoKFNWICopaHYpOworICAgICAgICB9CisgICAgT1VUUFVUOgorICAgICAgICBS RVRWQUwKKworaW50CitQUXNlbmRRdWVyeVBhcmFtcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNo YXIgKmNvbW1hbmQsIGludCBuUGFyYW1zLCBTViAqcGFyYW1UeXBlc19zdiwgU1YgKnBhcmFt VmFsdWVzX3N2LCBTViAqcGFyYW1MZW5ndGhzX3N2LCBTViAqcGFyYW1Gb3JtYXRzX3N2LCBp bnQgcmVzdWx0Rm9ybWF0KQorICAgIENPREU6CisgICAgICAgIGNvbnN0IGNoYXIgKipwYXJh bVZhbHVlcyA9IE5VTEw7CisgICAgICAgIFBFUkxfVU5VU0VEX1ZBUihwYXJhbVR5cGVzX3N2 KTsKKyAgICAgICAgUEVSTF9VTlVTRURfVkFSKHBhcmFtTGVuZ3Roc19zdik7CisgICAgICAg IFBFUkxfVU5VU0VEX1ZBUihwYXJhbUZvcm1hdHNfc3YpOworCisgICAgICAgIC8qIE9ubHkg cGFyYW1WYWx1ZXMgaXMgdXNlZDsgcGFyYW1UeXBlcywgcGFyYW1MZW5ndGhzLCBwYXJhbUZv cm1hdHMgYXJlIGlnbm9yZWQgKGFzc3VtZWQgTlVMTCkgKi8KKyAgICAgICAgaWYgKG5QYXJh bXMgPiAwICYmIFN2T0socGFyYW1WYWx1ZXNfc3YpICYmIFN2Uk9LKHBhcmFtVmFsdWVzX3N2 KSAmJgorICAgICAgICAgICAgU3ZUWVBFKFN2UlYocGFyYW1WYWx1ZXNfc3YpKSA9PSBTVnRf UFZBVikgeworICAgICAgICAgICAgQVYgKnBhcmFtcyA9IChBViAqKVN2UlYocGFyYW1WYWx1 ZXNfc3YpOworICAgICAgICAgICAgTmV3eChwYXJhbVZhbHVlcywgblBhcmFtcywgY29uc3Qg Y2hhciAqKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgblBhcmFtczsgaSsr KSB7CisgICAgICAgICAgICAgICAgU1YgKiplbGVtID0gYXZfZmV0Y2gocGFyYW1zLCBpLCAw KTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbSAmJiBTdk9LKCplbGVtKSkgeworICAgICAg ICAgICAgICAgICAgICBwYXJhbVZhbHVlc1tpXSA9IFN2UFZfbm9sZW4oKmVsZW0pOworICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtVmFsdWVz W2ldID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg IH0KKworICAgICAgICBSRVRWQUwgPSBQUXNlbmRRdWVyeVBhcmFtcyhjb25uLCBjb21tYW5k LCBuUGFyYW1zLCBOVUxMLCBwYXJhbVZhbHVlcywgTlVMTCwgTlVMTCwgcmVzdWx0Rm9ybWF0 KTsKKworICAgICAgICBpZiAocGFyYW1WYWx1ZXMpCisgICAgICAgICAgICBTYWZlZnJlZShw YXJhbVZhbHVlcyk7CisgICAgT1VUUFVUOgorICAgICAgICBSRVRWQUwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0gYi9zcmMvdGVzdC9w ZXJsL1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4wMjA3OTExZWRhNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0KQEAgLTAsMCArMSwxMDg5IEBA CisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisKKz1wb2QKKworPWhlYWQxIE5BTUUKKworUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbiAtIGNsYXNzIGZvciBhIFBvc3RncmVTUUwgbGlicHEgc2Vzc2lvbgorCis9 aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKKwor ICB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKKworICBteSAkbm9kZSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbXlub2RlJyk7CisKKyAgIyBjcmVhdGUgYSBu ZXcgc2Vzc2lvbi4gZGVmdWx0IGRibmFtZSBpcyAncG9zdGdyZXMnCisgIG15ICRzZXNzaW9u ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWywgZGJuYW1lID0+ ICRkYm5hbWVdICk7CisKKyAgIyBjbG9zZSB0aGUgc2Vzc2lvbgorICAkc2Vzc2lvbi0+Y2xv c2U7CisKKyAgIyByZW9wZW4gdGhlIHNlc3Npb24sIGFmdGVyIGNsb3NpbmcgaXQgaWYgbm90 IGNsb3NlZAorICAkc2Vzc2lvbi0+cmVjb25uZWN0OworCisgICMgY2hlY2sgaWYgdGhlIHNl c3Npb24gaXMgb2sKKyAgIyBteSAkc3RhdHVzID0gJHNlc3Npb24tPmNvbm5fc3RhdHVzOwor CisgICMgcnVuIHNvbWUgU1FMLCBub3QgcHJvZHVjaW5nIHR1cGxlcworICBteSAkcmVzdWx0 ID0gJHNlc3Npb24tPmRvKCRzcWwsIC4uLik7CisKKyAgIyBydW4gYW4gU1FMIHN0YXRlbWVu dCBhc3luY2hyb25vdXNseQorICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPmRvX2FzeW5jKCRz cWwpOworCisgICMgd2FpdCBmb3IgYW5kIGFzeW5jIFNRTCB0byBjb21wbGV0ZQorICAkc2Vz c2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKworICAjIHNldCBhIHBhc3N3b3JkIGZvciBh IHVzZXIKKyAgbXkgJHJlc3VsdCA9ICRzZXNzaW9uLT5zZXRfcGFzc3dvcmQoJHVzZXIsICRw YXNzd29yZCk7CisKKyAgIyBnZXQgc29tZSBkYXRhCisgIG15ICRyZXN1bHQgPSAkc2Vzc2lv bi0+cXVlcnkoJHNxbCk7CisKKyAgIyBnZXQgYSBzaW5nbGUgdmFsdWUsIGRlZmF1bHQgY3Jv YWtzIGlmIG5vIHZhbHVlIGZvdW5kCisgIG15ICR2YWwgPSAkc2Vzc2lvbi0+cXVlcnlfb25l dmFsKCRzcWwgWywgJG1pc3Npbmdfb2sgXSk7CisKKyAgI3JldHVybiBsaW5lcyBvZiB0dXBs ZXMgbGlrZSAicHNxbCAtQSAtdCIKKyAgbXkgQGxpbmVzID0gJHNlc3Npb24tPnF1ZXJ5X3R1 cGxlcygkc3FsLCAuLi4pOworCis9aGVhZDEgREVTQ1JJUFRJT04KKworQzxQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uPiBlbmNhcHN1bGF0ZXMgYSBDPGxpYnBxPiBzZXNzaW9uIGZvciB1 c2UgaW4KK1Bvc3RncmVTUUwgVEFQIHRlc3RzLCBhbGxvd2luZyB0aGUgdGVzdCB0byBjb25u ZWN0IHdpdGhvdXQgaGF2aW5nIHRvIHNwYXduCitDPHBzcWw+IGluIGEgY2hpbGQgcHJvY2Vz cy4KKworVGhlIHNlc3Npb24gb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHdoZW4g dGhlIG9iamVjdCBnb2VzIG91dCBvZiBzY29wZSwKK2luY2x1ZGluZyBhdCBzY3JpcHQgZW5k LgorCitTZXZlcmFsIG1ldGhvZHMgcmV0dXJuIGEgaGFzaHJlZiBhcyBhIHJlc3VsdCwgd2hp Y2ggd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcKK2ZpZWxkczoKKworPW92ZXIKKworPWl0ZW0g KiBzdGF0dXMKKworPWl0ZW0gKiBlcnJvcl9tZXNzYWdlIChvbmx5IGlmIHRoZXJlIGlzIGFu IGVycm9yKQorCis9aXRlbSAqIG5hbWVzCisKKz1pdGVtICogdHlwZXMKKworPWl0ZW0gKiBy b3dzCisKKz1pdGVtICogcHNxbG91dAorCis9YmFjaworCitUaGUgbGFzdCA0IHdpbGwgYmUg ZW1wdHkgdW5sZXNzIHRoZSBTUUwgcHJvZHVjZXMgdHVwbGVzLgorCis9Y3V0CisKK3BhY2th Z2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJu aW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIEZpbGU6OkJhc2VuYW1lIHF3KGRpcm5hbWUp OwordXNlIENhcnA7CisjIFRpbWU6OkhpUmVzIG5vIGxvbmdlciBuZWVkZWQgLSB1c2luZyBz ZWxlY3QoKSBmb3Igc29ja2V0IHdhaXRpbmcKKworbXkgJHNldHVwX29rOworCitCRUdJTgor eworCWlmICgkRU5We1BHX1VTRV9QUV9YU30pCisJeworCQkjIG5lZWQgdGhlIGRpcmVjdG9y eSB3aGVyZSBQcS57c28sZGxsLGR5bGlifSBpcyBpbnN0YWxsZWQgb3IgYnVpbHQKKwkJIyBm aXJzdCwgaWYgaW5zdGFsbGVkIGl0IHNob3VsZCBiZSBhbG9uZ3NpZGUgdGhpcyBmaWxlCisJ CW15IEBkaXJzID0gKGRpcm5hbWUoX19GSUxFX18pKTsKKwkJIyBzZWNvbmQsIGl0IHNob3Vs ZCBiZSBidWlsdCBoZXJlCisJCW15ICR0b3BidWlsZGRpciA9ICRFTlZ7TUVTT05fQlVJTERf Uk9PVH0gfHwgJEVOVnt0b3BfYnVpbGRkaXJ9OworCQlwdXNoIChAZGlycywgIiR0b3BidWls ZGRpci9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdCIpCisJCSAgaWYgZGVmaW5lZCgk dG9wYnVpbGRkaXIpOworCQl1bnNoaWZ0KEBJTkMsIEBkaXJzKTsKKwkJIyB0aGlzIHdpbGwg ZmFpbCBpZiB3ZSBoYXZlbid0IGJ1aWx0IHRoZSBzaGFyZWQgbGlicmFyeQorCQlyZXF1aXJl IFBvc3RncmVTUUw6OlRlc3Q6OlBxOworCQlQb3N0Z3JlU1FMOjpUZXN0OjpQcS0+aW1wb3J0 OworCQkkc2V0dXBfb2sgPSAxOyAjIG5vIG90aGVyIHNldHVwIHJlcXVpcmVkLgorCQkjIHJl c3RvcmUgQElOQworCQlzaGlmdChASU5DKSBmb3JlYWNoIEBkaXJzOworCX0KKwllbHNlCisJ eworCQkjIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBGRkkgd3JhcHBlcgorCQkjIHdpbGwgZmFp bCBpZiB0aGUgRkZJIGxpYnJhcmllcyBhbmQgd3JhcHBlcnMgYXJlIG5vdCBhdmFpbGFibGUK KwkJIworCQkjIGFjdHVhbCBzZXR1cCBpcyBkb25lIHBlciBzZXNzaW9uLCBiZWNhdXNlIHdl IGdldCB0aGUgbGliZGlyIGZyb20gdGhlCisJCSMgbm9kZSBvYmplY3QgKGluIG1vc3QgY2Fz ZXMpCisJCXJlcXVpcmUgUG9zdGdyZVNRTDo6UHFGRkk7CisJCVBvc3RncmVTUUw6OlBxRkZJ LT5pbXBvcnQ7CisJfQorfQorCitzdWIgX3NldHVwCit7CisJcmV0dXJuIGlmICRzZXR1cF9v azsKKwlteSAkbGliZGlyID0gc2hpZnQ7CisJUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRs aWJkaXIpOworCSRzZXR1cF9vayA9IDE7Cit9CisKKz1wb2QKKworPWhlYWQxIE1FVEhPRFMK KworPW92ZXIKKworPWl0ZW0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9 PiAkbm9kZSBbLCBkYm5hbWU9PiAkZGJuYW1lIF0pCisKK1NldCB1cCBhIG5ldyBzZXNzaW9u IGZvciB0aGUgbm9kZSwgd2hpY2ggbXVzdCBiZSBhIEM8UG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlcj4KK2luc3RhbmNlLiBUaGUgZGVmYXVsdCBkYmFtZSBpcyBDPHBvc3RncmVzPi4KKwor PWl0ZW0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KGNvbm5zdHIgPT4gJGNvbm5z dHIgWywgbGliZGlyID0+ICRsaWJkaXJdKQorCitTZXQgdXAgYSBuZXcgc2Vzc2lvbiBmb3Ig dGhlIGNvbm5lY3Rpb24gc3RyaW5nLiBJZiB1c2luZyB0aGUgRkZJIGxpYnBxIHdyYXBwZXIs CitDPCRsaWJkaXI+IG11c3QgcG9pbnQgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgbGli cHEgbGlicmFyeSBpcyBpbnN0YWxsZWQuCisKKz1jdXQKKworc3ViIG5ldworeworCW15ICRj bGFzcyA9IHNoaWZ0OworCW15ICRzZWxmID0ge307CisJYmxlc3MgJHNlbGYsICRjbGFzczsK KwlteSAlYXJncyA9IEBfOworCW15ICRub2RlID0gJGFyZ3N7bm9kZX07CisJbXkgJGRibmFt ZSA9ICRhcmdze2RibmFtZX0gfHwgJ3Bvc3RncmVzJzsKKwlteSAkbGliZGlyID0gJGFyZ3N7 bGliZGlyfTsKKwlteSAkY29ubnN0ciA9ICRhcmdze2Nvbm5zdHJ9OworCW15ICR3YWl0ID0g JGFyZ3N7d2FpdH0gLy8gMTsKKwl1bmxlc3MgKCRzZXR1cF9vaykKKwl7CisJCXVubGVzcyAo JGxpYmRpcikKKwkJeworCQkJY3JvYWsgImJhZCBub2RlIiB1bmxlc3MgJG5vZGUtPmlzYSgi UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlciIpOworCQkJJGxpYmRpciA9ICRub2RlLT5jb25m aWdfZGF0YSgkXk8gZXEgJ01TV2luMzInID8gJy0tYmluZGlyJyA6ICctLWxpYmRpcicpOwor CQl9CisJCV9zZXR1cCgkbGliZGlyKTsKKwl9CisJdW5sZXNzICgkY29ubnN0cikKKwl7CisJ CWNyb2FrICJiYWQgbm9kZSIgdW5sZXNzICRub2RlLT5pc2EoIlBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXIiKTsKKwkJJGNvbm5zdHIgPSAkbm9kZS0+Y29ubnN0cigkZGJuYW1lKTsKKwl9 CisJJHNlbGYtPntjb25uc3RyfSA9ICRjb25uc3RyOworCSRzZWxmLT57bm90aWNlc30gPSBb XTsKKworCWlmICgkd2FpdCkKKwl7CisJCSRzZWxmLT57Y29ubn0gPSBQUWNvbm5lY3RkYigk Y29ubnN0cik7CisJCSMgVGhlIGRlc3RydWN0b3Igd2lsbCBjbGVhbiB1cCBmb3IgdXMgZXZl biBpZiB3ZSBmYWlsCisJCXJldHVybiB1bmRlZiB1bmxlc3MgUFFzdGF0dXMoJHNlbGYtPntj b25ufSkgPT0gQ09OTkVDVElPTl9PSzsKKwkJJHNlbGYtPl9zZXR1cF9ub3RpY2VfcHJvY2Vz c29yKCk7CisJCXJldHVybiAkc2VsZjsKKwl9CisJZWxzZQorCXsKKwkJJHNlbGYtPntjb25u fSA9IFBRY29ubmVjdFN0YXJ0KCRjb25uc3RyKTsKKwkJcmV0dXJuIFBRc3RhdHVzKCRzZWxm LT57Y29ubn0pICE9IENPTk5FQ1RJT05fQkFEID8gJHNlbGYgOiB1bmRlZjsKKwl9Cit9CisK KyMgU2V0IHVwIGEgbm90aWNlIHByb2Nlc3NvciB0byBjYXB0dXJlIG5vdGljZXMvd2Fybmlu Z3MKKyMgT25seSB3b3JrcyB3aXRoIEZGSSBiYWNrZW5kLCBYUyBiYWNrZW5kIGRvZXNuJ3Qg c3VwcG9ydCB0aGlzCitzdWIgX3NldHVwX25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAkc2Vs ZiA9IHNoaWZ0OworCisJIyBPbmx5IGF2YWlsYWJsZSB3aXRoIEZGSSBiYWNrZW5kCisJcmV0 dXJuIHVubGVzcyBkZWZpbmVkICZjcmVhdGVfbm90aWNlX3Byb2Nlc3NvcjsKKworCW15ICRu b3RpY2VzID0gJHNlbGYtPntub3RpY2VzfTsKKworCSMgQ3JlYXRlIGNsb3N1cmUgdGhhdCBj YXB0dXJlcyBub3RpY2VzIGludG8gb3VyIGFycmF5CisJJHNlbGYtPntfbm90aWNlX2Nsb3N1 cmV9ID0gY3JlYXRlX25vdGljZV9wcm9jZXNzb3Ioc3ViIHsKKwkJbXkgKCRhcmcsICRtZXNz YWdlKSA9IEBfOworCQlwdXNoIEAkbm90aWNlcywgJG1lc3NhZ2U7CisJfSk7CisKKwlQUXNl dE5vdGljZVByb2Nlc3Nvcigkc2VsZi0+e2Nvbm59LCAkc2VsZi0+e19ub3RpY2VfY2xvc3Vy ZX0sIHVuZGVmKTsKK30KKworCisjIGZvciBhIGNvbm5lY3Rpb24gc3RhcnRlZCB3aXRoIFBR Y29ubmVjdFN0YXJ0LCB3YWl0IHVudGlsIGl0IGlzIGluIENPTk5FQ1RJT05fT0sgc3RhdGUu CisjIFVzZXMgUFFjb25uZWN0UG9sbCB0byBkcml2ZSB0aGUgYXN5bmMgY29ubmVjdGlvbiBm b3J3YXJkLgorc3ViIHdhaXRfY29ubmVjdAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkg JGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICR0aW1lb3V0ID0gJFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQ7CisJbXkgJHN0YXJ0ID0gdGltZTsKKwl3aGls ZSAoMSkKKwl7CisJCW15ICRwb2xsX3JlcyA9IFBRY29ubmVjdFBvbGwoJGNvbm4pOworCQlt eSAkc3RhdHVzID0gUFFzdGF0dXMoJGNvbm4pOworCisJCSMgQ29ubmVjdGlvbiBpcyBjb21w bGV0ZQorCQlpZiAoJHBvbGxfcmVzID09IFBHUkVTX1BPTExJTkdfT0sgfHwgJHN0YXR1cyA9 PSBDT05ORUNUSU9OX09LKQorCQl7CisJCQkkc2VsZi0+X3NldHVwX25vdGljZV9wcm9jZXNz b3IoKTsKKwkJCXJldHVybjsKKwkJfQorCisJCSMgQ29ubmVjdGlvbiBmYWlsZWQKKwkJaWYg KCRwb2xsX3JlcyA9PSBQR1JFU19QT0xMSU5HX0ZBSUxFRCB8fCAkc3RhdHVzID09IENPTk5F Q1RJT05fQkFEKQorCQl7CisJCQlkaWUgImNvbm5lY3Rpb24gZmFpbGVkOiAiIC4gUFFlcnJv ck1lc3NhZ2UoJGNvbm4pOworCQl9CisKKwkJZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3Ig Y29ubmVjdGlvbiIgaWYgdGltZSAtICRzdGFydCA+ICR0aW1lb3V0OworCisJCSMgV2FpdCBv biBzb2NrZXQgYmFzZWQgb24gd2hhdCBQUWNvbm5lY3RQb2xsIG5lZWRzCisJCW15ICRzb2Nr ZXQgPSBQUXNvY2tldCgkY29ubik7CisJCWlmICgkc29ja2V0ID49IDApCisJCXsKKwkJCW15 ICRmb3JSZWFkID0gKCRwb2xsX3JlcyA9PSBQR1JFU19QT0xMSU5HX1JFQURJTkcpID8gMSA6 IDA7CisJCQlteSAkZm9yV3JpdGUgPSAoJHBvbGxfcmVzID09IFBHUkVTX1BPTExJTkdfV1JJ VElORykgPyAxIDogMDsKKwkJCW15ICRlbmRfdGltZSA9IFBRZ2V0Q3VycmVudFRpbWVVU2Vj KCkgKyAxXzAwMF8wMDA7ICAjIDEgc2Vjb25kCisJCQlQUXNvY2tldFBvbGwoJHNvY2tldCwg JGZvclJlYWQsICRmb3JXcml0ZSwgJGVuZF90aW1lKTsKKwkJfQorCX0KK30KKworIyBTaW5n bGUgc3RlcCBvZiBhc3luYyBjb25uZWN0aW9uIHBvbGxpbmcgLSBkcml2ZXMgdGhlIGNvbm5l Y3Rpb24gc3RhdGUgbWFjaGluZQorIyBmb3J3YXJkIHdpdGhvdXQgYmxvY2tpbmcuIFJldHVy bnMgdGhlIHBvbGwgcmVzdWx0IChQR1JFU19QT0xMSU5HXyogY29uc3RhbnQpLgorc3ViIHBv bGxfY29ubmVjdAoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+ e2Nvbm59OworCXJldHVybiBQUWNvbm5lY3RQb2xsKCRjb25uKTsKK30KKworPXBvZAorCis9 aXRlbSAkc2Vzc2lvbi0+Y2xvc2UoKQorCitDbG9zZSB0aGUgY29ubmVjdGlvbgorCis9Y3V0 CisKK3N1YiBjbG9zZQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJUFFmaW5pc2goJHNlbGYt Pntjb25ufSk7CisJZGVsZXRlICRzZWxmLT57Y29ubn07Cit9CisKKyMgQWxpYXMgZm9yIGNv bXBhdGliaWxpdHkgd2l0aCBCYWNrZ3JvdW5kUHNxbAorKnF1aXQgPSBcJmNsb3NlOworCisj IGNsb3NlIHRoZSBzZXNzaW9uIGlmIHRoZSBvYmplY3QgZ29lcyBvdXQgb2Ygc2NvcGUKK3N1 YiBERVNUUk9ZCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkkc2VsZi0+Y2xvc2UgaWYgZXhp c3RzICRzZWxmLT57Y29ubn07Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnJlY29u bmVjdCgpCisKK1Jlb3BlbiB0aGUgc2Vzc2lvbiB1c2luZyB0aGUgb3JpZ2luYWwgY29ubnN0 ci4gSWYgdGhlIHNlc3Npb24gaXMgc3RpbGwgb3BlbiwKK2Nsb3NlIGl0IGJlZm9yZSByZW9w ZW5pbmcuCisKKz1jdXQKKworc3ViIHJlY29ubmVjdAoreworCW15ICRzZWxmID0gc2hpZnQ7 CisJJHNlbGYtPmNsb3NlIGlmIGV4aXN0cyAkc2VsZi0+e2Nvbm59OworCSRzZWxmLT57Y29u bn0gPSBQUWNvbm5lY3RkYigkc2VsZi0+e2Nvbm5zdHJ9KTsKKwlteSAkc3RhdHVzID0gUFFz dGF0dXMoJHNlbGYtPntjb25ufSk7CisJaWYgKCRzdGF0dXMgPT0gQ09OTkVDVElPTl9PSykK Kwl7CisJCSRzZWxmLT5fc2V0dXBfbm90aWNlX3Byb2Nlc3NvcigpOworCX0KKwlyZXR1cm4g JHN0YXR1czsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+cmVjb25uZWN0X2FuZF9j bGVhcigpCisKK1JlY29ubmVjdCBhbmQgY2xlYXIgYWxsIGNhcHR1cmVkIG5vdGljZXMuIFJl dHVybnMgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLgorCis9Y3V0CisKK3N1YiByZWNvbm5lY3Rf YW5kX2NsZWFyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3RhdHVzID0gJHNlbGYt PnJlY29ubmVjdCgpOworCSRzZWxmLT5jbGVhcl9ub3RpY2VzKCk7CisJcmV0dXJuICRzdGF0 dXM7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9ub3RpY2VzKCkKKworUmV0 dXJuIGFuIGFycmF5cmVmIG9mIGFsbCBjYXB0dXJlZCBub3RpY2VzL3dhcm5pbmdzIHNpbmNl IHRoZSBsYXN0IGNsZWFyLgorCis9Y3V0CisKK3N1YiBnZXRfbm90aWNlcworeworCW15ICRz ZWxmID0gc2hpZnQ7CisJcmV0dXJuICRzZWxmLT57bm90aWNlc307Cit9CisKKz1wb2QKKwor PWl0ZW0gJHNlc3Npb24tPmdldF9ub3RpY2VzX3N0cigpCisKK1JldHVybiBhbGwgY2FwdHVy ZWQgbm90aWNlcy93YXJuaW5ncyBhcyBhIHNpbmdsZSBzdHJpbmcgKGpvaW5lZCBieSBlbXB0 eSBzdHJpbmcpLgorVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBCYWNrZ3JvdW5kUHNxbCdzIHtz dGRlcnJ9IGZpZWxkIHdvcmtzLgorCis9Y3V0CisKK3N1YiBnZXRfbm90aWNlc19zdHIKK3sK KwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBqb2luKCcnLCBAeyRzZWxmLT57bm90aWNl c319KTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Y2xlYXJfbm90aWNlcygpCisK K0NsZWFyIGFsbCBjYXB0dXJlZCBub3RpY2VzL3dhcm5pbmdzLgorCis9Y3V0CisKK3N1YiBj bGVhcl9ub3RpY2VzCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkjIENsZWFyIGluIHBsYWNl IC0gZG9uJ3QgcmVwbGFjZSB0aGUgYXJyYXksIGFzIHRoZSBub3RpY2UgcHJvY2Vzc29yCisJ IyBjbG9zdXJlIGhhcyBhIHJlZmVyZW5jZSB0byBpdAorCUB7JHNlbGYtPntub3RpY2VzfX0g PSAoKTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Z2V0X3N0ZGVycigpCisKK1Jl dHVybiBhIHN0ZGVyci1saWtlIHN0cmluZyBjb250YWluaW5nIGFsbCBub3RpY2VzIHBsdXMg YW55IGVycm9yIG1lc3NhZ2UKK2Zyb20gdGhlIGxhc3QgcXVlcnkuIFRoaXMgbWltaWNzIEJh Y2tncm91bmRQc3FsJ3Mge3N0ZGVycn0gYmVoYXZpb3IuCisKKz1jdXQKKworc3ViIGdldF9z dGRlcnIKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRzdGRlcnIgPSAkc2VsZi0+Z2V0 X25vdGljZXNfc3RyKCk7CisJaWYgKGV4aXN0cyAkc2VsZi0+e2xhc3RfZXJyb3J9ICYmIGRl ZmluZWQgJHNlbGYtPntsYXN0X2Vycm9yfSkKKwl7CisJCSRzdGRlcnIgLj0gJHNlbGYtPnts YXN0X2Vycm9yfTsKKwl9CisJcmV0dXJuICRzdGRlcnI7Cit9CisKKz1wb2QKKworPWl0ZW0g JHNlc3Npb24tPmNsZWFyX3N0ZGVycigpCisKK0NsZWFyIG5vdGljZXMgYW5kIGxhc3QgZXJy b3IsIGxpa2Ugc2V0dGluZyAkcHNxbC0+e3N0ZGVycn0gPSAnJy4KKworPWN1dAorCitzdWIg Y2xlYXJfc3RkZXJyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkkc2VsZi0+Y2xlYXJfbm90 aWNlcygpOworCWRlbGV0ZSAkc2VsZi0+e2xhc3RfZXJyb3J9OworfQorCis9cG9kCisKKz1p dGVtICRzZXNzaW9uLT5jb25uX3N0YXR1cygpCisKK1JldHVybiB0aGUgY29ubmVjdGlvbiBz dGF0dXMuIFRoaXMgd2lsbCBiZSBhIGxpYnBxIHN0YXR1cyB2YWx1ZSBsaWtlCitDPENPTk5F Q1RJT05fT0s+LgorCis9Y3V0CisKK3N1YiBjb25uX3N0YXR1cworeworCW15ICRzZWxmID0g c2hpZnQ7CisJcmV0dXJuIGV4aXN0cyAkc2VsZi0+e2Nvbm59ID8gUFFzdGF0dXMoJHNlbGYt Pntjb25ufSkgOiB1bmRlZjsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+YmFja2Vu ZF9waWQoKQorCitSZXR1cm4gdGhlIGJhY2tlbmQgcHJvY2VzcyBJRCBmb3IgdGhpcyBjb25u ZWN0aW9uLgorCis9Y3V0CisKK3N1YiBiYWNrZW5kX3BpZAoreworCW15ICRzZWxmID0gc2hp ZnQ7CisJcmV0dXJuIFBRYmFja2VuZFBJRCgkc2VsZi0+e2Nvbm59KTsKK30KKworPXBvZAor Cis9aXRlbSAkc2Vzc2lvbi0+ZG8oJHNxbCwgLi4uKQorCitSdW4gb25lIG9yIG1vcmUgU1FM IHN0YXRlbWVudHMgc3luY2hyb25vdXNseSAodXNpbmcgQzxQUWV4ZWM+KS4gVGhlIHN0YXRl bWVudHMKK3Nob3VsZCBub3QgcmV0dXJuIGFueSB0dXBsZXMuIFJldHVybnMgdGhlIHN0YXR1 cywgd2hpY2ggd2lsbCBiZQorQzxQR1JFU19DT01NQU5EX09LPiAoaS5lLiAxKSBpbiB0aGUg Y2FzZSBvZiBzdWNjZXNzLgorCis9Y3V0CisKK3N1YiBkbworeworCW15ICRzZWxmID0gc2hp ZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICRzdGF0dXM7CisJZm9yZWFj aCBteSAkc3FsIChAXykKKwl7CisJCW15ICRyZXN1bHQgPSBQUWV4ZWMoJGNvbm4sICRzcWwp OworCQkkc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7CisJCVBRY2xlYXIoJHJl c3VsdCk7CisJCXJldHVybiAkc3RhdHVzIHVubGVzcyAkc3RhdHVzID09IFBHUkVTX0NPTU1B TkRfT0s7CisJfQorCXJldHVybiAkc3RhdHVzOworfQorCis9cG9kCisKKz1pdGVtICRzZXNz aW9uLT5kb19hc3luYygkc3FsKQorCitSdW4gYSBzaW5nbGUgc3RhdGVtZW50IGFzeW5jaHJv bm91c2x5LCB1c2luZyBDPFBRc2VuZFF1ZXJ5Pi4gVGhlIHJldHVybiB2YWx1ZQoraXMgYSBi b29sZWFuIGluZGljYXRpbmcgc3VjY2Vzcy4KKworPWN1dAorCitzdWIgZG9fYXN5bmMKK3sK KwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSAk c3FsID0gc2hpZnQ7CisJbXkgJHJlc3VsdCA9IFBRc2VuZFF1ZXJ5KCRjb25uLCAkc3FsKTsK KwlyZXR1cm4gJHJlc3VsdDsgIyAxIG9yIDAKK30KKworIyBnZXQgdGhlIG5leHQgcmVzdWx0 c2V0IGZyb20gc29tZSBhc3luYyBjb21tYW5kcworIyB3YWl0IGlmIG5lY2Vzc2FyeSB1c2lu ZyBQUXNvY2tldFBvbGwKKyMgYy5mLiBsaWJwcXNydl9nZXRfcmVzdWx0CitzdWIgX2dldF9y ZXN1bHQKK3sKKwlteSAkY29ubiA9IHNoaWZ0OworCW15ICRzb2NrZXQgPSBQUXNvY2tldCgk Y29ubik7CisJd2hpbGUgKFBRaXNCdXN5KCRjb25uKSkKKwl7CisJCSMgV2FpdCBmb3IgdGhl IHNvY2tldCB0byBiZWNvbWUgcmVhZGFibGUgKG5vIHRpbWVvdXQgPSAtMSkKKwkJUFFzb2Nr ZXRQb2xsKCRzb2NrZXQsIDEsIDAsIC0xKTsKKwkJbGFzdCBpZiBQUWNvbnN1bWVJbnB1dCgk Y29ubikgPT0gMDsKKwl9CisJcmV0dXJuIFBRZ2V0UmVzdWx0KCRjb25uKTsKK30KKworPXBv ZAorCis9aXRlbSAkc2Vzc2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbigpCisKK1dhaXQgdW50 aWwgYWxsIGFzeW5jaHJvbm91cyBTUUwgaGFzIGNvbXBsZXRlZAorCis9Y3V0CisKK3N1YiB3 YWl0X2Zvcl9jb21wbGV0aW9uCit7CisJIyB3YWl0IGZvciBhbGwgdGhlIHJlc3VsdHNldHMg YW5kIGNsZWFyIHRoZW0KKwkjIGMuZi4gbGlicHFzcnZfZ2V0X3Jlc3VsdF9sYXN0CisJbXkg JHNlbGYgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJd2hpbGUgKG15 ICRyZXMgPSBfZ2V0X3Jlc3VsdCgkY29ubikpCisJeworCQlQUWNsZWFyKCRyZXMpOworCX0K K30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Z2V0X2FzeW5jX3Jlc3VsdCgpCisKK1dh aXQgZm9yIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiBhbiBhc3luYyBxdWVyeSBhcyBhIHJl c3VsdCBoYXNoLgorQ2xlYXJzIGFueSBzdWJzZXF1ZW50IHJlc3VsdHMuCisKKz1jdXQKKwor c3ViIGdldF9hc3luY19yZXN1bHQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRjb25u ID0gJHNlbGYtPntjb25ufTsKKwlteSAkcmVzdWx0ID0gX2dldF9yZXN1bHQoJGNvbm4pOwor CXJldHVybiB1bmRlZiB1bmxlc3MgJHJlc3VsdDsKKwlteSAkcmVzID0gX2dldF9yZXN1bHRf ZGF0YSgkcmVzdWx0LCAkY29ubik7CisJUFFjbGVhcigkcmVzdWx0KTsKKwkjIENsZWFyIGFu eSByZW1haW5pbmcgcmVzdWx0cworCXdoaWxlIChteSAkciA9IF9nZXRfcmVzdWx0KCRjb25u KSkKKwl7CisJCVBRY2xlYXIoJHIpOworCX0KKwlyZXR1cm4gJHJlczsKK30KKworPXBvZAor Cis9aXRlbSAkc2Vzc2lvbi0+d2FpdF9mb3JfYXN5bmNfcGF0dGVybigkcGF0dGVybiwgJHRp bWVvdXQpCisKK1dhaXQgZm9yIGFuIGFzeW5jIHF1ZXJ5IHJlc3VsdCB3aG9zZSBwc3Fsb3V0 IG1hdGNoZXMgdGhlIGdpdmVuIHJlZ2V4IHBhdHRlcm4uCitSZXR1cm5zIHRoZSBtYXRjaGlu ZyBvdXRwdXQgc3RyaW5nLCBvciBkaWVzIG9uIHRpbWVvdXQvZXJyb3IuCitEZWZhdWx0IHRp bWVvdXQgaXMgZnJvbSAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVs dC4KKworPWN1dAorCitzdWIgd2FpdF9mb3JfYXN5bmNfcGF0dGVybgoreworCW15ICRzZWxm ID0gc2hpZnQ7CisJbXkgJHBhdHRlcm4gPSBzaGlmdDsKKwlteSAkdGltZW91dCA9IHNoaWZ0 IC8vICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OworCW15ICRj b25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkc29ja2V0ID0gUFFzb2NrZXQoJGNvbm4pOwor CW15ICRzdGFydCA9IHRpbWU7CisKKwl3aGlsZSAoMSkKKwl7CisJCSMgQ2hlY2sgaWYgcmVz dWx0IGlzIHJlYWR5IChub24tYmxvY2tpbmcpCisJCVBRY29uc3VtZUlucHV0KCRjb25uKTsK KwkJaWYgKCFQUWlzQnVzeSgkY29ubikpCisJCXsKKwkJCW15ICRyZXN1bHQgPSBQUWdldFJl c3VsdCgkY29ubik7CisJCQlpZiAoJHJlc3VsdCkKKwkJCXsKKwkJCQlteSAkcmVzID0gX2dl dF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJCQkJUFFjbGVhcigkcmVzdWx0KTsK KwkJCQkjIENsZWFyIGFueSByZW1haW5pbmcgcmVzdWx0cworCQkJCXdoaWxlIChteSAkciA9 IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwkJCQl7CisJCQkJCVBRY2xlYXIoJHIpOworCQkJCX0K KwkJCQlteSAkb3V0cHV0ID0gJHJlcy0+e3BzcWxvdXR9OworCQkJCWlmICgkb3V0cHV0ID1+ ICRwYXR0ZXJuKQorCQkJCXsKKwkJCQkJcmV0dXJuICRvdXRwdXQ7CisJCQkJfQorCQkJCSMg SWYgd2UgZ290IGEgcmVzdWx0IGJ1dCBpdCBkaWRuJ3QgbWF0Y2gsIHJldHVybiBpdCBhbnl3 YXkKKwkJCQkjIChjYWxsZXIgbWF5IHdhbnQgdG8gY2hlY2sgZXJyb3IpCisJCQkJcmV0dXJu ICRvdXRwdXQ7CisJCQl9CisJCX0KKworCQlkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBh c3luYyByZXN1bHQiIGlmIHRpbWUgLSAkc3RhcnQgPiAkdGltZW91dDsKKworCQkjIFdhaXQg Zm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlLCB3aXRoIDEgc2Vjb25kIHRpbWVv dXQKKwkJIyB0byBhbGxvdyBwZXJpb2RpYyB0aW1lb3V0IGNoZWNrcworCQlteSAkZW5kX3Rp bWUgPSBQUWdldEN1cnJlbnRUaW1lVVNlYygpICsgMV8wMDBfMDAwOyAgIyAxIHNlY29uZAor CQlQUXNvY2tldFBvbGwoJHNvY2tldCwgMSwgMCwgJGVuZF90aW1lKTsKKwl9Cit9CisKKz1w b2QKKworPWl0ZW0gJHNlc3Npb24tPnRyeV9nZXRfYXN5bmNfcmVzdWx0KCkKKworTm9uLWJs b2NraW5nIGNoZWNrIGZvciBhc3luYyBxdWVyeSByZXN1bHQuIFJldHVybnMgcmVzdWx0IGhh c2ggaWYgYXZhaWxhYmxlLAordW5kZWYgaWYgcXVlcnkgaXMgc3RpbGwgcnVubmluZy4KKwor PWN1dAorCitzdWIgdHJ5X2dldF9hc3luY19yZXN1bHQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0 OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKworCVBRY29uc3VtZUlucHV0KCRjb25u KTsKKwlyZXR1cm4gdW5kZWYgaWYgUFFpc0J1c3koJGNvbm4pOworCisJbXkgJHJlc3VsdCA9 IFBRZ2V0UmVzdWx0KCRjb25uKTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRyZXN1bHQ7CisK KwlteSAkcmVzID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJUFFjbGVh cigkcmVzdWx0KTsKKwkjIENsZWFyIGFueSByZW1haW5pbmcgcmVzdWx0cworCXdoaWxlICht eSAkciA9IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwl7CisJCVBRY2xlYXIoJHIpOworCX0KKwly ZXR1cm4gJHJlczsKK30KKworPXBvZAorCis9aXRlbSAgJHNlc3Npb24tPnNldF9wYXNzd29y ZCgkdXNlciwgJHBhc3N3b3JkKQorCitTZXQgdGhlIHVzZXIncyBwYXNzd29yZCBieSBjYWxs aW5nIEM8UFFjaGFuZ2VQYXNzd29yZD4uCisKK1JldHVybnMgYSByZXN1bHQgaGFzaC4KKwor PWN1dAorCisjIHNldCBwYXNzd29yZCBmb3IgdXNlcgorc3ViIHNldF9wYXNzd29yZAorewor CW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHVzZXIgPSBzaGlmdDsKKwlteSAkcGFzc3dvcmQg PSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJbXkgJHJlc3VsdCA9IFBR Y2hhbmdlUGFzc3dvcmQoJGNvbm4sICR1c2VyLCAkcGFzc3dvcmQpOworCW15ICRyZXQgPSBf Z2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQpOworCVBRY2xlYXIoJHJlc3VsdCk7CisJcmV0dXJu ICRyZXQ7Cit9CisKKyMgQ29tbW9uIGludGVybmFsIHJvdXRpbmUgdG8gcHJvY2VzcyByZXN1 bHQgZGF0YS4KKyMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBkZWFkIGFuZCB3aWxsIGJlIGdh cmJhZ2UgY29sbGVjdGVkIGFzIG5lY2Vzc2FyeS4KKworc3ViIF9nZXRfcmVzdWx0X2RhdGEK K3sKKwlteSAkcmVzdWx0ID0gc2hpZnQ7CisJbXkgJGNvbm4gPSBzaGlmdDsKKwlteSAkc3Rh dHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7CisJbXkgJHJlcyA9IHsJc3RhdHVzID0+ ICRzdGF0dXMsIG5hbWVzID0+IFtdLCB0eXBlcyA9PiBbXSwgcm93cyA9PiBbXSwKKwkJCXBz cWxvdXQgPT4gIiJ9OworCXVubGVzcyAoJHN0YXR1cyA9PSBQR1JFU19UVVBMRVNfT0sgfHwg JHN0YXR1cyA9PSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJJHJlcy0+e2Vycm9yX21lc3Nh Z2V9ID0gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCQlyZXR1cm4gJHJlczsKKwl9CisJaWYg KCRzdGF0dXMgPT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCXJldHVybiAkcmVzOworCX0K KwlteSAkbnR1cGxlcyA9IFBRbnR1cGxlcygkcmVzdWx0KTsKKwlteSAkbmZpZWxkcyA9IFBR bmZpZWxkcygkcmVzdWx0KTsKKwkjIGFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgc3RyaW5ncyBy ZXR1cm5lZCBieSBQUWZuYW1lIGFuZCBQUWdldHZhbHVlCisJIyBhcmUgbWFwcGVkIGludG8g cGVybCBzcGFjZSB1c2luZyBzZXRzdnB2IG9yIHNpbWlsYXIgYW5kIHRodXMgd29uJ3QKKwkj IGJlIGFmZmVjdCBieSB1cyBjYWxsaW5nIFBRY2xlYXIgb24gdGhlIHJlc3VsdCBvYmplY3Qu CisJZm9yZWFjaCBteSAkZmllbGQgKDAgLi4gJG5maWVsZHMtMSkKKwl7CisJCXB1c2goQHsk cmVzLT57bmFtZXN9fSwgUFFmbmFtZSgkcmVzdWx0LCAkZmllbGQpKTsKKwkJcHVzaChAeyRy ZXMtPnt0eXBlc319LCBQUWZ0eXBlKCRyZXN1bHQsICRmaWVsZCkpOworCX0KKwlteSBAdGV4 dHJvd3M7CisJZm9yZWFjaCBteSAkbnJvdyAoMCAuLiAkbnR1cGxlcyAtIDEpCisJeworCQlt eSAkcm93ID0gW107CisJCWZvcmVhY2ggbXkgJGZpZWxkICggMCAuLiAkbmZpZWxkcyAtIDEp CisJCXsKKwkJCW15ICR2YWwgPSBQUWdldHZhbHVlKCRyZXN1bHQsICRucm93LCAkZmllbGQp OworCQkJaWYgKCgkdmFsIC8vICIiKSBlcSAiIikKKwkJCXsKKwkJCQkkdmFsID0gdW5kZWYg aWYgUFFnZXRpc251bGwoJHJlc3VsdCwgJG5yb3csICRmaWVsZCk7CisJCQl9CisJCQlwdXNo KEAkcm93LCAkdmFsKTsKKwkJfQorCQlwdXNoKEB7JHJlcy0+e3Jvd3N9fSwgJHJvdyk7CisJ CW5vIHdhcm5pbmdzIHF3KHVuaW5pdGlhbGl6ZWQpOworCQlwdXNoKEB0ZXh0cm93cywgam9p bignfCcsIEAkcm93KSk7CisJfQorCSRyZXMtPntwc3Fsb3V0fSA9IGpvaW4oIlxuIixAdGV4 dHJvd3MpIGlmICRudHVwbGVzOworCXJldHVybiAkcmVzOworfQorCisKKz1wb2QKKworPWl0 ZW0gJHNlc3Npb24tPnF1ZXJ5KCRzcWwpCisKK1J1bnMgc3FsIHRoYXQgbWlnaHQgcmV0dXJu IHR1cGxlcy4KKworUmV0dXJucyBhIHJlc3VsdCBoYXNoLgorCis9Y3V0CisKK3N1YiBxdWVy eQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHNxbCA9IHNoaWZ0OworCW15ICRjb25u ID0gJHNlbGYtPntjb25ufTsKKworCSMgVXNlIFBRc2VuZFF1ZXJ5ICsgUFFnZXRSZXN1bHQg dG8gaGFuZGxlIG11bHRpLXN0YXRlbWVudCBTUUwgcHJvcGVybHkuCisJIyBUaGlzIGNvbGxl Y3RzIHJlc3VsdHMgZnJvbSBhbGwgc3RhdGVtZW50cyBhbmQgcmV0dXJucyB0aGUgbGFzdCBv bmUKKwkjIHRoYXQgaGFkIHR1cGxlcywgc2ltaWxhciB0byBob3cgcHNxbCB3b3Jrcy4KKwlQ UXNlbmRRdWVyeSgkY29ubiwgJHNxbCkgb3IgZG8geworCQlyZXR1cm4geyBzdGF0dXMgPT4g LTEsIGVycm9yX21lc3NhZ2UgPT4gUFFlcnJvck1lc3NhZ2UoJGNvbm4pLAorCQkJCSBuYW1l cyA9PiBbXSwgdHlwZXMgPT4gW10sIHJvd3MgPT4gW10sIHBzcWxvdXQgPT4gIiIgfTsKKwl9 OworCisJbXkgJGZpbmFsX3JlczsKKwlteSAkbGFzdF9lcnJvcjsKKwlteSBAYWxsX3BzcWxv dXQ7CisKKwl3aGlsZSAobXkgJHJlc3VsdCA9IF9nZXRfcmVzdWx0KCRjb25uKSkKKwl7CisJ CW15ICRyZXMgPSBfZ2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQsICRjb25uKTsKKwkJUFFjbGVh cigkcmVzdWx0KTsKKworCQkjIENvbGxlY3Qgb3V0cHV0IGZyb20gYWxsIHN0YXRlbWVudHMK KwkJcHVzaCBAYWxsX3BzcWxvdXQsICRyZXMtPntwc3Fsb3V0fSBpZiAkcmVzLT57cHNxbG91 dH0gbmUgIiI7CisKKwkJIyBUcmFjayBlcnJvcnMKKwkJJGxhc3RfZXJyb3IgPSAkcmVzLT57 ZXJyb3JfbWVzc2FnZX0gaWYgZXhpc3RzICRyZXMtPntlcnJvcl9tZXNzYWdlfTsKKworCQkj IEtlZXAgdGhlIGxhc3QgcmVzdWx0IHRoYXQgaGFkIHR1cGxlcywgb3IgdGhlIGxhc3QgcmVz dWx0IG92ZXJhbGwKKwkJaWYgKCRyZXMtPntzdGF0dXN9ID09IFBHUkVTX1RVUExFU19PSyB8 fCAhZGVmaW5lZCAkZmluYWxfcmVzKQorCQl7CisJCQkkZmluYWxfcmVzID0gJHJlczsKKwkJ fQorCX0KKworCSRmaW5hbF9yZXMgLy89IHsgc3RhdHVzID0+IFBHUkVTX0NPTU1BTkRfT0ss IG5hbWVzID0+IFtdLCB0eXBlcyA9PiBbXSwKKwkJCQkJIHJvd3MgPT4gW10sIHBzcWxvdXQg PT4gIiIgfTsKKworCSMgQ29tYmluZSBhbGwgb3V0cHV0IChsaWtlIHBzcWwgZG9lcykKKwkk ZmluYWxfcmVzLT57cHNxbG91dH0gPSBqb2luKCJcbiIsIEBhbGxfcHNxbG91dCkgaWYgQGFs bF9wc3Fsb3V0OworCisJIyBJZiB0aGVyZSB3YXMgYW55IGVycm9yLCBpbmNsdWRlIGl0IGlu IHRoZSByZXN1bHQgZm9yIHF1ZXJ5X3NhZmUKKwkkZmluYWxfcmVzLT57ZXJyb3JfbWVzc2Fn ZX0gPSAkbGFzdF9lcnJvciBpZiBkZWZpbmVkICRsYXN0X2Vycm9yOworCisJIyBTdG9yZSBl cnJvciBmb3IgZ2V0X3N0ZGVycigpCisJJHNlbGYtPntsYXN0X2Vycm9yfSA9ICRsYXN0X2Vy cm9yOworCisJIyBJZiB3ZSdyZSBpbiBhbiBhYm9ydGVkIHRyYW5zYWN0aW9uIHN0YXRlLCBy b2xsIGl0IGJhY2sgdG8gY2xlYW4gdXAuCisJIyBUaGlzIG1pbWljcyBwc3FsJ3MgYmVoYXZp b3Igd2l0aCBvbl9lcnJvcl9zdG9wID0+IDAuCisJaWYgKFBRdHJhbnNhY3Rpb25TdGF0dXMo JGNvbm4pID09IFBRVFJBTlNfSU5FUlJPUikKKwl7CisJCW15ICRyYiA9IFBRZXhlYygkY29u biwgIlJPTExCQUNLIik7CisJCVBRY2xlYXIoJHJiKSBpZiAkcmI7CisJfQorCisJcmV0dXJu ICRmaW5hbF9yZXM7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5X3NhZmUo JHNxbCkKKworUnVucyBzcWwgdGhhdCBtaWdodCByZXR1cm4gdHVwbGVzLCBjcm9ha2luZyBp ZiB0aGVyZSdzIGFuIGVycm9yLgorUmV0dXJucyB0aGUgcHNxbG91dCBzdHJpbmcgKGxpa2Ug cHNxbCAtQXQgb3V0cHV0KSBvbiBzdWNjZXNzLgorCis9Y3V0CisKK3N1YiBxdWVyeV9zYWZl Cit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3FsID0gc2hpZnQ7CisJbXkgJHJlcyA9 ICRzZWxmLT5xdWVyeSgkc3FsKTsKKwlpZiAoZXhpc3RzICRyZXMtPntlcnJvcl9tZXNzYWdl fSkgeworCQkjIERlYnVnOiBzaG93IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZAorCQlteSAk c2hvcnRfc3FsID0gc3Vic3RyKCRzcWwsIDAsIDEwMCk7CisJCSRzaG9ydF9zcWwgPX4gcy9c cysvIC9nOworCQljcm9hayAicXVlcnlfc2FmZSBmYWlsZWQgb24gWyRzaG9ydF9zcWwuLi5d OiAkcmVzLT57ZXJyb3JfbWVzc2FnZX0iOworCX0KKwlyZXR1cm4gJHJlcy0+e3BzcWxvdXR9 OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoJHNxbCBbLCAk bWlzc2luZ19vayBdICkKKworUnVuIGEgcXVlcnkgdGhhdCBpcyBleHBlY3RlZCB0byByZXR1 cm4gbm8gbW9yZSB0aGFuIG9uZSB0dXBsZSB3aXRoIG9uZSB2YWx1ZTsKKworSWYgQzwkbWlz c2luZ19vaz4gaXMgdHJ1ZSwgcmV0dXJuIHVuZGVmIGlmIHRoZSBxdWVyeSByZXR1cm5zIG5v IHR1cGxlLiBPdGhlcndpc2UKK2Nyb2FrIGlmIHRoZXJlIGlzIG5vdCBleGFjdGx5IG9uZSB0 dXBsZSwgb3Igb2YgdGhlIHR1cGxlIGRvZXMgbm90IGhhdmUKK2V4Y3RseSBvbmUgdmFsdWUu CisKK0lmIG5vbmUgb2YgdGhlc2UgYXBwbHksIHJldHVybiB0aGUgc2luZ2xlIHZhbHVlIGZy b20gdGhlIHF1ZXJ5LiBBIE5VTEwgdmFsdWUKK3dpbGwgcmVzdWx0IGluIHVuZGVmLCBzbyBp ZiBDPCRtaXNzaW5nX29rPiBpcyB0cnVlIHlvdSB3b24ndCBiZSBhYmxlIHRvCitkaXN0aW5n dWlzaCBiZXR3ZWVuIGEgbnVsbCB2YWx1ZSBhbmQgYSBtaXNzaW5nIHR1cGxlLgorCitBIG5v biBOVUxMIHZhbHVlIGlzIHJldHVybmVkIGFzIHRoZSBzdHJpbmcgdmFsdWUgb2J0YWluZWQg ZnJvbSBDPFBRZ2V0dmFsdWU+LgorCis9Y3V0CisKK3N1YiBxdWVyeV9vbmV2YWwKK3sKKwlt eSAkc2VsZiA9IHNoaWZ0OworCW15ICRzcWwgPSBzaGlmdDsKKwlteSAkbWlzc2luZ19vayA9 IHNoaWZ0OyAjIGRlZmF1bHQgaXMgbm90IG9rCisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59 OworCW15ICRyZXN1bHQgPSBQUWV4ZWMoJGNvbm4sICRzcWwpOworCW15ICRzdGF0dXMgPSBQ UXJlc3VsdFN0YXR1cygkcmVzdWx0KTsKKwl1bmxlc3MgICgkc3RhdHVzID09IFBHUkVTX1RV UExFU19PSykKKwl7CisJCVBRY2xlYXIoJHJlc3VsdCkgaWYgJHJlc3VsdDsKKwkJY3JvYWsg UFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCX0KKwlteSAkbnR1cGxlcyA9IFBRbnR1cGxlcygk cmVzdWx0KTsKKwlyZXR1cm4gdW5kZWYgaWYgKCRtaXNzaW5nX29rICYmICEkbnR1cGxlcyk7 CisJbXkgJG5maWVsZHMgPSBQUW5maWVsZHMoJHJlc3VsdCk7CisJY3JvYWsgIiRudHVwbGVz IHR1cGxlcyAhPSAxIG9yICRuZmllbGRzIGZpZWxkcyAhPSAxIgorCSAgaWYgJG50dXBsZXMg IT0gMSB8fCAkbmZpZWxkcyAhPSAxOworCW15ICR2YWwgPSBQUWdldHZhbHVlKCRyZXN1bHQs IDAsIDApOworCWlmICgkdmFsIGVxICIiKQorCXsKKwkJJHZhbCA9IHVuZGVmIGlmIFBRZ2V0 aXNudWxsKCRyZXN1bHQsIDAsIDApOworCX0KKwlQUWNsZWFyKCRyZXN1bHQpOworCXJldHVy biAkdmFsOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5xdWVyeV90dXBsZXMoJHNx bCwgLi4uKQorCitSdW4gdGhlIHNxbCBjb21tYW5kcyBhbmQgcmV0dXJuIHRoZSBvdXRwdXQg YXMgYSBzaW5nbGUgcGllY2Ugb2YgdGV4dCBpbiB0aGUKK3NhbWUgZm9ybWF0IGFzIEM8cHNx bCAtQSAtdD4uCisKK0ZpZWxkcyB3aXRoaW4gdHVwbGVzIGFyZSBzZXBhcmF0ZWQgYnkgYSAi fCIsIHR1cGxlcyBhcmUgc3BlYXJhdGVkIGJ5ICJcbiIKKworPWN1dAorCitzdWIgcXVlcnlf dHVwbGVzCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkjIFVzZSBwaXBlbGluZWQgdmVyc2lv biBmb3IgNCsgcXVlcmllcyB3aGVyZSB0aGUgb3ZlcmhlYWQgaXMgd29ydGggaXQKKwlyZXR1 cm4gJHNlbGYtPnF1ZXJ5X3R1cGxlc19waXBlbGluZWQoQF8pIGlmIEBfID49IDQ7CisKKwlt eSBAcmVzdWx0czsKKwlmb3JlYWNoIG15ICRzcWwgKEBfKQorCXsKKwkJbXkgJHJlcyA9ICRz ZWxmLT5xdWVyeSgkc3FsKTsKKwkJY3JvYWsgJHJlcy0+e2Vycm9yX21lc3NhZ2V9CisJCSAg dW5sZXNzICRyZXMtPntzdGF0dXN9ID09IFBHUkVTX1RVUExFU19PSzsKKwkJbXkgJHJvd3Mg PSAkcmVzLT57cm93c307CisJCXVubGVzcyAoQCRyb3dzKQorCQl7CisJCQkjIHVuZm9ydHVu YXRlbHkgYnJlYWtzIGF0IGxlYXN0IG9uZSB0ZXN0CisJCQkjIHB1c2goQHJlc3VsdHMsIi0t IGVtcHR5Iik7CisJCQluZXh0OworCQl9CisJCSMgam9pbiB3aWxsIHJlbmRlciB1bmRlZiBh cyBhbiBlbXB0eSBzdHJpbmcgaGVyZQorCQlubyB3YXJuaW5ncyBxdyh1bmluaXRpYWxpemVk KTsKKwkJbXkgQHR1cGxlcyA9IG1hcCB7IGpvaW4oJ3wnLCBAJF8pOyB9IEAkcm93czsKKwkJ cHVzaChAcmVzdWx0cywgam9pbigiXG4iLEB0dXBsZXMpKTsKKwl9CisJcmV0dXJuIGpvaW4o IlxuIixAcmVzdWx0cyk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5X3R1 cGxlc19waXBlbGluZWQoJHNxbCwgLi4uKQorCitSdW4gbXVsdGlwbGUgU1FMIHF1ZXJpZXMg dXNpbmcgcGlwZWxpbmUgbW9kZSBmb3IgZWZmaWNpZW5jeS4gUmV0dXJucyBvdXRwdXQKK2lu IHRoZSBzYW1lIGZvcm1hdCBhcyBDPHF1ZXJ5X3R1cGxlcz4gYnV0IHdpdGggb25seSBvbmUg bmV0d29yayByb3VuZC10cmlwCitmb3IgYWxsIHF1ZXJpZXMuCisKKz1jdXQKKworc3ViIHF1 ZXJ5X3R1cGxlc19waXBlbGluZWQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15IEBxdWVy aWVzID0gQF87CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15IEByZXN1bHRzOwor CisJIyBFbnRlciBwaXBlbGluZSBtb2RlCisJUFFlbnRlclBpcGVsaW5lTW9kZSgkY29ubikg b3IgY3JvYWsgIkZhaWxlZCB0byBlbnRlciBwaXBlbGluZSBtb2RlIjsKKworCSMgU2VuZCBh bGwgcXVlcmllcyB1c2luZyBQUXNlbmRRdWVyeVBhcmFtcyAoUFFzZW5kUXVlcnkgbm90IGFs bG93ZWQgaW4gcGlwZWxpbmUgbW9kZSkKKwlmb3IgbXkgJHNxbCAoQHF1ZXJpZXMpCisJewor CQlQUXNlbmRRdWVyeVBhcmFtcygkY29ubiwgJHNxbCwgMCwgdW5kZWYsIHVuZGVmLCB1bmRl ZiwgdW5kZWYsIDApIG9yIGRvIHsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7CisJ CQljcm9hayAiRmFpbGVkIHRvIHNlbmQgcXVlcnk6ICIgLiBQUWVycm9yTWVzc2FnZSgkY29u bik7CisJCX07CisJfQorCisJIyBNYXJrIGVuZCBvZiBwaXBlbGluZQorCVBRcGlwZWxpbmVT eW5jKCRjb25uKSBvciBkbyB7CisJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7CisJCWNy b2FrICJGYWlsZWQgdG8gc3luYyBwaXBlbGluZSI7CisJfTsKKworCSMgQ29sbGVjdCByZXN1 bHRzIGZvciBlYWNoIHF1ZXJ5CisJZm9yIG15ICRpICgwIC4uICQjcXVlcmllcykKKwl7CisJ CW15ICRyZXN1bHQgPSBfZ2V0X3Jlc3VsdCgkY29ubik7CisJCWlmICghJHJlc3VsdCkKKwkJ eworCQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKTsKKwkJCWNyb2FrICJObyByZXN1bHQg Zm9yIHF1ZXJ5ICRpIjsKKwkJfQorCisJCW15ICRzdGF0dXMgPSBQUXJlc3VsdFN0YXR1cygk cmVzdWx0KTsKKwkJaWYgKCRzdGF0dXMgPT0gUEdSRVNfUElQRUxJTkVfQUJPUlRFRCkKKwkJ eworCQkJUFFjbGVhcigkcmVzdWx0KTsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7 CisJCQljcm9hayAiUGlwZWxpbmUgYWJvcnRlZCBhdCBxdWVyeSAkaSI7CisJCX0KKworCQlp ZiAoJHN0YXR1cyA9PSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCW15ICRyZXMgPSBfZ2V0 X3Jlc3VsdF9kYXRhKCRyZXN1bHQsICRjb25uKTsKKwkJCW15ICRyb3dzID0gJHJlcy0+e3Jv d3N9OworCQkJaWYgKEAkcm93cykKKwkJCXsKKwkJCQlubyB3YXJuaW5ncyBxdyh1bmluaXRp YWxpemVkKTsKKwkJCQlteSBAdHVwbGVzID0gbWFwIHsgam9pbignfCcsIEAkXyk7IH0gQCRy b3dzOworCQkJCXB1c2goQHJlc3VsdHMsIGpvaW4oIlxuIiwgQHR1cGxlcykpOworCQkJfQor CQl9CisJCWVsc2lmICgkc3RhdHVzICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCXsKKwkJCW15 ICRlcnIgPSBQUWVycm9yTWVzc2FnZSgkY29ubik7CisJCQlQUWNsZWFyKCRyZXN1bHQpOwor CQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKTsKKwkJCWNyb2FrICJRdWVyeSAkaSBmYWls ZWQ6ICRlcnIiOworCQl9CisJCVBRY2xlYXIoJHJlc3VsdCk7CisKKwkJIyBDb25zdW1lIHRo ZSBOVUxMIHJlc3VsdCB0aGF0IG1hcmtzIGVuZCBvZiB0aGlzIHF1ZXJ5J3MgcmVzdWx0cwor CQl3aGlsZSAobXkgJGV4dHJhID0gUFFnZXRSZXN1bHQoJGNvbm4pKQorCQl7CisJCQlQUWNs ZWFyKCRleHRyYSk7CisJCX0KKwl9CisKKwkjIENvbnN1bWUgdGhlIHBpcGVsaW5lIHN5bmMg cmVzdWx0CisJbXkgJHN5bmNfcmVzdWx0ID0gX2dldF9yZXN1bHQoJGNvbm4pOworCWlmICgk c3luY19yZXN1bHQpCisJeworCQlteSAkc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoJHN5bmNf cmVzdWx0KTsKKwkJUFFjbGVhcigkc3luY19yZXN1bHQpOworCQlpZiAoJHN0YXR1cyAhPSBQ R1JFU19QSVBFTElORV9TWU5DKQorCQl7CisJCQlQUWV4aXRQaXBlbGluZU1vZGUoJGNvbm4p OworCQkJY3JvYWsgIkV4cGVjdGVkIFBHUkVTX1BJUEVMSU5FX1NZTkMsIGdvdCAkc3RhdHVz IjsKKwkJfQorCX0KKworCSMgRXhpdCBwaXBlbGluZSBtb2RlCisJUFFleGl0UGlwZWxpbmVN b2RlKCRjb25uKSBvciBjcm9hayAiRmFpbGVkIHRvIGV4aXQgcGlwZWxpbmUgbW9kZSI7CisK KwlyZXR1cm4gam9pbigiXG4iLCBAcmVzdWx0cyk7Cit9CisKKworc3ViIHNldG5vbmJsb2Nr aW5nCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkdmFsID0gc2hpZnQ7CisJbXkgJHJl cyA9IFBRc2V0bm9uYmxvY2tpbmcoJHNlbGYtPntjb25ufSwgJHZhbCk7CisJY3JvYWsgInBy b2JsZW0gc2V0dGluZyBub24tYmxvY2tpbmciCisJICBpZiAkcmVzOworCXJldHVybjsKK30K Kworc3ViIGlzbm9uYmxvY2tpbmcKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBQ UWlzbm9uYmxvY2tpbmcoJHNlbGYtPntjb25ufSk7Cit9CisKK3N1YiBlbnRlclBpcGVsaW5l TW9kZQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuIFBRZW50ZXJQaXBlbGluZU1v ZGUoJHNlbGYtPntjb25ufSk7Cit9CisKK3N1YiBleGl0UGlwZWxpbmVNb2RlCit7CisJbXkg JHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFleGl0UGlwZWxpbmVNb2RlKCRzZWxmLT57Y29u bn0pOworfQorCitzdWIgcGlwZWxpbmVTdGF0dXMKK3sKKwlteSAkc2VsZiA9IHNoaWZ0Owor CXJldHVybiBQUXBpcGVsaW5lU3RhdHVzKCRzZWxmLT57Y29ubn0pOworfQorCitzdWIgcGlw ZWxpbmVTeW5jCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFwaXBlbGluZVN5 bmMoJHNlbGYtPntjb25ufSk7Cit9CisKKworc3ViIGRvX3BpcGVsaW5lCit7CisJbXkgJHNl bGYgPSBzaGlmdDsKKwlteSAkc3RhdGVtZW50ID0gc2hpZnQ7CisJbXkgQGFyZ3MgPSBAXzsK KwlteSAkbmFyZ3MgPSBzY2FsYXIoQGFyZ3MpOworCW15ICRyZXMgPSBQUXNlbmRRdWVyeVBh cmFtcygkc2VsZi0+e2Nvbm59LCAkc3RhdGVtZW50LCAkbmFyZ3MsIHVuZGVmLCBcQGFyZ3Ms IHVuZGVmICwgdW5kZWYsIDApOworCXJldHVybiAkcmVzOworfQorCis9cG9kCisKKz1pdGVt ICRzZXNzaW9uLT5nZXRfbm90aWZpY2F0aW9uKCkKKworQ2hlY2sgZm9yIGEgcGVuZGluZyBu b3RpZmljYXRpb24gYW5kIHJldHVybiBpdCBhcyBhIGhhc2hyZWYgd2l0aCBrZXlzCitDPGNo YW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+LiBSZXR1cm5zIHVuZGVmIGlmIG5vIG5v dGlmaWNhdGlvbiBpcworYXZhaWxhYmxlLgorCitBdXRvbWF0aWNhbGx5IGNvbnN1bWVzIGFu eSBwZW5kaW5nIGlucHV0IGJlZm9yZSBjaGVja2luZyBmb3Igbm90aWZpY2F0aW9ucy4KKwor PWN1dAorCitzdWIgZ2V0X25vdGlmaWNhdGlvbgoreworCW15ICRzZWxmID0gc2hpZnQ7CisJ bXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCisJIyBDb25zdW1lIGFueSBwZW5kaW5nIGlu cHV0CisJUFFjb25zdW1lSW5wdXQoJGNvbm4pOworCisJbXkgJG5vdGlmeSA9IFBRbm90aWZp ZXMoJGNvbm4pOworCXJldHVybiB1bmRlZiB1bmxlc3MgJG5vdGlmeTsKKworCW15ICRyZXN1 bHQgPSB7CisJCWNoYW5uZWwgPT4gUFFub3RpZnlfY2hhbm5lbCgkbm90aWZ5KSwKKwkJcGlk ICAgICA9PiBQUW5vdGlmeV9iZV9waWQoJG5vdGlmeSksCisJCXBheWxvYWQgPT4gUFFub3Rp ZnlfcGF5bG9hZCgkbm90aWZ5KSwKKwl9OworCisJUFFub3RpZnlfZnJlZSgkbm90aWZ5KTsK KworCXJldHVybiAkcmVzdWx0OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5nZXRf YWxsX25vdGlmaWNhdGlvbnMoKQorCitDb25zdW1lIGlucHV0IGFuZCByZXR1cm4gYWxsIHBl bmRpbmcgbm90aWZpY2F0aW9ucyBhcyBhbiBhcnJheXJlZiBvZiBoYXNocmVmcy4KK0VhY2gg aGFzaHJlZiBoYXMga2V5cyBDPGNoYW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+Lgor Cis9Y3V0CisKK3N1YiBnZXRfYWxsX25vdGlmaWNhdGlvbnMKK3sKKwlteSAkc2VsZiA9IHNo aWZ0OworCW15IEBub3RpZmljYXRpb25zOworCisJd2hpbGUgKG15ICRub3RpZnkgPSAkc2Vs Zi0+Z2V0X25vdGlmaWNhdGlvbigpKQorCXsKKwkJcHVzaCBAbm90aWZpY2F0aW9ucywgJG5v dGlmeTsKKwl9CisKKwlyZXR1cm4gXEBub3RpZmljYXRpb25zOworfQorCis9cG9kCisKKz1i YWNrCisKKz1jdXQKKworCisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKaW5kZXggMGZkMzZjOWU1NzAuLjgy ODY0NThkMTM0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL21lc29uLmJ1aWxkCisrKyBi L3NyYy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKQEAgLTE1LDQgKzE1LDM3IEBAIGluc3RhbGxf ZGF0YSgKICAgJ1Bvc3RncmVTUUwvVGVzdC9CYWNrZ3JvdW5kUHNxbC5wbScsCiAgICdQb3N0 Z3JlU1FML1Rlc3QvQWRqdXN0RHVtcC5wbScsCiAgICdQb3N0Z3JlU1FML1Rlc3QvQWRqdXN0 VXBncmFkZS5wbScsCisgICdQb3N0Z3JlU1FML1Rlc3QvUHEucG0nLAogICBpbnN0YWxsX2Rp cjogZGlyX3BneHMgLyAnc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QnKQorCisjIEJ1 aWxkIHRoZSBQcSBYUyBtb2R1bGUgaWYgcGVybCBpcyBhdmFpbGFibGUKK2lmIHBlcmxfZGVw LmZvdW5kKCkKKyAgcHFfc3VicHBkaXIgPSBydW5fY29tbWFuZChwZXJsLCAnLWUnLAorICAg ICd1c2UgTGlzdDo6VXRpbCBxdyhmaXJzdCk7IHByaW50IGZpcnN0IHsgLXIgIiRfL0V4dFV0 aWxzL3hzdWJwcCIgfSBASU5DJywKKyAgICBjaGVjazogdHJ1ZSkuc3Rkb3V0KCkKKyAgcHFf eHN1YnBwID0gJ0AwQC9FeHRVdGlscy94c3VicHAnLmZvcm1hdChwcV9zdWJwcGRpcikKKyAg cHFfdHlwZW1hcCA9ICdAMEAvRXh0VXRpbHMvdHlwZW1hcCcuZm9ybWF0KHByaXZsaWJleHAp CisKKyAgcHFfeHNfYyA9IGN1c3RvbV90YXJnZXQoJ1BxLmMnLAorICAgIGlucHV0OiBmaWxl cygnUG9zdGdyZVNRTC9UZXN0L1BxLnhzJyksCisgICAgb3V0cHV0OiAnUHEuYycsCisgICAg Y29tbWFuZDogW3BlcmwsIHBxX3hzdWJwcCwgJy10eXBlbWFwJywgcHFfdHlwZW1hcCwgJy1v dXRwdXQnLCAnQE9VVFBVVEAnLCAnQElOUFVUQCddCisgICkKKworICBwcV9tb2R1bGUgPSBz aGFyZWRfbW9kdWxlKCdQcScsCisgICAgcHFfeHNfYywKKyAgICBpbmNsdWRlX2RpcmVjdG9y aWVzOiBbCisgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCdQb3N0Z3JlU1FML1Rlc3QnKSwK KyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uL3BsL3BscGVybCcpLCAgIyBmb3Ig cHBwb3J0LmgKKyAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uLy4uL2ludGVyZmFjZXMv bGlicHEnKSwKKyAgICAgIHBvc3RncmVzX2luYywKKyAgICBdLAorICAgIGNfYXJnczogWyct V25vLXNoYWRvdz1jb21wYXRpYmxlLWxvY2FsJywgJy1Xbm8tZGVjbGFyYXRpb24tYWZ0ZXIt c3RhdGVtZW50J10sCisgICAgZGVwZW5kZW5jaWVzOiBbcGVybF9kZXAsIGxpYnBxXSwKKyAg ICBuYW1lX3ByZWZpeDogJycsICAjIFBlcmwgWFMgbW9kdWxlcyBkb24ndCB1c2UgbGliIHBy ZWZpeAorICAgIGluc3RhbGw6IHRydWUsCisgICAgaW5zdGFsbF9kaXI6IGRpcl9wZ3hzIC8g J3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0JywKKyAgICBpbnN0YWxsX3JwYXRoOiAn Oicuam9pbihtb2RfaW5zdGFsbF9ycGF0aHMgKyBbJ0AwQC9DT1JFJy5mb3JtYXQoYXJjaGxp YmV4cCldKSwKKyAgICBidWlsZF9ycGF0aDogJ0AwQC9DT1JFJy5mb3JtYXQoYXJjaGxpYmV4 cCksCisgICkKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wb3N0bWFzdGVyL3QvMDAy X2Nvbm5lY3Rpb25fbGltaXRzLnBsIGIvc3JjL3Rlc3QvcG9zdG1hc3Rlci90LzAwMl9jb25u ZWN0aW9uX2xpbWl0cy5wbAppbmRleCA4YzY3YzRhODZjNy4uMWI0YTk3ZDE2ZjQgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3Bvc3RtYXN0ZXIvdC8wMDJfY29ubmVjdGlvbl9saW1pdHMucGwK KysrIGIvc3JjL3Rlc3QvcG9zdG1hc3Rlci90LzAwMl9jb25uZWN0aW9uX2xpbWl0cy5wbApA QCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKQEAgLTMzLDE5ICszNCwyMCBAQCBHUkFOVCBwZ191c2VfcmVzZXJ2ZWRfY29u bmVjdGlvbnMgVE8gcmVncmVzc19yZXNlcnZlZDsKIENSRUFURSBVU0VSIHJlZ3Jlc3Nfc3Vw ZXJ1c2VyIExPR0lOIFNVUEVSVVNFUjsKIH0pOwogCitteSAkbm9kZV9jb25uc3RyID0gJG5v ZGUtPmNvbm5zdHIoJ3Bvc3RncmVzJyk7CitteSAkbGliZGlyID0gICRub2RlLT5jb25maWdf ZGF0YSgnLS1saWJkaXInKTsKKwogIyBXaXRoIHRoZSBsaW1pdHMgd2Ugc2V0IGluIHBvc3Rn cmVzcWwuY29uZiwgd2UgY2FuIGVzdGFibGlzaDoKICMgLSAzIGNvbm5lY3Rpb25zIGZvciBh bnkgdXNlciB3aXRoIG5vIHNwZWNpYWwgcHJpdmlsZWdlcwogIyAtIDIgbW9yZSBjb25uZWN0 aW9ucyBmb3IgdXNlcnMgYmVsb25naW5nIHRvICJwZ191c2VfcmVzZXJ2ZWRfY29ubmVjdGlv bnMiCiAjIC0gMSBtb3JlIGNvbm5lY3Rpb24gZm9yIHN1cGVydXNlcgogCi1zdWIgYmFja2dy b3VuZF9wc3FsX2FzX3VzZXIKK3N1YiBzZXNzaW9uX2FzX3VzZXIKIHsKIAlteSAkdXNlciA9 IHNoaWZ0OworICAgIG15ICRjb25uc3RyID0gIiRub2RlX2Nvbm5zdHIgdXNlcj0kdXNlciI7 CiAKLQlyZXR1cm4gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgKLQkJJ3Bvc3RncmVzJywKLQkJ b25fZXJyb3JfZGllID0+IDEsCi0JCWV4dHJhX3BhcmFtcyA9PiBbICctLXVzZXJuYW1lJyA9 PiAkdXNlciBdKTsKKwlyZXR1cm4gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KCBj b25uc3RyID0+ICRjb25uc3RyLCBsaWJkaXIgPT4gJGxpYmRpcik7CiB9CiAKICMgTGlrZSBj b25uZWN0X2ZhaWxzKCksIGV4Y2VwdCB0aGF0IHdlIGFsc28gd2FpdCBmb3IgdGhlIGZhaWxl ZCBiYWNrZW5kIHRvCkBAIC04Miw5ICs4NCw5IEBAICRub2RlLT5yZXN0YXJ0OwogbXkgQHNl c3Npb25zID0gKCk7CiBteSBAcmF3X2Nvbm5lY3Rpb25zID0gKCk7CiAKLXB1c2goQHNlc3Np b25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNlcigncmVncmVzc19yZWd1bGFyJykpOwotcHVz aChAc2Vzc2lvbnMsIGJhY2tncm91bmRfcHNxbF9hc191c2VyKCdyZWdyZXNzX3JlZ3VsYXIn KSk7Ci1wdXNoKEBzZXNzaW9ucywgYmFja2dyb3VuZF9wc3FsX2FzX3VzZXIoJ3JlZ3Jlc3Nf cmVndWxhcicpKTsKK3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3Nf cmVndWxhcicpKTsKK3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3Nf cmVndWxhcicpKTsKK3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3Nf cmVndWxhcicpKTsKIGNvbm5lY3RfZmFpbHNfd2FpdCgKIAkkbm9kZSwKIAkiZGJuYW1lPXBv c3RncmVzIHVzZXI9cmVncmVzc19yZWd1bGFyIiwKQEAgLTkzLDggKzk1LDggQEAgY29ubmVj dF9mYWlsc193YWl0KAogCSAgcXIvRkFUQUw6ICByZW1haW5pbmcgY29ubmVjdGlvbiBzbG90 cyBhcmUgcmVzZXJ2ZWQgZm9yIHJvbGVzIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUgInBnX3Vz ZV9yZXNlcnZlZF9jb25uZWN0aW9ucyIgcm9sZS8KICk7CiAKLXB1c2goQHNlc3Npb25zLCBi YWNrZ3JvdW5kX3BzcWxfYXNfdXNlcigncmVncmVzc19yZXNlcnZlZCcpKTsKLXB1c2goQHNl c3Npb25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNlcigncmVncmVzc19yZXNlcnZlZCcpKTsK K3B1c2goQHNlc3Npb25zLCBzZXNzaW9uX2FzX3VzZXIoJ3JlZ3Jlc3NfcmVzZXJ2ZWQnKSk7 CitwdXNoKEBzZXNzaW9ucywgc2Vzc2lvbl9hc191c2VyKCdyZWdyZXNzX3Jlc2VydmVkJykp OwogY29ubmVjdF9mYWlsc193YWl0KAogCSRub2RlLAogCSJkYm5hbWU9cG9zdGdyZXMgdXNl cj1yZWdyZXNzX3Jlc2VydmVkIiwKQEAgLTEwMyw3ICsxMDUsNyBAQCBjb25uZWN0X2ZhaWxz X3dhaXQoCiAJICBxci9GQVRBTDogIHJlbWFpbmluZyBjb25uZWN0aW9uIHNsb3RzIGFyZSBy ZXNlcnZlZCBmb3Igcm9sZXMgd2l0aCB0aGUgU1VQRVJVU0VSIGF0dHJpYnV0ZS8KICk7CiAK LXB1c2goQHNlc3Npb25zLCBiYWNrZ3JvdW5kX3BzcWxfYXNfdXNlcigncmVncmVzc19zdXBl cnVzZXInKSk7CitwdXNoKEBzZXNzaW9ucywgc2Vzc2lvbl9hc191c2VyKCdyZWdyZXNzX3N1 cGVydXNlcicpKTsKIGNvbm5lY3RfZmFpbHNfd2FpdCgKIAkkbm9kZSwKIAkiZGJuYW1lPXBv c3RncmVzIHVzZXI9cmVncmVzc19zdXBlcnVzZXIiLApAQCAtMTUwLDcgKzE1Miw3IEBAIFNL SVA6CiAjIENsZWFuIHVwCiBmb3JlYWNoIG15ICRzZXNzaW9uIChAc2Vzc2lvbnMpCiB7Ci0J JHNlc3Npb24tPnF1aXQ7CisJJHNlc3Npb24tPmNsb3NlOwogfQogZm9yZWFjaCBteSAkc29j a2V0IChAcmF3X2Nvbm5lY3Rpb25zKQogewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wMDlfdHdvcGhhc2UucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAwOV90d29waGFz ZS5wbAppbmRleCA4NzllNDkzYjViOC4uM2M0YTZiNjgyNGIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDA5X3R3b3BoYXNlLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDA5X3R3b3BoYXNlLnBsCkBAIC02LDYgKzYsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdh cm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTMzMSwxMSArMzMyLDEwIEBAICRj dXJfcHJpbWFyeS0+c3RvcDsKICRjdXJfc3RhbmRieS0+cmVzdGFydDsKIAogIyBBY3F1aXJl IGEgc25hcHNob3QgaW4gc3RhbmRieSwgYmVmb3JlIHdlIGNvbW1pdCB0aGUgcHJlcGFyZWQg dHJhbnNhY3Rpb24KLW15ICRzdGFuZGJ5X3Nlc3Npb24gPQotICAkY3VyX3N0YW5kYnktPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9kaWUgPT4gMSk7Ci0kc3RhbmRi eV9zZXNzaW9uLT5xdWVyeV9zYWZlKCJCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJM RSBSRUFEIik7CitteSAkc3RhbmRieV9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGUgPT4gJGN1cl9zdGFuZGJ5KTsKKyRzdGFuZGJ5X3Nlc3Npb24tPmRv KCJCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEIik7CiAkcHNxbF9vdXQg PQotICAkc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9zYWZlKCJTRUxFQ1QgY291bnQoKikgRlJP TSB0XzAwOV90Ymxfc3RhbmRieV9tdmNjIik7CisgICRzdGFuZGJ5X3Nlc3Npb24tPnF1ZXJ5 X29uZXZhbCgiU0VMRUNUIGNvdW50KCopIEZST00gdF8wMDlfdGJsX3N0YW5kYnlfbXZjYyIp OwogaXMoJHBzcWxfb3V0LCAnMCcsCiAJIlByZXBhcmVkIHRyYW5zYWN0aW9uIG5vdCB2aXNp YmxlIGluIHN0YW5kYnkgYmVmb3JlIGNvbW1pdCIpOwogCkBAIC0zNDksMTcgKzM0OSwxNyBA QCBDT01NSVQgUFJFUEFSRUQgJ3hhY3RfMDA5X3N0YW5kYnlfbXZjYyc7CiAKICMgU3RpbGwg bm90IHZpc2libGUgdG8gdGhlIG9sZCBzbmFwc2hvdAogJHBzcWxfb3V0ID0KLSAgJHN0YW5k Ynlfc2Vzc2lvbi0+cXVlcnlfc2FmZSgiU0VMRUNUIGNvdW50KCopIEZST00gdF8wMDlfdGJs X3N0YW5kYnlfbXZjYyIpOworICAkc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9vbmV2YWwoIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRfMDA5X3RibF9zdGFuZGJ5X212Y2MiKTsKIGlzKCRwc3Fs X291dCwgJzAnLAogCSJDb21taXR0ZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gbm90IHZpc2li bGUgdG8gb2xkIHNuYXBzaG90IGluIHN0YW5kYnkiKTsKIAogIyBJcyB2aXNpYmxlIHRvIGEg bmV3IHNuYXBzaG90Ci0kc3RhbmRieV9zZXNzaW9uLT5xdWVyeV9zYWZlKCJDT01NSVQiKTsK KyRzdGFuZGJ5X3Nlc3Npb24tPmRvKCJDT01NSVQiKTsKICRwc3FsX291dCA9Ci0gICRzdGFu ZGJ5X3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRfMDA5X3Ri bF9zdGFuZGJ5X212Y2MiKTsKKyAgJHN0YW5kYnlfc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCJT RUxFQ1QgY291bnQoKikgRlJPTSB0XzAwOV90Ymxfc3RhbmRieV9tdmNjIik7CiBpcygkcHNx bF9vdXQsICcyJywKIAkiQ29tbWl0dGVkIHByZXBhcmVkIHRyYW5zYWN0aW9uIGlzIHZpc2li bGUgdG8gbmV3IHNuYXBzaG90IGluIHN0YW5kYnkiKTsKLSRzdGFuZGJ5X3Nlc3Npb24tPnF1 aXQ7Ciskc3RhbmRieV9zZXNzaW9uLT5jbG9zZTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBDaGVjayBmb3IgYSBsb2NrIGNvbmZsaWN0IGJldHdlZW4gcHJlcGFyZWQgdHJh bnNhY3Rpb24gd2l0aCBEREwgaW5zaWRlIGFuZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wMTNfY3Jhc2hfcmVzdGFydC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEz X2NyYXNoX3Jlc3RhcnQucGwKaW5kZXggMjBkNjQ4YWQ2YWYuLjMxMjA0ODUwYjM3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxM19jcmFzaF9yZXN0YXJ0LnBsCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEzX2NyYXNoX3Jlc3RhcnQucGwKQEAgLTEzMSw3ICsx MzEsNyBAQCBvayggcHVtcF91bnRpbCgKICRtb25pdG9yLT5maW5pc2g7CiAKICMgV2FpdCB0 aWxsIHNlcnZlciByZXN0YXJ0cwotaXMoJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgdW5kZWYsICcnKSwKK2lzKCRub2RlLT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bv c3RncmVzJyksCiAJIjEiLCAicmVjb25uZWN0ZWQgYWZ0ZXIgU0lHUVVJVCIpOwogCiAKQEAg LTIxMyw3ICsyMTMsNyBAQCBvayggcHVtcF91bnRpbCgKICRtb25pdG9yLT5maW5pc2g7CiAK ICMgV2FpdCB0aWxsIHNlcnZlciByZXN0YXJ0cwotaXMoJG5vZGUtPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywgdW5kZWYsICcnKSwKK2lzKCRub2RlLT5wb2xsX3VudGlsX2Nvbm5l Y3Rpb24oJ3Bvc3RncmVzJyksCiAJIjEiLCAicmVjb25uZWN0ZWQgYWZ0ZXIgU0lHS0lMTCIp OwogCiAjIE1ha2Ugc3VyZSB0aGUgY29tbWl0dGVkIHJvd3Mgc3Vydml2ZWQsIGluLXByb2dy ZXNzIG9uZXMgbm90CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAyMl9jcmFz aF90ZW1wX2ZpbGVzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjJfY3Jhc2hfdGVtcF9m aWxlcy5wbAppbmRleCA1ZGU5YjBmYjBlYi4uNmM1NWZjZjQwYjEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDIyX2NyYXNoX3RlbXBfZmlsZXMucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMjJfY3Jhc2hfdGVtcF9maWxlcy5wbApAQCAtMTQ2LDcgKzE0Niw3 IEBAIG9rKCBwdW1wX3VudGlsKAogJGtpbGxtZTItPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwg c2VydmVyIGZpbmlzaGVzIHJlc3RhcnRpbmcKLSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsIHVuZGVmLCAnJyk7Ciskbm9kZS0+cG9sbF91bnRpbF9jb25uZWN0aW9uKCdw b3N0Z3JlcycpOwogCiAjIENoZWNrIGZvciB0ZW1wb3JhcnkgZmlsZXMKIGlzKCAkbm9kZS0+ c2FmZV9wc3FsKApAQCAtMjUzLDcgKzI1Myw3IEBAIG9rKCBwdW1wX3VudGlsKAogJGtpbGxt ZTItPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2VydmVyIGZpbmlzaGVzIHJlc3RhcnRpbmcK LSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsIHVuZGVmLCAnJyk7Ciskbm9k ZS0+cG9sbF91bnRpbF9jb25uZWN0aW9uKCdwb3N0Z3JlcycpOwogCiAjIENoZWNrIGZvciB0 ZW1wb3JhcnkgZmlsZXMgLS0gc2hvdWxkIGJlIHRoZXJlCiBpcyggJG5vZGUtPnNhZmVfcHNx bCgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZs aWN0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzFfcmVjb3ZlcnlfY29uZmxpY3QucGwK aW5kZXggN2E3NDBmNjk4MDYuLjc0MzQ5NzQ5MTcwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzAzMV9yZWNvdmVyeV9jb25mbGljdC5wbAorKysgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzAzMV9yZWNvdmVyeV9jb25mbGljdC5wbApAQCAtNyw2ICs3LDcgQEAKIHVzZSBz dHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTY3LDggKzY4 LDcgQEAgJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3Rh bmRieSk7CiAKIAogIyBhIGxvbmdydW5uaW5nIHBzcWwgdGhhdCB3ZSBjYW4gdXNlIHRvIHRy aWdnZXIgY29uZmxpY3RzCi1teSAkcHNxbF9zdGFuZGJ5ID0KLSAgJG5vZGVfc3RhbmRieS0+ YmFja2dyb3VuZF9wc3FsKCR0ZXN0X2RiLCBvbl9lcnJvcl9zdG9wID0+IDApOworbXkgJHBz cWxfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRu b2RlX3N0YW5kYnksIGRibmFtZSA9PiAkdGVzdF9kYik7CiBteSAkZXhwZWN0ZWRfY29uZmxp Y3RzID0gMDsKIAogCkBAIC05Niw3ICs5Niw3IEBAIG15ICRjdXJzb3IxID0gInRlc3RfcmVj b3ZlcnlfY29uZmxpY3RfY3Vyc29yIjsKIAogIyBERUNMQVJFIGFuZCB1c2UgYSBjdXJzb3Ig b24gc3RhbmRieSwgY2F1c2luZyBidWZmZXIgd2l0aCB0aGUgb25seSBibG9jayBvZgogIyB0 aGUgcmVsYXRpb24gdG8gYmUgcGlubmVkIG9uIHRoZSBzdGFuZGJ5Ci1teSAkcmVzID0gJHBz cWxfc3RhbmRieS0+cXVlcnlfc2FmZSgKK215ICRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVy eV9vbmV2YWwoCiAJcXFbCiAgICAgQkVHSU47CiAgICAgREVDTEFSRSAkY3Vyc29yMSBDVVJT T1IgRk9SIFNFTEVDVCBiIEZST00gJHRhYmxlMTsKQEAgLTExOSw3ICsxMTksNyBAQCAkbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsIHFxW1ZBQ1VVTSBGUkVFWkUgJHRhYmxl MTtdKTsKICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0 YW5kYnkpOwogCiBjaGVja19jb25mbGljdF9sb2coIlVzZXIgd2FzIGhvbGRpbmcgc2hhcmVk IGJ1ZmZlciBwaW4gZm9yIHRvbyBsb25nIik7Ci0kcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3Rf YW5kX2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3QoKTsKIGNoZWNrX2NvbmZs aWN0X3N0YXQoImJ1ZmZlcnBpbiIpOwogCiAKQEAgLTEzMiw3ICsxMzIsNyBAQCAkbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsCiAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAogIyBERUNMQVJFIGFuZCBGRVRDSCBm cm9tIGN1cnNvciBvbiB0aGUgc3RhbmRieQotJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5 X3NhZmUoCiskcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfb25ldmFsKAogCXFxWwogICAg ICAgICBCRUdJTjsKICAgICAgICAgREVDTEFSRSAkY3Vyc29yMSBDVVJTT1IgRk9SIFNFTEVD VCBiIEZST00gJHRhYmxlMTsKQEAgLTE1Miw3ICsxNTIsNyBAQCAkbm9kZV9wcmltYXJ5LT53 YWl0X2Zvcl9yZXBsYXlfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAogY2hlY2tfY29uZmxp Y3RfbG9nKAogCSJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVy c2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQiKTsKLSRwc3FsX3N0YW5kYnktPnJlY29ubmVj dF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnktPnJlY29ubmVjdCgpOwogY2hlY2tfY29u ZmxpY3Rfc3RhdCgic25hcHNob3QiKTsKIAogCkBAIC0xNjEsNyArMTYxLDcgQEAgJHNlY3Qg PSAibG9jayBjb25mbGljdCI7CiAkZXhwZWN0ZWRfY29uZmxpY3RzKys7CiAKICMgYWNxdWly ZSBsb2NrIHRvIGNvbmZsaWN0IHdpdGgKLSRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV9z YWZlKAorJHJlcyA9ICRwc3FsX3N0YW5kYnktPnF1ZXJ5X29uZXZhbCgKIAlxcVsKICAgICAg ICAgQkVHSU47CiAgICAgICAgIExPQ0sgVEFCTEUgJHRhYmxlMSBJTiBBQ0NFU1MgU0hBUkUg TU9ERTsKQEAgLTE3NSw3ICsxNzUsNyBAQCAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJHRl c3RfZGIsIHFxW0RST1AgVEFCTEUgJHRhYmxlMTtdKTsKICRub2RlX3ByaW1hcnktPndhaXRf Zm9yX3JlcGxheV9jYXRjaHVwKCRub2RlX3N0YW5kYnkpOwogCiBjaGVja19jb25mbGljdF9s b2coIlVzZXIgd2FzIGhvbGRpbmcgYSByZWxhdGlvbiBsb2NrIGZvciB0b28gbG9uZyIpOwot JHBzcWxfc3RhbmRieS0+cmVjb25uZWN0X2FuZF9jbGVhcigpOworJHBzcWxfc3RhbmRieS0+ cmVjb25uZWN0KCk7CiBjaGVja19jb25mbGljdF9zdGF0KCJsb2NrIik7CiAKIApAQCAtMTg2 LDcgKzE4Niw3IEBAICRleHBlY3RlZF9jb25mbGljdHMrKzsKICMgREVDTEFSRSBhIGN1cnNv ciBmb3IgYSBxdWVyeSB3aGljaCwgd2l0aCBzdWZmaWNpZW50bHkgbG93IHdvcmtfbWVtLCB3 aWxsCiAjIHNwaWxsIHR1cGxlcyBpbnRvIHRlbXAgZmlsZXMgaW4gdGhlIHRlbXBvcmFyeSB0 YWJsZXNwYWNlIGNyZWF0ZWQgZHVyaW5nCiAjIHNldHVwLgotJHJlcyA9ICRwc3FsX3N0YW5k YnktPnF1ZXJ5X3NhZmUoCiskcmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfb25ldmFsKAog CXFxWwogICAgICAgICBCRUdJTjsKICAgICAgICAgU0VUIHdvcmtfbWVtID0gJzY0a0InOwpA QCAtMjA1LDcgKzIwNSw3IEBAICRub2RlX3ByaW1hcnktPndhaXRfZm9yX3JlcGxheV9jYXRj aHVwKCRub2RlX3N0YW5kYnkpOwogCiBjaGVja19jb25mbGljdF9sb2coCiAJIlVzZXIgd2Fz IG9yIG1pZ2h0IGhhdmUgYmVlbiB1c2luZyB0YWJsZXNwYWNlIHRoYXQgbXVzdCBiZSBkcm9w cGVkIik7Ci0kcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3RfYW5kX2NsZWFyKCk7CiskcHNxbF9z dGFuZGJ5LT5yZWNvbm5lY3QoKTsKIGNoZWNrX2NvbmZsaWN0X3N0YXQoInRhYmxlc3BhY2Ui KTsKIAogCkBAIC0yMjAsOCArMjIwLDkgQEAgJG5vZGVfc3RhbmRieS0+YWRqdXN0X2NvbmYo CiAJJ3Bvc3RncmVzcWwuY29uZicsCiAJJ21heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxheScs CiAJIiR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdH1zIik7Cisk cHNxbF9zdGFuZGJ5LT5jbG9zZTsKICRub2RlX3N0YW5kYnktPnJlc3RhcnQoKTsKLSRwc3Fs X3N0YW5kYnktPnJlY29ubmVjdF9hbmRfY2xlYXIoKTsKKyRwc3FsX3N0YW5kYnktPnJlY29u bmVjdCgpOwogCiAjIEdlbmVyYXRlIGEgZmV3IGRlYWQgcm93cywgdG8gbGF0ZXIgYmUgY2xl YW5lZCB1cCBieSB2YWN1dW0uIFRoZW4gYWNxdWlyZSBhCiAjIGxvY2sgb24gYW5vdGhlciBy ZWxhdGlvbiBpbiBhIHByZXBhcmVkIHhhY3QsIHNvIGl0J3MgaGVsZCBjb250aW51b3VzbHkg YnkKQEAgLTI0NCwxMiArMjQ1LDE1IEBAIFNFTEVDVCB0eGlkX2N1cnJlbnQoKTsKIAogJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAoJG5vZGVfc3RhbmRieSk7CiAK LSRyZXMgPSAkcHNxbF9zdGFuZGJ5LT5xdWVyeV91bnRpbCgKLQlxci9eMSQvbSwgcXFbCisk cmVzID0gJHBzcWxfc3RhbmRieS0+cXVlcnlfb25ldmFsKAorCXFxWwogICAgIEJFR0lOOwog ICAgIC0tIGhvbGQgcGluCiAgICAgREVDTEFSRSAkY3Vyc29yMSBDVVJTT1IgRk9SIFNFTEVD VCBhIEZST00gJHRhYmxlMTsKICAgICBGRVRDSCBGT1JXQVJEIEZST00gJGN1cnNvcjE7Citd KTsKK2lzICgkcmVzLCAxLCAicGluIGhlbGQiKTsKKyRwc3FsX3N0YW5kYnktPmRvX2FzeW5j KHFxWwogICAgIC0tIHdhaXQgZm9yIGxvY2sgaGVsZCBieSBwcmVwYXJlZCB0cmFuc2FjdGlv bgogCVNFTEVDVCAqIEZST00gJHRhYmxlMjsKICAgICBdKTsKQEAgLTI3MCwxNSArMjc0LDE2 IEBAICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgkdGVzdF9kYiwgcXFbVkFDVVVNIEZSRUVa RSAkdGFibGUxO10pOwogJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfcmVwbGF5X2NhdGNodXAo JG5vZGVfc3RhbmRieSk7CiAKIGNoZWNrX2NvbmZsaWN0X2xvZygiVXNlciB0cmFuc2FjdGlv biBjYXVzZWQgYnVmZmVyIGRlYWRsb2NrIHdpdGggcmVjb3ZlcnkuIik7Ci0kcHNxbF9zdGFu ZGJ5LT5yZWNvbm5lY3RfYW5kX2NsZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3Qo KTsKIGNoZWNrX2NvbmZsaWN0X3N0YXQoImRlYWRsb2NrIik7CiAKICMgY2xlYW4gdXAgZm9y IG5leHQgdGVzdHMKICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgkdGVzdF9kYiwgcXFbUk9M TEJBQ0sgUFJFUEFSRUQgJ2xvY2snO10pOwogJG5vZGVfc3RhbmRieS0+YWRqdXN0X2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICdtYXhfc3RhbmRieV9zdHJlYW1pbmdfZGVsYXknLAotCSc1 MG1zJyk7CisJCQkJCQkgICAnNTBtcycpOworJHBzcWxfc3RhbmRieS0+Y2xvc2U7CiAkbm9k ZV9zdGFuZGJ5LT5yZXN0YXJ0KCk7Ci0kcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3RfYW5kX2Ns ZWFyKCk7CiskcHNxbF9zdGFuZGJ5LT5yZWNvbm5lY3QoKTsKIAogCiAjIENoZWNrIHRoYXQg ZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbmZsaWN0cyBzaG93IGluIHBnX3N0YXRfZGF0YWJhc2Uu IE5lZWRzIHRvCkBAIC0zMDIsNyArMzA3LDcgQEAgY2hlY2tfY29uZmxpY3RfbG9nKCJVc2Vy IHdhcyBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZSB0aGF0IG11c3QgYmUgZHJvcHBlZCIpOwog CiAjIGV4cGxpY2l0bHkgc2h1dCBkb3duIHBzcWwgaW5zdGFuY2VzIGdyYWNlZnVsbHkgLSB0 byBhdm9pZCBoYW5ncyBvciB3b3JzZSBvbgogIyB3aW5kb3dzCi0kcHNxbF9zdGFuZGJ5LT5x dWl0OworJHBzcWxfc3RhbmRieS0+Y2xvc2U7CiAKICRub2RlX3N0YW5kYnktPnN0b3AoKTsK ICRub2RlX3ByaW1hcnktPnN0b3AoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDM3X2ludmFsaWRfZGF0YWJhc2UucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzN19p bnZhbGlkX2RhdGFiYXNlLnBsCmluZGV4IGEwOTQ3MTA4NzAwLi5iMTBhNzlkMGVlNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzdfaW52YWxpZF9kYXRhYmFzZS5wbAor KysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzN19pbnZhbGlkX2RhdGFiYXNlLnBsCkBAIC01 LDYgKzUsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIApAQCAtOTEsNDEgKzkyLDM4IEBAIGlzKCRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25faW52YWxpZCcpLAogIyBkcm9wcGluZyB0aGUgZGF0 YWJhc2UsIG1ha2luZyBpdCBhIHN1aXRhYmxlIHBvaW50IHRvIHdhaXQuICBTaW5jZSByZWxj YWNoZQogIyBpbml0IHJlYWRzIHBnX3RhYmxlc3BhY2UsIGVzdGFibGlzaCBlYWNoIGNvbm5l Y3Rpb24gYmVmb3JlIGxvY2tpbmcuICBUaGlzCiAjIGF2b2lkcyBhIGNvbm5lY3Rpb24tdGlt ZSBoYW5nIHdpdGggZGVidWdfZGlzY2FyZF9jYWNoZXMuCi1teSAkY2FuY2VsID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDEpOwotbXkg JGJncHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jf c3RvcCA9PiAwKTsKLW15ICRwaWQgPSAkYmdwc3FsLT5xdWVyeSgnU0VMRUNUIHBnX2JhY2tl bmRfcGlkKCknKTsKK215ICRjYW5jZWwgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZT0+JG5vZGUpOworbXkgJGJncHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b24tPm5ldyhub2RlPT4kbm9kZSk7CitteSAkcGlkID0gJGJncHNxbC0+cXVlcnlfb25ldmFs KCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOwogCiAjIGNyZWF0ZSB0aGUgZGF0YWJhc2Us IHByZXZlbnQgZHJvcCBkYXRhYmFzZSB2aWEgbG9jayBoZWxkIGJ5IGEgMlBDIHRyYW5zYWN0 aW9uCi0kYmdwc3FsLT5xdWVyeV9zYWZlKAotCXFxKAotICBDUkVBVEUgREFUQUJBU0UgcmVn cmVzc2lvbl9pbnZhbGlkX2ludGVycnVwdDsKLSAgQkVHSU47CitpcyAoMSwgICRiZ3BzcWwt PmRvKAorCQlxcSgKKyAgQ1JFQVRFIERBVEFCQVNFIHJlZ3Jlc3Npb25faW52YWxpZF9pbnRl cnJ1cHQ7KSwKKyAgcXEoQkVHSU47CiAgIExPQ0sgcGdfdGFibGVzcGFjZTsKLSAgUFJFUEFS RSBUUkFOU0FDVElPTiAnbG9ja190YmxzcGMnOykpOworICBQUkVQQVJFIFRSQU5TQUNUSU9O ICdsb2NrX3RibHNwYyc7KSkpOwogCiAjIFRyeSB0byBkcm9wLiBUaGlzIHdpbGwgd2FpdCBk dWUgdG8gdGhlIHN0aWxsIGhlbGQgbG9jay4KLSRiZ3BzcWwtPnF1ZXJ5X3VudGlsKHFyLy8s ICJEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25faW52YWxpZF9pbnRlcnJ1cHQ7XG4iKTsKKyRi Z3BzcWwtPmRvX2FzeW5jKCJEUk9QIERBVEFCQVNFIHJlZ3Jlc3Npb25faW52YWxpZF9pbnRl cnJ1cHQ7Iik7CiAKIAogIyBPbmNlIHRoZSBEUk9QIERBVEFCQVNFIGlzIHdhaXRpbmcgZm9y IHRoZSBsb2NrLCBpbnRlcnJ1cHQgaXQuCi1vayggJGNhbmNlbC0+cXVlcnlfc2FmZSgKLQkJ cXEoCitteSAkY2FuY2VsX3JlcyA9ICRjYW5jZWwtPnF1ZXJ5KAorCQlxcVsKIAlETyBcJFwk CiAJQkVHSU4KIAkJV0hJTEUgTk9UIEVYSVNUUyhTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIFdI RVJFIE5PVCBncmFudGVkIEFORCByZWxhdGlvbiA9ICdwZ190YWJsZXNwYWNlJzo6cmVnY2xh c3MgQU5EIG1vZGUgPSAnQWNjZXNzU2hhcmVMb2NrJykgTE9PUAogCQkJUEVSRk9STSBwZ19z bGVlcCguMSk7CiAJCUVORCBMT09QOwogCUVORFwkXCQ7Ci0JU0VMRUNUIHBnX2NhbmNlbF9i YWNrZW5kKCRwaWQpOykpLAotCSJjYW5jZWxpbmcgRFJPUCBEQVRBQkFTRSIpOwotJGNhbmNl bC0+cXVpdCgpOworCVNFTEVDVCBwZ19jYW5jZWxfYmFja2VuZCgkcGlkKV0pOworaXMgKDIs ICRjYW5jZWxfcmVzLT57c3RhdHVzfSwgImNhbmNlbGluZyBEUk9QIERBVEFCQVNFIik7ICMg Q09NTUFORF9UVVBMRVNfT0sKKyRjYW5jZWwtPmNsb3NlKCk7CiAKKyRiZ3BzcWwtPndhaXRf Zm9yX2NvbXBsZXRpb247CiAjIHdhaXQgZm9yIGNhbmNlbGxhdGlvbiB0byBiZSBwcm9jZXNz ZWQKLW9rKCBwdW1wX3VudGlsKAotCQkkYmdwc3FsLT57cnVufSwgJGJncHNxbC0+e3RpbWVv dXR9LAotCQlcJGJncHNxbC0+e3N0ZGVycn0sIHFyL2NhbmNlbGluZyBzdGF0ZW1lbnQgZHVl IHRvIHVzZXIgcmVxdWVzdC8pLAotCSJjYW5jZWwgcHJvY2Vzc2VkIik7Ci0kYmdwc3FsLT57 c3RkZXJyfSA9ICcnOworcGFzcygiY2FuY2VsIHByb2Nlc3NlZCIpOwogCiAjIFZlcmlmeSB0 aGF0IGNvbm5lY3Rpb25zIHRvIHRoZSBkYXRhYmFzZSBhcmVuJ3QgYWxsb3dlZC4gIFRoZSBi YWNrZW5kIGNoZWNrcwogIyB0aGlzIGJlZm9yZSByZWxjYWNoZSBpbml0LCBzbyB0aGUgbG9j ayB3b24ndCBpbnRlcmZlcmUuCkBAIC0xMzQsOSArMTMyLDEyIEBAIGlzKCRub2RlLT5wc3Fs KCdyZWdyZXNzaW9uX2ludmFsaWRfaW50ZXJydXB0JywgJycpLAogCiAjIFRvIHByb3Blcmx5 IGRyb3AgdGhlIGRhdGFiYXNlLCB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIGxvY2sgcHJldmlv dXNseSBwcmV2ZW50aW5nCiAjIGRvaW5nIHNvLgotJGJncHNxbC0+cXVlcnlfc2FmZShxcShS T0xMQkFDSyBQUkVQQVJFRCAnbG9ja190YmxzcGMnKSk7Ci0kYmdwc3FsLT5xdWVyeV9zYWZl KHFxKERST1AgREFUQUJBU0UgcmVncmVzc2lvbl9pbnZhbGlkX2ludGVycnVwdCkpOworb2so JGJncHNxbC0+ZG8ocXEoUk9MTEJBQ0sgUFJFUEFSRUQgJ2xvY2tfdGJsc3BjJykpLAorCSJ1 bmJsb2NrIERST1AgREFUQUJBU0UiKTsKIAotJGJncHNxbC0+cXVpdCgpOworb2soJGJncHNx bC0+cXVlcnkocXEoRFJPUCBEQVRBQkFTRSByZWdyZXNzaW9uX2ludmFsaWRfaW50ZXJydXB0 KSksCisJIkRST1AgREFUQUJBU0UgaW52YWxpZF9pbnRlcnJ1cHQiKTsKKworJGJncHNxbC0+ Y2xvc2UoKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKaW5kZXggNDdk NjRkMDVhZDEuLmEyOTMwYzlmODVmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKKysrIGIvc3JjL3Rlc3QvcmVj b3ZlcnkvdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsCkBAIC00LDYgKzQs NyBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Np b247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApA QCAtNzY4LDE3ICs3NjksMTMgQEAgJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJTRUxFQ1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90 JywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwgZmFsc2UsIHRydWUpOyIKICk7CiAKLW15ICRi YWNrX3EgPSAkcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKAotCSdwb3N0Z3JlcycsCi0Jb25f ZXJyb3Jfc3RvcCA9PiAwLAotCXRpbWVvdXQgPT4gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz Ojp0aW1lb3V0X2RlZmF1bHQpOworbXkgJGJhY2tfcSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb24tPm5ldyhub2RlPT4kcHJpbWFyeSk7CiAKICMgcGdfbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgc3RhbmRieSBjYXRjaGVzIHVwLAog IyBoZW5jZSBpdCBuZWVkcyB0byBiZSBleGVjdXRlZCBpbiBhIGJhY2tncm91bmQgc2Vzc2lv bi4KICRvZmZzZXQgPSAtcyAkcHJpbWFyeS0+bG9nZmlsZTsKLSRiYWNrX3EtPnF1ZXJ5X3Vu dGlsKAotCXFyL2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcy8sIHEoCi0gICBcZWNobyBsb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMKKyRiYWNrX3EtPmRvX2FzeW5jKAorCXEoCiAgICBTRUxF Q1QgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxM KTsKICkpOwogCkBAIC03OTYsNyArNzkzLDggQEAgJHByaW1hcnktPnJlbG9hZDsKICMgU2lu Y2UgdGhlcmUgYXJlIG5vIHNsb3RzIGluIHN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3RzLCB0 aGUgZnVuY3Rpb24KICMgcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzIHNob3VsZCBub3cg cmV0dXJuLCBhbmQgdGhlIHNlc3Npb24gY2FuIGJlCiAjIHN0b3BwZWQuCi0kYmFja19xLT5x dWl0OworJGJhY2tfcS0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRiYWNrX3EtPmNsb3NlOwog CiAkcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwZ19kcm9wX3Jl cGxpY2F0aW9uX3Nsb3QoJ3Rlc3Rfc2xvdCcpOyIpOwpAQCAtMTA1NywxMiArMTA1NSw4IEBA ICRzdGFuZGJ5Mi0+cmVsb2FkOwogIyBzeW5jaHJvbml6YXRpb24gdW50aWwgdGhlIHJlbW90 ZSBzbG90IGNhdGNoZXMgdXAuCiAjIFRoZSBBUEkgd2lsbCBub3QgcmV0dXJuIHVudGlsIHRo aXMgaGFwcGVucywgdG8gYmUgYWJsZSB0byBtYWtlCiAjIGZ1cnRoZXIgY2FsbHMsIGNhbGwg dGhlIEFQSSBpbiBhIGJhY2tncm91bmQgcHJvY2Vzcy4KLW15ICRoID0gJHN0YW5kYnkyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGgt PnF1ZXJ5X3VudGlsKHFyL3N0YXJ0LywgcSgKLQlcZWNobyBzdGFydAotCVNFTEVDVCBwZ19z eW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Ci0JKSk7CitteSAkaCA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRzdGFuZGJ5Mik7CiskaC0+ZG9fYXN5bmMocShT RUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpOykpOwogCiAjIENvbmZpcm0gdGhh dCB0aGUgc2xvdCBzeW5jIGlzIHNraXBwZWQgZHVlIHRvIHRoZSByZW1vdGUgc2xvdCBsYWdn aW5nIGJlaGluZAogJHN0YW5kYnkyLT53YWl0X2Zvcl9sb2coCkBAIC0xMTAwLDYgKzEwOTQs NyBAQCAkc3RhbmRieTItPndhaXRfZm9yX2xvZygKICAgICBxci9uZXdseSBjcmVhdGVkIHJl cGxpY2F0aW9uIHNsb3QgXCJsc3ViMV9zbG90XCIgaXMgc3luYy1yZWFkeSBub3cvLAogICAg ICRsb2dfb2Zmc2V0KTsKIAotJGgtPnF1aXQ7CiskaC0+d2FpdF9mb3JfY29tcGxldGlvbjsK KyRoLT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwgYi9zcmMvdGVzdC9yZWNv dmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwKaW5kZXggZDA3ODNmZWY5YWUu LmZjYzAxMzM0NTg5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MV9jaGVj a3BvaW50X2F0X3Byb21vdGUucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfY2hl Y2twb2ludF9hdF9wcm9tb3RlLnBsCkBAIC00LDYgKzQsNyBAQAogdXNlIHN0cmljdDsKIHVz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7CiB1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKIHVzZSBUZXN0OjpN b3JlOwpAQCAtNzAsMTEgKzcxLDkgQEAgJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAjIEV4ZWN1dGUgYSByZXN0YXJ0IHBvaW50IG9uIHRoZSBzdGFuZGJ5LCB0aGF0 IHdlIHdpbGwgbm93IGJlIHdhaXRpbmcgb24uCiAjIFRoaXMgbmVlZHMgdG8gYmUgaW4gdGhl IGJhY2tncm91bmQuCiBteSAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxl OwotbXkgJHBzcWxfc2Vzc2lvbiA9Ci0gICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHBzcWxfc2Vzc2lvbi0+cXVl cnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8sIHEoCi0gICBcZWNobyBzdGFy dGluZ19jaGVja3BvaW50CitteSAkcHNxbF9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbi0+bmV3KG5vZGU9PiAkbm9kZV9zdGFuZGJ5KTsKKyRwc3FsX3Nlc3Npb24tPmRv X2FzeW5jKAorCXEoCiAgICBDSEVDS1BPSU5UOwogKSk7CiAKQEAgLTE1OSw3ICsxNTgsNyBA QCBvayggcHVtcF91bnRpbCgKICRraWxsbWUtPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2Vy dmVyIGZpbmlzaGVzIHJlc3RhcnRpbmcuCi0kbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3Vu dGlsKCdwb3N0Z3JlcycsIHVuZGVmLCAnJyk7Ciskbm9kZV9zdGFuZGJ5LT5wb2xsX3VudGls X2Nvbm5lY3Rpb24oJ3Bvc3RncmVzJyk7CiAKICMgQWZ0ZXIgcmVjb3ZlcnksIHRoZSBzZXJ2 ZXIgc2hvdWxkIGJlIGFibGUgdG8gc3RhcnQuCiBteSAkc3Rkb3V0OwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbCBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZlbF9iYWNrdXAucGwKaW5kZXggZGY0YWUwMjlmZTYu LjU4NDg5NDgyMzQxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Ml9sb3df bGV2ZWxfYmFja3VwLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZl bF9iYWNrdXAucGwKQEAgLTEwLDYgKzEwLDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdh bGwnOwogdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CiB1c2UgRmlsZTo6UGF0aCBxdyhybXRy ZWUpOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCkBAIC0yMCwxMSArMjEsMTAgQEAgJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CiAK ICMgU3RhcnQgYmFja3VwLgogbXkgJGJhY2t1cF9uYW1lID0gJ2JhY2t1cDEnOwotbXkgJHBz cWwgPSAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitteSAk cHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3By aW1hcnkpOwogCi0kcHNxbC0+cXVlcnlfc2FmZSgiU0VUIGNsaWVudF9taW5fbWVzc2FnZXMg VE8gV0FSTklORyIpOwotJHBzcWwtPnNldF9xdWVyeV90aW1lcl9yZXN0YXJ0OwotJHBzcWwt PnF1ZXJ5X3NhZmUoInNlbGVjdCBwZ19iYWNrdXBfc3RhcnQoJ3Rlc3QgbGFiZWwnKSIpOwor JHBzcWwtPmRvKCJTRVQgY2xpZW50X21pbl9tZXNzYWdlcyBUTyBXQVJOSU5HIik7CiskcHNx bC0+cXVlcnkoInNlbGVjdCBwZ19iYWNrdXBfc3RhcnQoJ3Rlc3QgbGFiZWwnKSIpOwogCiAj IENvcHkgZmlsZXMuCiBteSAkYmFja3VwX2RpciA9ICRub2RlX3ByaW1hcnktPmJhY2t1cF9k aXIgLiAnLycgLiAkYmFja3VwX25hbWU7CkBAIC04MSw5ICs4MSw5IEBAIG15ICRzdG9wX3Nl Z21lbnRfbmFtZSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCiAj IFN0b3AgYmFja3VwIGFuZCBnZXQgYmFja3VwX2xhYmVsLCB0aGUgbGFzdCBzZWdtZW50IGlz IGFyY2hpdmVkLgogbXkgJGJhY2t1cF9sYWJlbCA9Ci0gICRwc3FsLT5xdWVyeV9zYWZlKCJz ZWxlY3QgbGFiZWxmaWxlIGZyb20gcGdfYmFja3VwX3N0b3AoKSIpOworICAkcHNxbC0+cXVl cnlfb25ldmFsKCJzZWxlY3QgbGFiZWxmaWxlIGZyb20gcGdfYmFja3VwX3N0b3AoKSIpOwog Ci0kcHNxbC0+cXVpdDsKKyRwc3FsLT5jbG9zZTsKIAogIyBSYXRoZXIgdGhhbiB3cml0aW5n IG91dCBiYWNrdXBfbGFiZWwsIHRyeSB0byByZWNvdmVyIHRoZSBiYWNrdXAgd2l0aG91dAog IyBiYWNrdXBfbGFiZWwgdG8gZGVtb25zdHJhdGUgdGhhdCByZWNvdmVyeSB3aWxsIG5vdCB3 b3JrIGNvcnJlY3RseSB3aXRob3V0IGl0LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbAppbmRleCAxZWNiNDdhOGI1OC4u MzI2MTExN2IxYmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNr cG9pbnRfbG9naWNhbF9zbG90LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2No ZWNrcG9pbnRfbG9naWNhbF9zbG90LnBsCkBAIC04LDYgKzgsNyBAQCB1c2Ugc3RyaWN0Owog dXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTUyLDEzICs1MywxMCBA QCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHF7Y2hlY2twb2ludH0pOwogCiAjIEdlbmVyYXRlIHNvbWUgdHJhbnNhY3Rpb25z IHRvIGdldCBSVU5OSU5HX1hBQ1RTLgotbXkgJHhhY3RzID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKLSR4YWN0cy0+cXVlcnlfdW50aWwoCi0JcXIvcnVuX3hhY3Rz LywKLQlxKFxlY2hvIHJ1bl94YWN0cwotU0VMRUNUIDEgXHdhdGNoIDAuMQotXHEKLSkpOwor Zm9yIChteSAkaSA9IDA7ICRpIDwgMTA7ICRpKyspCit7CisJJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnU0VMRUNUIDEnKTsKK30KIAogJG5vZGUtPmFkdmFuY2Vfd2FsKDIwKTsK IApAQCAtNzIsMTYgKzcwLDExIEBAICRub2RlLT5hZHZhbmNlX3dhbCgyMCk7CiAjIHJlbW92 aW5nIG9sZCBXQUwgc2VnbWVudHMuCiBub3RlKCdzdGFydGluZyBjaGVja3BvaW50Jyk7CiAK LW15ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsK LSRjaGVja3BvaW50LT5xdWVyeV9zYWZlKAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCXEoc2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja3BvaW50LWJlZm9y ZS1vbGQtd2FsLXJlbW92YWwnLCd3YWl0JykpCiApOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3Vu dGlsKAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQvLAotCXEoXGVjaG8gc3RhcnRpbmdfY2hl Y2twb2ludAotY2hlY2twb2ludDsKLVxxCi0pKTsKK215ICRjaGVja3BvaW50ID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJGNoZWNrcG9pbnQt PmRvX2FzeW5jKHEoQ0hFQ0tQT0lOVDspKTsKIAogIyBXYWl0IHVudGlsIHRoZSBjaGVja3Bv aW50IHN0b3BzIHJpZ2h0IGJlZm9yZSByZW1vdmluZyBXQUwgc2VnbWVudHMuCiBub3RlKCd3 YWl0aW5nIGZvciBpbmplY3Rpb25fcG9pbnQnKTsKQEAgLTkwLDE3ICs4MywyMSBAQCBub3Rl KCdpbmplY3Rpb25fcG9pbnQgaXMgcmVhY2hlZCcpOwogCiAjIFRyeSB0byBhZHZhbmNlIHRo ZSBsb2dpY2FsIHNsb3QsIGJ1dCBtYWtlIGl0IHN0b3Agd2hlbiBpdCBtb3ZlcyB0byB0aGUg bmV4dAogIyBXQUwgc2VnbWVudCAodGhpcyBoYXMgdG8gaGFwcGVuIGluIHRoZSBiYWNrZ3Jv dW5kLCB0b28pLgotbXkgJGxvZ2ljYWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycpOwotJGxvZ2ljYWwtPnF1ZXJ5X3NhZmUoCisjIFdlIG5lZWQgdG8gY2FsbCBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMgcmVwZWF0ZWRseSB1bnRpbCB0aGUgc2xvdAorIyBh ZHZhbmNlcyB0byB0aGUgbmV4dCBzZWdtZW50IGFuZCBoaXRzIHRoZSBpbmplY3Rpb24gcG9p bnQuCitteSAkbG9naWNhbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKKyRsb2dpY2FsLT5kbygKIAlxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnbG9naWNhbC1yZXBsaWNhdGlvbi1zbG90LWFkdmFuY2Utc2VnbWVudCcsJ3dh aXQnKTt9CiApOwotJGxvZ2ljYWwtPnF1ZXJ5X3VudGlsKAotCXFyL2dldF9jaGFuZ2VzLywK LQlxKAotXGVjaG8gZ2V0X2NoYW5nZXMKLXNlbGVjdCBjb3VudCgqKSBmcm9tIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygnc2xvdF9sb2dpY2FsJywgbnVsbCwgbnVsbCkgXHdhdGNo IDEKLVxxCi0pKTsKKyRsb2dpY2FsLT5kb19hc3luYygKKwlxe0RPICQkCisJQkVHSU4KKwkJ TE9PUAorCQkJUEVSRk9STSBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygnc2xvdF9sb2dpY2FsJywgbnVsbCwgbnVsbCk7CisJCQlQRVJGT1JNIHBnX3NsZWVw KDAuMSk7CisJCUVORCBMT09QOworCUVORCAkJDt9CispOwogCiAjIFdhaXQgdW50aWwgdGhl IHNsb3QncyByZXN0YXJ0X2xzbiBwb2ludHMgdG8gdGhlIG5leHQgV0FMIHNlZ21lbnQuCiBu b3RlKCd3YWl0aW5nIGZvciBpbmplY3Rpb25fcG9pbnQnKTsKQEAgLTEzOCwxMiArMTM1LDgg QEAgZXZhbCB7CiB9OwogaXMoJEAsICcnLCAiTG9naWNhbCBzbG90IHN0aWxsIHZhbGlkIik7 CiAKLSMgSWYgd2Ugc2VuZCBccSB3aXRoICQ8cHNxbF9zZXNzaW9uPi0+cXVpdCB0aGUgY29t bWFuZCBjYW4gYmUgc2VudCB0byB0aGUKLSMgc2Vzc2lvbiBhbHJlYWR5IGNsb3NlZC4gU28g XHEgaXMgaW4gaW5pdGlhbCBzY3JpcHQsIGhlcmUgd2Ugb25seSBmaW5pc2gKLSMgSVBDOjpS dW4KLSR4YWN0cy0+e3J1bn0tPmZpbmlzaDsKLSRjaGVja3BvaW50LT57cnVufS0+ZmluaXNo OwotJGxvZ2ljYWwtPntydW59LT5maW5pc2g7CisjIFNlc3Npb25zIHdlcmUgdGVybWluYXRl ZCBieSB0aGUgc2VydmVyIGNyYXNoIGFuZCB3aWxsIGJlIGNsZWFuZWQgdXAKKyMgYXV0b21h dGljYWxseSB3aGVuIHRoZXkgZ28gb3V0IG9mIHNjb3BlLgogCiAjIFZlcmlmeSB0aGF0IHRo ZSBzeW5jaHJvbml6ZWQgc2xvdHMgd29uJ3QgYmUgaW52YWxpZGF0ZWQgaW1tZWRpYXRlbHkg YWZ0ZXIKICMgc3luY2hyb25pemF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiBhIGNvbmN1cnJl bnQgY2hlY2twb2ludC4KQEAgLTE4NiwxNSArMTc5LDExIEBAICRwcmltYXJ5LT53YWl0X2Zv cl9yZXBsYXlfY2F0Y2h1cCgkc3RhbmRieSk7CiAjIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQg YmVmb3JlIGludmFsaWRhdGluZyByZXBsaWNhdGlvbiBzbG90cy4KIG5vdGUoJ3N0YXJ0aW5n IGNoZWNrcG9pbnQnKTsKIAotJGNoZWNrcG9pbnQgPSAkc3RhbmRieS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCiskc3RhbmRieS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJcShzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ3Jlc3RhcnRwb2ludC1iZWZvcmUtc2xvdC1pbnZhbGlkYXRpb24nLCd3YWl0JykpCiAp OwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQv LAotCXEoXGVjaG8gc3RhcnRpbmdfY2hlY2twb2ludAotY2hlY2twb2ludDsKLSkpOworJGNo ZWNrcG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkc3Rh bmRieSk7CiskY2hlY2twb2ludC0+ZG9fYXN5bmMocShDSEVDS1BPSU5UOykpOwogCiAjIFdh aXQgdW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlIGludmFsaWRhdGlu ZyBzbG90cwogbm90ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9uX3BvaW50Jyk7CkBAIC0yMTUs NyArMjA0LDggQEAgJHN0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7c2VsZWN0 IGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdyZXN0YXJ0cG9pbnQtYmVmb3JlLXNsb3QtaW52 YWxpZGF0aW9uJyk7CiAJICBzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3Jlc3Rh cnRwb2ludC1iZWZvcmUtc2xvdC1pbnZhbGlkYXRpb24nKX0pOwogCi0kY2hlY2twb2ludC0+ cXVpdDsKKyRjaGVja3BvaW50LT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGNoZWNrcG9pbnQt PmNsb3NlOwogCiAjIENvbmZpcm0gdGhhdCB0aGUgc2xvdCBpcyBub3QgaW52YWxpZGF0ZWQK IGlzKCAkc3RhbmRieS0+c2FmZV9wc3FsKApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsCmluZGV4IDQzMzQxNDVhYmUx Li40MzE5M2MyMTliYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDdfY2hl Y2twb2ludF9waHlzaWNhbF9zbG90LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3 X2NoZWNrcG9pbnRfcGh5c2ljYWxfc2xvdC5wbApAQCAtOCw2ICs4LDcgQEAgdXNlIHN0cmlj dDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAogdXNlIFRlc3Q6Ok1vcmU7CkBAIC02OSwxNiArNzAs MTEgQEAgbm90ZSgicmVzdGFydCBsc24gYmVmb3JlIGNoZWNrcG9pbnQ6ICRyZXN0YXJ0X2xz bl9pbml0Iik7CiAjIHJlbW92aW5nIG9sZCBXQUwgc2VnbWVudHMuCiBub3RlKCdzdGFydGlu ZyBjaGVja3BvaW50Jyk7CiAKLW15ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKLSRjaGVja3BvaW50LT5xdWVyeV9zYWZlKAorbXkgJGNoZWNr cG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7 CiskY2hlY2twb2ludC0+ZG8oCiAJcXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J2NoZWNrcG9pbnQtYmVmb3JlLW9sZC13YWwtcmVtb3ZhbCcsJ3dhaXQnKX0KICk7Ci0kY2hl Y2twb2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8sCi0JcShc ZWNobyBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotXHEKLSkpOworJGNoZWNr cG9pbnQtPmRvX2FzeW5jKCdjaGVja3BvaW50Jyk7CiAKICMgV2FpdCB1bnRpbCB0aGUgY2hl Y2twb2ludCBzdG9wcyByaWdodCBiZWZvcmUgcmVtb3ZpbmcgV0FMIHNlZ21lbnRzLgogbm90 ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9uX3BvaW50Jyk7CkBAIC0xMDQsNyArMTAwLDExIEBA IG15ICRyZXN0YXJ0X2xzbl9vbGQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiBj aG9tcCgkcmVzdGFydF9sc25fb2xkKTsKIG5vdGUoInJlc3RhcnQgbHNuIGJlZm9yZSBzdG9w OiAkcmVzdGFydF9sc25fb2xkIik7CiAKLSMgQWJydXB0bHkgc3RvcCB0aGUgc2VydmVyLgor JGNoZWNrcG9pbnQtPndhaXRfZm9yX2NvbXBsZXRpb24oKTsKKyRjaGVja3BvaW50LT5jbG9z ZSgpOworCisjIEFicnVwdGx5IHN0b3AgdGhlIHNlcnZlciAoMSBzZWNvbmQgc2hvdWxkIGJl IGVub3VnaCBmb3IgdGhlIGNoZWNrcG9pbnQKKyMgdG8gZmluaXNoOyBpdCB3b3VsZCBiZSBi ZXR0ZXIpLgogJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScpOwogCiAkbm9kZS0+c3RhcnQ7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OF92YWN1dW1faG9yaXpvbl9mbG9v ci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ4X3ZhY3V1bV9ob3Jpem9uX2Zsb29yLnBs CmluZGV4IDUyYWNiNTU2MWQ2Li5hNDg3YmUwNGRjOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwKQEAgLTQ1LDEyICs0NSwx MCBAQCBteSAkb3JpZ19jb25uaW5mbyA9ICRub2RlX3ByaW1hcnktPmNvbm5zdHIoKTsKIG15 ICR0YWJsZTEgPSAidmFjX2hvcml6b25fZmxvb3JfdGFibGUiOwogCiAjIExvbmctcnVubmlu ZyBQcmltYXJ5IFNlc3Npb24gQQotbXkgJHBzcWxfcHJpbWFyeUEgPQotICAkbm9kZV9wcmlt YXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJHRlc3RfZGIsIG9uX2Vycm9yX3N0b3AgPT4gMSk7Citt eSAkc2Vzc2lvbl9wcmltYXJ5QSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlX3ByaW1hcnksIGRibmFtZSA9PiAkdGVzdF9kYik7CiAKICMgTG9uZy1y dW5uaW5nIFByaW1hcnkgU2Vzc2lvbiBCCi1teSAkcHNxbF9wcmltYXJ5QiA9Ci0gICRub2Rl X3ByaW1hcnktPmJhY2tncm91bmRfcHNxbCgkdGVzdF9kYiwgb25fZXJyb3Jfc3RvcCA9PiAx KTsKK215ICRzZXNzaW9uX3ByaW1hcnlCID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFyeSwgZGJuYW1lID0+ICR0ZXN0X2RiKTsKIAogIyBP dXIgdGVzdCByZWxpZXMgb24gdHdvIHJvdW5kcyBvZiBpbmRleCB2YWN1dW1pbmcgZm9yIHJl YXNvbnMgZWxhYm9yYXRlZAogIyBsYXRlci4gVG8gdHJpZ2dlciB0d28gcm91bmRzIG9mIGlu ZGV4IHZhY3V1bWluZywgd2UgbXVzdCBmaWxsIHVwIHRoZQpAQCAtMTIzLDcgKzEyMSw3IEBA ICRub2RlX3JlcGxpY2EtPnBvbGxfcXVlcnlfdW50aWwoCiAjIE5vdyBpbnNlcnQgYW5kIHVw ZGF0ZSBhIHR1cGxlIHdoaWNoIHdpbGwgYmUgdmlzaWJsZSB0byB0aGUgdmFjdXVtIG9uIHRo ZQogIyBwcmltYXJ5IGJ1dCB3aGljaCB3aWxsIGhhdmUgeG1heCBuZXdlciB0aGFuIHRoZSBv bGRlc3QgeG1pbiBvbiB0aGUgc3RhbmRieQogIyB0aGF0IHdhcyByZWNlbnRseSBkaXNjb25u ZWN0ZWQuCi1teSAkcmVzID0gJHBzcWxfcHJpbWFyeUEtPnF1ZXJ5X3NhZmUoCitteSAkcmVz ID0gJHNlc3Npb25fcHJpbWFyeUEtPnF1ZXJ5KAogCXFxWwogCQlJTlNFUlQgSU5UTyAkdGFi bGUxIFZBTFVFUyAoOTkpOwogCQlVUERBVEUgJHRhYmxlMSBTRVQgY29sMSA9IDEwMCBXSEVS RSBjb2wxID0gOTk7CkBAIC0xMzIsNyArMTMwLDcgQEAgbXkgJHJlcyA9ICRwc3FsX3ByaW1h cnlBLT5xdWVyeV9zYWZlKAogKTsKIAogIyBNYWtlIHN1cmUgdGhlIFVQREFURSBmaW5pc2hl ZAotbGlrZSgkcmVzLCBxci9eYWZ0ZXJfdXBkYXRlJC9tLCAiVVBEQVRFIG9jY3VycmVkIG9u IHByaW1hcnkgc2Vzc2lvbiBBIik7CitsaWtlKCRyZXMtPntwc3Fsb3V0fSwgcXIvXmFmdGVy X3VwZGF0ZSQvbSwgIlVQREFURSBvY2N1cnJlZCBvbiBwcmltYXJ5IHNlc3Npb24gQSIpOwog CiAjIE9wZW4gYSBjdXJzb3Igb24gdGhlIHByaW1hcnkgd2hvc2UgcGluIHdpbGwga2VlcCBW QUNVVU0gZnJvbSBnZXR0aW5nIGEKICMgY2xlYW51cCBsb2NrIG9uIHRoZSBmaXJzdCBwYWdl IG9mIHRoZSByZWxhdGlvbi4gV2Ugd2FudCBWQUNVVU0gdG8gYmUgYWJsZSB0bwpAQCAtMTQ1 LDcgKzE0Myw3IEBAIG15ICRwcmltYXJ5X2N1cnNvcjEgPSAidmFjX2hvcml6b25fZmxvb3Jf Y3Vyc29yMSI7CiAjIFRoZSBmaXJzdCB2YWx1ZSBpbnNlcnRlZCBpbnRvIHRoZSB0YWJsZSB3 YXMgYSA3LCBzbyBGRVRDSCBGT1JXQVJEIHNob3VsZAogIyByZXR1cm4gYSA3LiBUaGF0J3Mg aG93IHdlIGtub3cgdGhlIGN1cnNvciBoYXMgYSBwaW4uCiAjIERpc2FibGUgaW5kZXggc2Nh bnMgc28gdGhlIGN1cnNvciBwaW5zIGhlYXAgcGFnZXMgYW5kIG5vdCBpbmRleCBwYWdlcy4K LSRyZXMgPSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlfc2FmZSgKKyRyZXMgPSAkc2Vzc2lvbl9w cmltYXJ5Qi0+cXVlcnkoCiAJcXFbCiAJQkVHSU47CiAJU0VUIGVuYWJsZV9iaXRtYXBzY2Fu ID0gb2ZmOwpAQCAtMTU2LDExICsxNTQsMTEgQEAgJHJlcyA9ICRwc3FsX3ByaW1hcnlCLT5x dWVyeV9zYWZlKAogCV0KICk7CiAKLWlzKCRyZXMsIDcsIHFxW0N1cnNvciBxdWVyeSByZXR1 cm5lZCAkcmVzLiBFeHBlY3RlZCB2YWx1ZSA3Ll0pOworaXMoJHJlcy0+e3BzcWxvdXR9LCA3 LCBxcVtDdXJzb3IgcXVlcnkgcmV0dXJuZWQgJHJlcy0+e3BzcWxvdXR9LiBFeHBlY3RlZCB2 YWx1ZSA3Ll0pOwogCiAjIEdldCB0aGUgUElEIG9mIHRoZSBzZXNzaW9uIHdoaWNoIHdpbGwg cnVuIHRoZSBWQUNVVU0gRlJFRVpFIHNvIHRoYXQgd2UgY2FuCiAjIHVzZSBpdCB0byBmaWx0 ZXIgcGdfc3RhdF9hY3Rpdml0eSBsYXRlci4KLW15ICR2YWN1dW1fcGlkID0gJHBzcWxfcHJp bWFyeUEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCBwZ19iYWNrZW5kX3BpZCgpOyIpOworbXkgJHZh Y3V1bV9waWQgPSAkc2Vzc2lvbl9wcmltYXJ5QS0+cXVlcnlfb25ldmFsKCJTRUxFQ1QgcGdf YmFja2VuZF9waWQoKTsiKTsKIAogIyBOb3cgc3RhcnQgYSBWQUNVVU0gRlJFRVpFIG9uIHRo ZSBwcmltYXJ5LiBJdCB3aWxsIGNhbGwgdmFjdXVtX2dldF9jdXRvZmZzKCkKICMgYW5kIGVz dGFibGlzaCB2YWx1ZXMgb2YgT2xkZXN0WG1pbiBhbmQgR2xvYmFsVmlzU3RhdGUgd2hpY2gg YXJlIG5ld2VyIHRoYW4KQEAgLTE3NiwxNCArMTc0LDggQEAgbXkgJHZhY3V1bV9waWQgPSAk cHNxbF9wcmltYXJ5QS0+cXVlcnlfc2FmZSgiU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCk7Iik7 CiAjIHBhZ2VzIG9mIHRoZSBoZWFwIG11c3QgYmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJ5IGEg c2luZ2xlIHdvcmtlciB0byBlbnN1cmUKICMgdGVzdCBzdGFiaWxpdHkgKFBBUkFMTEVMIDAg c2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgZ3VhcmRzIGFnYWluc3QgdGhlCiAjIHBvc3Np YmlsaXR5IG9mIHBhcmFsbGVsIGhlYXAgdmFjdXVtaW5nKS4KLSRwc3FsX3ByaW1hcnlBLT57 c3RkaW59IC49IHFxWwotCQlTRVQgbWFpbnRlbmFuY2VfaW9fY29uY3VycmVuY3kgPSAwOwot CQlWQUNVVU0gKFZFUkJPU0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkgJHRhYmxlMTsKLQkJXFxl Y2hvIFZBQ1VVTQotICAgICAgICBdOwotCi0jIE1ha2Ugc3VyZSB0aGUgVkFDVVVNIGNvbW1h bmQgbWFrZXMgaXQgdG8gdGhlIHNlcnZlci4KLSRwc3FsX3ByaW1hcnlBLT57cnVufS0+cHVt cF9uYigpOworJHNlc3Npb25fcHJpbWFyeUEtPmRvKCdTRVQgbWFpbnRlbmFuY2VfaW9fY29u Y3VycmVuY3kgPSAwOycpOworJHNlc3Npb25fcHJpbWFyeUEtPmRvX2FzeW5jKCJWQUNVVU0g KFZFUkJPU0UsIEZSRUVaRSwgUEFSQUxMRUwgMCkgJHRhYmxlMTsiKTsKIAogIyBNYWtlIHN1 cmUgdGhhdCB0aGUgVkFDVVVNIGhhcyBhbHJlYWR5IGNhbGxlZCB2YWN1dW1fZ2V0X2N1dG9m ZnMoKSBhbmQgaXMKICMganVzdCB3YWl0aW5nIG9uIHRoZSBsb2NrIHRvIHN0YXJ0IHZhY3V1 bWluZy4gV2UgZG9uJ3Qgd2FudCB0aGUgc3RhbmRieSB0bwpAQCAtMjI5LDcgKzIyMSw3IEBA ICRub2RlX3ByaW1hcnktPnBvbGxfcXVlcnlfdW50aWwoCiAjIGV4cGVjdCB0aGF0IGEgcm91 bmQgb2YgaW5kZXggdmFjdXVtaW5nIGhhcyBoYXBwZW5lZCBhbmQgdGhhdCB0aGUgdmFjdXVt IGlzCiAjIG5vdyB3YWl0aW5nIGZvciB0aGUgY3Vyc29yIHRvIHJlbGVhc2UgaXRzIHBpbiBv biB0aGUgbGFzdCBwYWdlIG9mIHRoZQogIyByZWxhdGlvbi4KLSRyZXMgPSAkcHNxbF9wcmlt YXJ5Qi0+cXVlcnlfc2FmZSgiRkVUQ0ggJHByaW1hcnlfY3Vyc29yMSIpOworJHJlcyA9ICRz ZXNzaW9uX3ByaW1hcnlCLT5xdWVyeV9vbmV2YWwoIkZFVENIICRwcmltYXJ5X2N1cnNvcjEi KTsKIGlzKCRyZXMsIDcsCiAJcXFbQ3Vyc29yIHF1ZXJ5IHJldHVybmVkICRyZXMgZnJvbSBz ZWNvbmQgZmV0Y2guIEV4cGVjdGVkIHZhbHVlIDcuXSk7CiAKQEAgLTI0MywxMyArMjM1LDcg QEAgJG5vZGVfcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKIAldLCAndCcpOwogCiAjIENv bW1pdCB0aGUgdHJhbnNhY3Rpb24gd2l0aCB0aGUgb3BlbiBjdXJzb3Igc28gdGhhdCB0aGUg VkFDVVVNIGNhbiBmaW5pc2guCi0kcHNxbF9wcmltYXJ5Qi0+cXVlcnlfdW50aWwoCi0JcXIv XmNvbW1pdCQvbSwKLQlxcVsKLQkJCUNPTU1JVDsKLQkJCVxcZWNobyBjb21taXQKLSAgICAg ICAgXQotKTsKKyRzZXNzaW9uX3ByaW1hcnlCLT5kbygnQ09NTUlUJyk7CiAKICMgVkFDVVVN IHByb2NlZWRzIHdpdGggcHJ1bmluZyBhbmQgZG9lcyBhIHZpc2liaWxpdHkgY2hlY2sgb24g ZWFjaCB0dXBsZS4gSW4KICMgb2xkZXIgdmVyc2lvbnMgb2YgUG9zdGdyZXMsIHBydW5pbmcg Zm91bmQgb3VyIGZpbmFsIGRlYWQgdHVwbGUKQEAgLTI4MSw4ICsyNjcsOCBAQCAkbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJHRlc3RfZGIsICJJTlNFUlQgSU5UTyAkdGFibGUxIFZBTFVF UyAoMSk7Iik7CiAkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3JlcGxp Y2EsICdyZXBsYXknLCAkcHJpbWFyeV9sc24pOwogCiAjIyBTaHV0IGRvd24gcHNxbHMKLSRw c3FsX3ByaW1hcnlBLT5xdWl0OwotJHBzcWxfcHJpbWFyeUItPnF1aXQ7Ciskc2Vzc2lvbl9w cmltYXJ5QS0+Y2xvc2U7Ciskc2Vzc2lvbl9wcmltYXJ5Qi0+Y2xvc2U7CiAKICRub2RlX3Jl cGxpY2EtPnN0b3AoKTsKICRub2RlX3ByaW1hcnktPnN0b3AoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5wbAppbmRleCBiZjYxYjhjNDdjZi4uZDVlY2JlYzM1 NjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ5X3dhaXRfZm9yX2xzbi5w bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKQEAgLTUs NiArNSw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9y ZTsKIApAQCAtMzU0LDEwICszNTUsOCBAQCBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsr KQogCW15ICRsc24gPQogCSAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJCSJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpIik7Ci0JJHBzcWxfc2Vz c2lvbnNbJGldID0gJG5vZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycp OwotCSRwc3FsX3Nlc3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCi0JCXFyL3N0YXJ0LywgcXFb Ci0JCVxcZWNobyBzdGFydAorCSRwc3FsX3Nlc3Npb25zWyRpXSA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N0YW5kYnkpOworCSRwc3FsX3Nlc3Np b25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJCVdBSVQgRk9SIExTTiAnJHtsc259JzsKIAkJU0VM RUNUIGxvZ19jb3VudCgke2l9KTsKIAldKTsKQEAgLTM2OCw3ICszNjcsOCBAQCAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ193YWxfcmVwbGF5X3Jl c3VtZSgpOyIpOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIHsKIAkkbm9kZV9z dGFuZGJ5LT53YWl0X2Zvcl9sb2coImNvdW50ICR7aX0iLCAkbG9nX29mZnNldCk7Ci0JJHBz cWxfc2Vzc2lvbnNbJGldLT5xdWl0OworCSRwc3FsX3Nlc3Npb25zWyRpXS0+d2FpdF9mb3Jf Y29tcGxldGlvbjsKKwkkcHNxbF9zZXNzaW9uc1skaV0tPmNsb3NlOwogfQogCiBvaygxLCAn bXVsdGlwbGUgc3RhbmRieV9yZXBsYXkgd2FpdGVycyByZXBvcnRlZCBjb25zaXN0ZW50IGRh dGEnKTsKQEAgLTM5MiwxMCArMzkyLDggQEAgZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkr KykKIG15IEB3cml0ZV9zZXNzaW9uczsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKysp CiB7Ci0JJHdyaXRlX3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKLQkkd3JpdGVfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgK LQkJcXIvc3RhcnQvLCBxcVsKLQkJXFxlY2hvIHN0YXJ0CisJJHdyaXRlX3Nlc3Npb25zWyRp XSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N0YW5k YnkpOworCSR3cml0ZV9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFxWwogCQlXQUlUIEZPUiBM U04gJyR3cml0ZV9sc25zWyRpXScgV0lUSCAoTU9ERSAnc3RhbmRieV93cml0ZScsIHRpbWVv dXQgJzFkJyk7CiAJCVNFTEVDVCBsb2dfd2FpdF9kb25lKCd3cml0ZV9kb25lJywgJGkpOwog CV0pOwpAQCAtNDE0LDcgKzQxMiw4IEBAIHJlc3VtZV93YWxyZWNlaXZlcigkbm9kZV9zdGFu ZGJ5KTsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7CiAJJG5vZGVfc3RhbmRi eS0+d2FpdF9mb3JfbG9nKCJ3cml0ZV9kb25lICRpIiwgJHdyaXRlX2xvZ19vZmZzZXQpOwot CSR3cml0ZV9zZXNzaW9uc1skaV0tPnF1aXQ7CisJJHdyaXRlX3Nlc3Npb25zWyRpXS0+d2Fp dF9mb3JfY29tcGxldGlvbjsKKwkkd3JpdGVfc2Vzc2lvbnNbJGldLT5jbG9zZTsKIH0KIAog IyBWZXJpZnkgb24gc3RhbmRieSB0aGF0IFdBTCB3YXMgd3JpdHRlbiB1cCB0byB0aGUgdGFy Z2V0IExTTgpAQCAtNDQ0LDEwICs0NDMsOCBAQCBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAk aSsrKQogbXkgQGZsdXNoX3Nlc3Npb25zOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkr KykKIHsKLQkkZmx1c2hfc2Vzc2lvbnNbJGldID0gJG5vZGVfc3RhbmRieS0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRmbHVzaF9zZXNzaW9uc1skaV0tPnF1ZXJ5X3VudGls KAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkZmx1c2hfc2Vzc2lvbnNb JGldID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfc3Rh bmRieSk7CisJJGZsdXNoX3Nlc3Npb25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJCVdBSVQgRk9S IExTTiAnJGZsdXNoX2xzbnNbJGldJyBXSVRIIChNT0RFICdzdGFuZGJ5X2ZsdXNoJywgdGlt ZW91dCAnMWQnKTsKIAkJU0VMRUNUIGxvZ193YWl0X2RvbmUoJ2ZsdXNoX2RvbmUnLCAkaSk7 CiAJXSk7CkBAIC00NjYsNyArNDYzLDggQEAgcmVzdW1lX3dhbHJlY2VpdmVyKCRub2RlX3N0 YW5kYnkpOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIHsKIAkkbm9kZV9zdGFu ZGJ5LT53YWl0X2Zvcl9sb2coImZsdXNoX2RvbmUgJGkiLCAkZmx1c2hfbG9nX29mZnNldCk7 Ci0JJGZsdXNoX3Nlc3Npb25zWyRpXS0+cXVpdDsKKwkkZmx1c2hfc2Vzc2lvbnNbJGldLT53 YWl0X2Zvcl9jb21wbGV0aW9uOworCSRmbHVzaF9zZXNzaW9uc1skaV0tPmNsb3NlOwogfQog CiAjIFZlcmlmeSBvbiBzdGFuZGJ5IHRoYXQgV0FMIHdhcyBmbHVzaGVkIHVwIHRvIHRoZSB0 YXJnZXQgTFNOCkBAIC01MDIsMTAgKzUwMCw4IEBAIG15IEBtaXhlZF9zZXNzaW9uczsKIG15 IEBtaXhlZF9tb2RlcyA9ICgnc3RhbmRieV9yZXBsYXknLCAnc3RhbmRieV93cml0ZScsICdz dGFuZGJ5X2ZsdXNoJyk7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA2OyAkaSsrKQogewotCSRt aXhlZF9zZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bv c3RncmVzJyk7Ci0JJG1peGVkX3Nlc3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCi0JCXFyL3N0 YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSRtaXhlZF9zZXNzaW9uc1skaV0gPSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5KTsKKwkk bWl4ZWRfc2Vzc2lvbnNbJGldLT5kb19hc3luYyhxcVsKIAkJV0FJVCBGT1IgTFNOICcke21p eGVkX3RhcmdldF9sc259JyBXSVRIIChNT0RFICckbWl4ZWRfbW9kZXNbJGkgJSAzXScsIHRp bWVvdXQgJzFkJyk7CiAJCVNFTEVDVCBsb2dfd2FpdF9kb25lKCdtaXhlZF9kb25lJywgJGkp OwogCV0pOwpAQCAtNTI5LDcgKzUyNSw4IEBAIHJlc3VtZV93YWxyZWNlaXZlcigkbm9kZV9z dGFuZGJ5KTsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDY7ICRpKyspCiB7CiAJJG5vZGVfc3Rh bmRieS0+d2FpdF9mb3JfbG9nKCJtaXhlZF9kb25lICRpIiwgJG1peGVkX2xvZ19vZmZzZXQp OwotCSRtaXhlZF9zZXNzaW9uc1skaV0tPnF1aXQ7CisJJG1peGVkX3Nlc3Npb25zWyRpXS0+ d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkbWl4ZWRfc2Vzc2lvbnNbJGldLT5jbG9zZTsKIH0K IAogIyBWZXJpZnkgYWxsIG1vZGVzIHJlYWNoZWQgdGhlIHRhcmdldCBMU04KQEAgLTU2Miwx MCArNTU5LDggQEAgbXkgJHByaW1hcnlfZmx1c2hfbG9nX29mZnNldCA9IC1zICRub2RlX3By aW1hcnktPmxvZ2ZpbGU7CiBteSBAcHJpbWFyeV9mbHVzaF9zZXNzaW9uczsKIGZvciAobXkg JGkgPSAwOyAkaSA8IDU7ICRpKyspCiB7Ci0JJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGld ID0gJG5vZGVfcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSRwcmlt YXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCi0JCXFyL3N0YXJ0LywgcXFb Ci0JCVxcZWNobyBzdGFydAorCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1hcnkpOworCSRw cmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJCVdBSVQgRk9SIExT TiAnJHByaW1hcnlfZmx1c2hfbHNuc1skaV0nIFdJVEggKE1PREUgJ3ByaW1hcnlfZmx1c2gn LCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgncHJpbWFyeV9mbHVz aF9kb25lJywgJGkpOwogCV0pOwpAQCAtNTc2LDcgKzU3MSw4IEBAIGZvciAobXkgJGkgPSAw OyAkaSA8IDU7ICRpKyspCiB7CiAJJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfbG9nKCJwcmlt YXJ5X2ZsdXNoX2RvbmUgJGkiLAogCQkkcHJpbWFyeV9mbHVzaF9sb2dfb2Zmc2V0KTsKLQkk cHJpbWFyeV9mbHVzaF9zZXNzaW9uc1skaV0tPnF1aXQ7CisJJHByaW1hcnlfZmx1c2hfc2Vz c2lvbnNbJGldLT53YWl0X2Zvcl9jb21wbGV0aW9uOworCSRwcmltYXJ5X2ZsdXNoX3Nlc3Np b25zWyRpXS0+Y2xvc2U7CiB9CiAKICMgVmVyaWZ5IG9uIHByaW1hcnkgdGhhdCBXQUwgd2Fz IGZsdXNoZWQgdXAgdG8gdGhlIHRhcmdldCBMU04KQEAgLTYwNCwxMCArNjAwLDggQEAgbXkg QHdhaXRfbW9kZXMgPSAoJ3N0YW5kYnlfcmVwbGF5JywgJ3N0YW5kYnlfd3JpdGUnLCAnc3Rh bmRieV9mbHVzaCcpOwogbXkgQHdhaXRfc2Vzc2lvbnM7CiBmb3IgKG15ICRpID0gMDsgJGkg PCAzOyAkaSsrKQogewotCSR3YWl0X3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5kYnktPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkd2FpdF9zZXNzaW9uc1skaV0tPnF1ZXJ5 X3VudGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkd2FpdF9zZXNz aW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZV9zdGFuZGJ5KTsKKwkkd2FpdF9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFxWwogCQlXQUlU IEZPUiBMU04gJyR7bHNuNH0nIFdJVEggKE1PREUgJyR3YWl0X21vZGVzWyRpXScpOwogCV0p OwogfQpAQCAtNjQ1LDExICs2MzksNiBAQCBvaygkb3V0cHV0IGVxICJub3QgaW4gcmVjb3Zl cnkiLAogJG5vZGVfc3RhbmRieS0+c3RvcDsKICRub2RlX3ByaW1hcnktPnN0b3A7CiAKLSMg SWYgd2Ugc2VuZCBccSB3aXRoICRzZXNzaW9uLT5xdWl0IHRoZSBjb21tYW5kIGNhbiBiZSBz ZW50IHRvIHRoZSBzZXNzaW9uCi0jIGFscmVhZHkgY2xvc2VkLiBTbyBccSBpcyBpbiBpbml0 aWFsIHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlzaCBJUEM6OlJ1bi4KLWZvciAobXkgJGkg PSAwOyAkaSA8IDM7ICRpKyspCi17Ci0JJHdhaXRfc2Vzc2lvbnNbJGldLT57cnVufS0+Zmlu aXNoOwotfQorIyBTZXNzaW9ucyB3aWxsIGJlIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSB3 aGVuIHRoZXkgZ28gb3V0IG9mIHNjb3BlLgogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX3JlZG9fc2VnbWVudF9taXNzaW5nLnBsIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfcmVkb19zZWdtZW50X21pc3NpbmcucGwKaW5kZXgg ZTA3ZmYwYzcyZmUuLmI0OTJkYjQ0Njg0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVy eS90LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzA1MF9yZWRvX3NlZ21lbnRfbWlzc2luZy5wbApAQCAtNyw2ICs3LDcgQEAKIHVzZSBz dHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTQ0LDE1ICs0 NSwxMSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJcXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NyZWF0 ZS1jaGVja3BvaW50LXJ1bicsICd3YWl0Jyl9KTsKIAotIyBTdGFydCBhIHBzcWwgc2Vzc2lv biB0byBydW4gdGhlIGNoZWNrcG9pbnQgaW4gdGhlIGJhY2tncm91bmQgYW5kIG1ha2UKKyMg U3RhcnQgYSBzZXNzaW9uIHRvIHJ1biB0aGUgY2hlY2twb2ludCBpbiB0aGUgYmFja2dyb3Vu ZCBhbmQgbWFrZQogIyB0aGUgdGVzdCB3YWl0IG9uIHRoZSBpbmplY3Rpb24gcG9pbnQgc28g dGhlIGNoZWNrcG9pbnQgc3RvcHMganVzdCBhZnRlcgogIyBpdCBzdGFydHMuCi1teSAkY2hl Y2twb2ludCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kY2hlY2tw b2ludC0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8sCi0JcShcZWNo byBzdGFydGluZ19jaGVja3BvaW50Ci1jaGVja3BvaW50OwotKSk7CitteSAkY2hlY2twb2lu dCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRj aGVja3BvaW50LT5kb19hc3luYyhxKENIRUNLUE9JTlQ7KSk7CiAKICMgV2FpdCBmb3IgdGhl IGluaXRpYWwgcG9pbnQgdG8gZmluaXNoLCB0aGUgY2hlY2twb2ludGVyIGlzIHN0aWxsCiAj IG91dHNpZGUgaXRzIGNyaXRpY2FsIHNlY3Rpb24uICBUaGVuIHJlbGVhc2UgdG8gcmVhY2gg dGhlIHNlY29uZApAQCAtNzYsNyArNzMsOCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJcXtzZWxlY3QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2NyZWF0ZS1jaGVja3Bv aW50LXJ1bicpfSk7CiAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL2NoZWNrcG9pbnQgY29tcGxl dGUvLCAkbG9nX29mZnNldCk7CiAKLSRjaGVja3BvaW50LT5xdWl0OworJGNoZWNrcG9pbnQt PndhaXRfZm9yX2NvbXBsZXRpb247CiskY2hlY2twb2ludC0+Y2xvc2U7CiAKICMgUmV0cmll dmUgdGhlIFdBTCBmaWxlIG5hbWVzIGZvciB0aGUgcmVkbyByZWNvcmQgYW5kIGNoZWNrcG9p bnQgcmVjb3JkLgogbXkgJHJlZG9fbHNuID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTFfZWZmZWN0aXZlX3dhbF9s ZXZlbC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93YWxfbGV2ZWwu cGwKaW5kZXggOTkxNDczNzI2YTkuLjI2Zjg4MGRhMjc5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWNvdmVyeS90LzA1MV9lZmZlY3RpdmVfd2FsX2xldmVsLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93YWxfbGV2ZWwucGwKQEAgLTYsNiArNiw3IEBA CiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0z NjcsMjAgKzM2OCwxNSBAQCBpZiAoICAgJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30g ZXEgJ3llcycKIAl0ZXN0X3dhbF9sZXZlbCgkcHJpbWFyeSwgInJlcGxpY2F8cmVwbGljYSIs CiAJCSJlZmZlY3RpdmVfd2FsX2xldmVsIGdvdCBkZWNyZWFzZWQgdG8gJ3JlcGxpY2EnIG9u IHByaW1hcnkiKTsKIAotCSMgU3RhcnQgYSBwc3FsIHNlc3Npb24gdG8gdGVzdCB0aGUgY2Fz ZSB3aGVyZSB0aGUgYWN0aXZhdGlvbiBwcm9jZXNzIGlzCisJIyBTdGFydCBhIHNlc3Npb24g dG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB0aGUgYWN0aXZhdGlvbiBwcm9jZXNzIGlzCiAJIyBp bnRlcnJ1cHRlZC4KLQlteSAkcHNxbF9jcmVhdGVfc2xvdCA9ICRwcmltYXJ5LT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJbXkgJHBzcWxfY3JlYXRlX3Nsb3QgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkcHJpbWFyeSk7CiAKLQkjIFN0YXJ0 IHRoZSBsb2dpY2FsIGRlY29kaW5nIGFjdGl2YXRpb24gcHJvY2VzcyB1cG9uIGNyZWF0aW5n IHRoZSBsb2dpY2FsCi0JIyBzbG90LCBidXQgaXQgd2lsbCB3YWl0IGR1ZSB0byB0aGUgaW5q ZWN0aW9uIHBvaW50LgotCSRwc3FsX2NyZWF0ZV9zbG90LT5xdWVyeV91bnRpbCgKLQkJcXIv Y3JlYXRlX3Nsb3RfY2FuY2VsZWQvLAotCQlxKFxlY2hvIGNyZWF0ZV9zbG90X2NhbmNlbGVk Ci1zZWxlY3QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKLXNlbGVjdCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0aW9uJywgJ3dhaXQn KTsKLXNlbGVjdCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzbG90X2Nh bmNlbGVkJywgJ3Bnb3V0cHV0Jyk7Ci1ccQotKSk7CisJIyBTZXQgdXAgdGhlIGluamVjdGlv biBwb2ludCBpbiB0aGlzIHNlc3Npb24gKHVzaW5nIHNldF9sb2NhbCBzbyBpdCBvbmx5CisJ IyBhZmZlY3RzIHRoaXMgc2Vzc2lvbiksIHRoZW4gc3RhcnQgdGhlIHNsb3QgY3JlYXRpb24g d2hpY2ggd2lsbCBibG9jay4KKwkkcHNxbF9jcmVhdGVfc2xvdC0+ZG8ocXtzZWxlY3QgaW5q ZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKX0pOworCSRwc3FsX2NyZWF0ZV9zbG90LT5kbyhx e3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbG9naWNhbC1kZWNvZGluZy1hY3Rp dmF0aW9uJywgJ3dhaXQnKX0pOworCSRwc3FsX2NyZWF0ZV9zbG90LT5kb19hc3luYyhxe3Nl bGVjdCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdzbG90X2NhbmNlbGVk JywgJ3Bnb3V0cHV0Jyl9KTsKIAogCSRwcmltYXJ5LT53YWl0X2Zvcl9ldmVudCgnY2xpZW50 IGJhY2tlbmQnLCAnbG9naWNhbC1kZWNvZGluZy1hY3RpdmF0aW9uJyk7CiAJbm90ZSgiaW5q ZWN0aW9uX3BvaW50ICdsb2dpY2FsLWRlY29kaW5nLWFjdGl2YXRpb24nIGlzIHJlYWNoZWQi KTsKQEAgLTM5Nyw2ICszOTMsOSBAQCBzZWxlY3QgcGdfY2FuY2VsX2JhY2tlbmQocGlkKSBm cm9tIHBnX3N0YXRfYWN0aXZpdHkgd2hlcmUgcXVlcnkgfiAnc2xvdF9jYW5jZWxlZAogCSRw cmltYXJ5LT53YWl0X2Zvcl9sb2coImFib3J0aW5nIGxvZ2ljYWwgZGVjb2RpbmcgYWN0aXZh dGlvbiBwcm9jZXNzIik7CiAJdGVzdF93YWxfbGV2ZWwoJHByaW1hcnksICJyZXBsaWNhfHJl cGxpY2EiLAogCQkidGhlIGFjdGl2YXRpb24gcHJvY2VzcyBhYm9ydGVkIik7CisKKwkjIENs ZWFuIHVwIHRoZSBzZXNzaW9uICh0aGUgYXN5bmMgcXVlcnkgd2FzIGNhbmNlbGxlZCwgc28g d2UganVzdCBjbG9zZSkKKwkkcHNxbF9jcmVhdGVfc2xvdC0+Y2xvc2U7CiB9CiAKICRwcmlt YXJ5LT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXgg YWM5NmJjM2YwMDkuLjQxNzY1ZmFlYTM0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx NV9zdHJlYW0ucGwKQEAgLTUsNiArNSw3IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdz IEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0zMCwxOCArMzEsMTcgQEAgc3ViIHRlc3Rfc3Ry ZWFtaW5nCiAJIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhj ZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogCW15ICRvZmZzZXQgPSAwOwogCi0JbXkgJGggPSAk bm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9z dG9wID0+IDApOworCW15ICRoID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5v ZGU9PiRub2RlX3B1Ymxpc2hlcik7CiAKIAkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KIAkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK IAotCSRoLT5xdWVyeV9zYWZlKAotCQlxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBzaGEyNTYoaTo6dGV4dDo6Ynl0ZWEpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gc2hhMjU2KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7Ci0JfSk7CisJJGgtPmRvKAorCQknQkVHSU4nLAorCQknSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIHNoYTI1NihpOjp0ZXh0OjpieXRlYSkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKScsCisJCSdVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBz aGEyNTYoYikgV0hFUkUgbW9kKGEsMikgPSAwJywKKwkJJ0RFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMCcsCisJKTsKIAogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtNTEsOSArNTEsOSBAQCBzdWIgdGVzdF9zdHJl YW1pbmcKIAlDT01NSVQ7CiAJfSk7CiAKLQkkaC0+cXVlcnlfc2FmZSgnQ09NTUlUJyk7CisJ JGgtPmRvKCdDT01NSVQnKTsKIAkjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQotCSRoLT5xdWl0OworCSRoLT5jbG9zZTsKIAogCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKQEAgLTIxMSwxNCAr MjExLDE0IEBAICRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CiAKICMgSW50ZXJsZWF2ZSBh IHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4K LW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywg b25fZXJyb3Jfc3RvcCA9PiAwKTsKK215ICRoID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGVfcHVibGlzaGVyKTsKIAogIyBDb25maXJtIGlmIGEgZGVh ZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVs IGFwcGx5CiAjIHdvcmtlciBjYW4gYmUgZGV0ZWN0ZWQuCiAKIG15ICRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogCi0kaC0+cXVlcnlfc2FmZSgKKyRoLT5kbygK IAlxewogQkVHSU47CiBJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CkBAIC0yMzIsOCArMjMyLDggQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWJfMiB2YWx1ZXMoMSkiKTsKIAot JGgtPnF1ZXJ5X3NhZmUoJ0NPTU1JVCcpOwotJGgtPnF1aXQ7CiskaC0+ZG8oJ0NPTU1JVCcp OworJGgtPmNsb3NlOwogCiAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvRVJS T1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKIAkkb2Zmc2V0KTsKQEAg LTI2MCw3ICsyNjAsOCBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKICMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgogJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAKLSRoLT5xdWVyeV9zYWZlKAorJGgt PnJlY29ubmVjdDsKKyRoLT5kbygKIAlxewogQkVHSU47CiBJTlNFUlQgSU5UTyB0ZXN0X3Rh Yl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CkBAIC0y NzUsOCArMjc2LDggQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiSU5TRVJUIElOVE8gdGVzdF90 YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIik7CiAK LSRoLT5xdWVyeV9zYWZlKCdDT01NSVQnKTsKLSRoLT5xdWl0OworJGgtPmRvKCdDT01NSVQn KTsKKyRoLT5jbG9zZTsKIAogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBkZWFkbG9jayBkZXRlY3RlZC8sCiAJJG9mZnNldCk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzVfY29uZmxpY3RzLnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbAppbmRleCA0MjZhZDc0 Y2YzMy4uODM0MjI2ZjhlNDcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNV9jb25mbGljdHMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2Nv bmZsaWN0cy5wbApAQCAtNCw2ICs0LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTQ1NiwxNyArNDU3LDE0IEBAIGlmICgkaW5qZWN0 aW9uX3BvaW50c19zdXBwb3J0ZWQgIT0gMCkKIAogCSMgU3RhcnQgYSBiYWNrZ3JvdW5kIHNl c3Npb24gb24gdGhlIHB1Ymxpc2hlciBub2RlIHRvIHBlcmZvcm0gYW4gdXBkYXRlIGFuZAog CSMgcGF1c2UgYXQgdGhlIGluamVjdGlvbiBwb2ludC4KLQlteSAkcHViX3Nlc3Npb24gPSAk bm9kZV9CLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJHB1Yl9zZXNzaW9uLT5x dWVyeV91bnRpbCgKLQkJcXIvc3RhcnRpbmdfYmdfcHNxbC8sCi0JCXF7Ci0JCQlcZWNobyBz dGFydGluZ19iZ19wc3FsCi0JCQlCRUdJTjsKLQkJCVVQREFURSB0YWIgU0VUIGIgPSAyIFdI RVJFIGEgPSAxOwotCQkJUFJFUEFSRSBUUkFOU0FDVElPTiAndHhuX3dpdGhfbGF0ZXJfY29t bWl0X3RzJzsKLQkJCUNPTU1JVCBQUkVQQVJFRCAndHhuX3dpdGhfbGF0ZXJfY29tbWl0X3Rz JzsKLQkJfQorCW15ICRwdWJfc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24t Pm5ldyhub2RlID0+ICRub2RlX0IpOworCSRwdWJfc2Vzc2lvbi0+ZG8oCisJCXF7QkVHSU59 LAorCQlxe1VQREFURSB0YWIgU0VUIGIgPSAyIFdIRVJFIGEgPSAxfSwKKwkJcXtQUkVQQVJF IFRSQU5TQUNUSU9OICd0eG5fd2l0aF9sYXRlcl9jb21taXRfdHMnfQogCSk7CisJIyBDT01N SVQgUFJFUEFSRUQgd2lsbCBibG9jayBvbiB0aGUgaW5qZWN0aW9uIHBvaW50CisJJHB1Yl9z ZXNzaW9uLT5kb19hc3luYyhxe0NPTU1JVCBQUkVQQVJFRCAndHhuX3dpdGhfbGF0ZXJfY29t bWl0X3RzJ30pOwogCiAJIyBXYWl0IHVudGlsIHRoZSBiYWNrZW5kIGVudGVycyB0aGUgaW5q ZWN0aW9uIHBvaW50CiAJJG5vZGVfQi0+d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5k JywgJ2NvbW1pdC1hZnRlci1kZWxheS1jaGVja3BvaW50Jyk7CkBAIC01MTksOCArNTE3LDkg QEAgaWYgKCRpbmplY3Rpb25fcG9pbnRzX3N1cHBvcnRlZCAhPSAwKQogCQkgU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdjb21taXQtYWZ0ZXItZGVsYXktY2hlY2twb2ludCcp OyIKIAkpOwogCi0JIyBDbG9zZSB0aGUgYmFja2dyb3VuZCBzZXNzaW9uIG9uIHRoZSBwdWJs aXNoZXIgbm9kZQotCW9rKCRwdWJfc2Vzc2lvbi0+cXVpdCwgImNsb3NlIHB1Ymxpc2hlciBz ZXNzaW9uIik7CisJIyBXYWl0IGZvciB0aGUgYXN5bmMgcXVlcnkgdG8gY29tcGxldGUgYW5k IGNsb3NlIHRoZSBiYWNrZ3JvdW5kIHNlc3Npb24KKwkkcHViX3Nlc3Npb24tPndhaXRfZm9y X2NvbXBsZXRpb247CisJJHB1Yl9zZXNzaW9uLT5jbG9zZTsKIAogCSMgQ29uZmlybSB0aGF0 IHRoZSB0cmFuc2FjdGlvbiBjb21taXR0ZWQKIAkkcmVzdWx0ID0K --------------hLJ5OToSG6ORqbtG1inw0mlF--