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 1wUUPJ-001C94-1q for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jun 2026 19:04:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wUUPI-00Fir5-0z for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jun 2026 19:04:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wUUPH-00Fiqw-2O for pgsql-hackers@lists.postgresql.org; Tue, 02 Jun 2026 19:04:07 +0000 Received: from mail-qk1-x736.google.com ([2607:f8b0:4864:20::736]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wUUPC-00000000uWS-0HUZ for pgsql-hackers@postgresql.org; Tue, 02 Jun 2026 19:04:06 +0000 Received: by mail-qk1-x736.google.com with SMTP id af79cd13be357-9157d3f2098so119936085a.3 for ; Tue, 02 Jun 2026 12:04:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20251104.gappssmtp.com; s=20251104; t=1780427040; x=1781031840; darn=postgresql.org; h=in-reply-to:autocrypt:content-language:references:cc:to:from :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=QZ1NxsEHNHMffG3qmFLtToK6sWm84TMq8vlgaErVEqQ=; b=R/BCrBZDsr8LQvBPEfeyUEHAGJWOrZiFLVul+m436flLqreikiljymn7ah3dna32C5 8+GGHVvAC4Mz+Oz7JfGZbO8yE6tn1bu98d1C/zYDFT1Nlrr4SdGLTE6Rtgn0RJlVILM4 NuXbg7MhcvIJ/+1GnkrXg5E5Dnt6Mn2D2t3NIihHm9DPIuqhwOEJb2YWFhCW2y6l4tcH uZKFVerZkcqD2iQxCqpjfnWWpimuaaV+3gGC9L4i9GjjfurpEvs0rLbY9Dwt9mV5k54D IbnmnOvN6BRscdmt5gliqERx73aqyNamSCd85KTH57Nn1itEPkwDqTN5T1MDJoV6mcIO es2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780427040; x=1781031840; h=in-reply-to:autocrypt:content-language:references:cc:to:from :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=QZ1NxsEHNHMffG3qmFLtToK6sWm84TMq8vlgaErVEqQ=; b=kb/GjMw6gHEL5hol4POiV9F3AvJOX5BVOFAf+qsFGxyTFc8ggqlfuaLRmejdNVuLhv Adp6IW1/h8AGk5ViwGgx7sVrwHDr1d3wo4lHPy+qYTXSYdRZ4R0gZKE8W3IJZIqH1d2k IYTwylSrg311LQWsSLew4rIwgTyBZKbudPWCpbBj6kJ4vXiMtzLQqLl6j9gtA9d7fOuL VO3m4h1YLweRjUR7aD4+Pi2pDEq02WkGR0+UdDu/AthX3Yud0nl4xHvOjj5r4/kIzBQP Fz087B5gzHWq/xkQ0Y51kQzQy8Bk/2qRXW61XqcGQdiv5CedOpYTlM68A8BnmUdPWylg cZCA== X-Gm-Message-State: AOJu0Yzi7Nq/9aOtY1fWC7XkrxXTsLHxI3D0TZynUtVsdGNIW7bvtxAG hLrZGZzTTEKYhfPqBu8xwr9iCjpW5ffBruP8iOpqE2cixPMS6gr64rwbatJtHJgHCmuQjHUjZk3 jWFZw X-Gm-Gg: Acq92OEowmJmJ35eIROeJ9IQp8kCdlW/57jQvl+jyfe6guHDO88Pog9UUuP3EjZGvsy vAZB8deppErYBg5j43g/+tZtzrrNmSdxLRntjzCxo+LVdmKNe44fppTYpd3Hg08M3RCkPEcto71 4pAHPRPf7yEcHbE6uhleAAvjpdA8y+QCIYlJVzI5Kll5zbmGzekm1y34hfIQzRnU6DPrOFoIv8I PdKDNflacfuvHRIDtarOMFSSNk3XBK3WH95pFQ7qUswjTc84oeZmJNNuyb8YEzKsgr5WvCvcK9v rsZe4AcQzzEkkWq/5QTrk0H6CGjZReOBUAVFi2n864AHNtaEtGABXWKoe8DfVFrUaAEUSwA2DBF EUF9OKqsaWcFUX9hl+nvYovWQAjdnF6N5DXfyfHk87Ty097Vn1D3QQfH729dUlJUYrKVCCnRmYN NCQ2vacm3yJiSzMfLawu1PvY9kb4s5DgPZKM/hbcrO X-Received: by 2002:a05:620a:4610:b0:915:7ecf:86eb with SMTP id af79cd13be357-9158a7a4d5bmr56958585a.30.1780427039728; Tue, 02 Jun 2026 12:03:59 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id af79cd13be357-9158a381abfsm25430885a.27.2026.06.02.12.03.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 02 Jun 2026 12:03:58 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------6iQoF3MkVh7mSGjIgCVULhlm" Message-ID: Date: Tue, 2 Jun 2026 15:03:57 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BackgroundPsql swallowing errors on windows From: Andrew Dunstan 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> <1880b789-cb54-4162-ae19-9eb29fabc8da@dunslane.net> 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: <1880b789-cb54-4162-ae19-9eb29fabc8da@dunslane.net> 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. --------------6iQoF3MkVh7mSGjIgCVULhlm Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2026-02-18 We 2:41 PM, Andrew Dunstan wrote: > > 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. > > > Here is v12. I removed the XS variant in this version, which makes things simpler. We can restore it if necessary. Patch 1 adds the new framework Patch 2 adapts Cluster.pm to it, as well as handling some instability at global destruction time that was exacerbated by using FFI::Platypus. Patch 3 makes improvements in the individual TAP tests using the framework, including removing every one of the calls to background_psql(). I'm going to add this to the CF and will start testing (again) on Windows. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------6iQoF3MkVh7mSGjIgCVULhlm Content-Type: text/x-patch; charset=UTF-8; name="v12-0001-Add-PostgreSQL-Test-Session-for-libpq-based-TAP-.patch" Content-Disposition: attachment; filename*0="v12-0001-Add-PostgreSQL-Test-Session-for-libpq-based-TAP-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhNDI4YzVmOGUxOTQ1OTVjZDZhOGQ4ZmZjYTc5YTkxODliYzhhYTlmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAyIEp1biAyMDI2IDExOjI3OjM4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMS8zXSBBZGQgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiBmb3IgbGlicHEt YmFzZWQgVEFQCiB0ZXN0IHNlc3Npb25zCgpJbnRyb2R1Y2UgYSBzZXNzaW9uIG9iamVjdCBm b3IgVEFQIHRlc3RzIHRoYXQgdGFsa3MgdG8gdGhlIHNlcnZlcgpkaXJlY3RseSB0aHJvdWdo IGxpYnBxIGluc3RlYWQgb2Ygc3Bhd25pbmcgYSBwc3FsIGNoaWxkIHByb2Nlc3MgZm9yCmVh Y2ggYmFja2dyb3VuZCBzZXNzaW9uLiAgQ29ubmVjdGluZyBpbi1wcm9jZXNzIGF2b2lkcyB0 aGUgb3ZlcmhlYWQgYW5kCmZyYWdpbGl0eSBvZiBkcml2aW5nIHBzcWwgb3ZlciBwaXBlcyBh bmQgZ2l2ZXMgdGVzdHMgc3luY2hyb25vdXMgYW5kCmFzeW5jaHJvbm91cyBxdWVyeSBpbnRl cmZhY2VzLCBub3RpY2UgY2FwdHVyZSwgYW5kIHBpcGVsaW5lZCBxdWVyaWVzLgoKbGlicHEg aXMgcmVhY2hlZCB0aHJvdWdoIGFuIEZGSTo6UGxhdHlwdXMgd3JhcHBlciwgc28gbm8gY29t cGlsZWQgWFMKbW9kdWxlIGlzIHJlcXVpcmVkLiAgVGhlIG5ldyBtb2R1bGVzIGFyZToKCiAg UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiAgLSB0aGUgbGlicHEgc2Vzc2lvbiBvYmplY3QK ICBQb3N0Z3JlU1FMOjpQcUZGSSAgICAgICAgICAtIEZGSSBiaW5kaW5ncyB0byBsaWJwcQog IFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzICAgIC0gbGlicHEgY29uc3RhbnRzCiAgUG9zdGdy ZVNRTDo6UEdUeXBlcyAgICAgICAgLSBsaWJwcSB0eXBlIE9JRCBkZWZpbml0aW9ucwogIFBv c3RncmVTUUw6OkZpbmRMaWIgICAgICAgIC0gbG9jYXRlIHRoZSBsaWJwcSBzaGFyZWQgbGli cmFyeQoKSW5zdGFsbCB0aGUgbmV3IG1vZHVsZXMgZnJvbSBib3RoIHRoZSBtYWtlIGFuZCBt ZXNvbiBidWlsZHMuCi0tLQogc3JjL3Rlc3QvcGVybC9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML0ZpbmRMaWIucG0gICAg ICB8ICAxNjQgKysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gICAg ICB8ICAzNTYgKysrKysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRz LnBtICB8ICAxODUgKysrKwogc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxRkZJLnBtICAg ICAgICB8ICA0MzcgKysrKysrKysrCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9T ZXNzaW9uLnBtIHwgMTA3NSArKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9wZXJs L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAgNSArCiA3IGZpbGVzIGNoYW5nZWQs IDIyMzIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9GaW5kTGliLnBtCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcGVy bC9Qb3N0Z3JlU1FML1BHVHlwZXMucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9w ZXJsL1Bvc3RncmVTUUwvUHFDb25zdGFudHMucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFGRkkucG0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcGVybC9NYWtlZmlsZSBiL3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUKaW5kZXggZmQ0 ZmRhZjcwMGIuLmQyMzRjYzU5NjA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL01ha2Vm aWxlCisrKyBiL3NyYy90ZXN0L3BlcmwvTWFrZWZpbGUKQEAgLTI1LDkgKzI1LDE0IEBAIGlu c3RhbGw6IGFsbCBpbnN0YWxsZGlycwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvUG9z dGdyZVNRTC9UZXN0L0tlcmJlcm9zLnBtICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRp cikvUG9zdGdyZVNRTC9UZXN0L0tlcmJlcm9zLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAkKHNy Y2RpcikvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gJyQoREVTVERJUikkKHBneHNkaXIp LyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbScKIAkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVGVzdC9CYWNrZ3JvdW5kUHNxbC5wbSAnJChERVNU RElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9CYWNrZ3JvdW5kUHNx bC5wbScKKwkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVGVzdC9TZXNz aW9uLnBtICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0 L1Nlc3Npb24ucG0nCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Qb3N0Z3JlU1FML1Rl c3QvQWRqdXN0RHVtcC5wbSAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3Rn cmVTUUwvVGVzdC9BZGp1c3REdW1wLnBtJwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2Rpcikv UG9zdGdyZVNRTC9UZXN0L0FkanVzdFVwZ3JhZGUucG0gJyQoREVTVERJUikkKHBneHNkaXIp LyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0VXBncmFkZS5wbScKIAkkKElOU1RB TExfREFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbSAnJChERVNURElSKSQo cGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVmVyc2lvbi5wbScKKwkkKElOU1RBTExf REFUQSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvRmluZExpYi5wbSAnJChERVNURElSKSQocGd4 c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvRmluZExpYi5wbScKKwkkKElOU1RBTExfREFU QSkgJChzcmNkaXIpL1Bvc3RncmVTUUwvUHFGRkkucG0gJyQoREVTVERJUikkKHBneHNkaXIp LyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1BxRkZJLnBtJworCSQoSU5TVEFMTF9EQVRBKSAkKHNy Y2RpcikvUG9zdGdyZVNRTC9QcUNvbnN0YW50cy5wbSAnJChERVNURElSKSQocGd4c2Rpcikv JChzdWJkaXIpL1Bvc3RncmVTUUwvUHFDb25zdGFudHMucG0nCisJJChJTlNUQUxMX0RBVEEp ICQoc3JjZGlyKS9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gJyQoREVTVERJUikkKHBneHNkaXIp LyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1BHVHlwZXMucG0nCiAKIHVuaW5zdGFsbDoKIAlybSAt ZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9VdGls cy5wbScKQEAgLTM2LDggKzQxLDEzIEBAIHVuaW5zdGFsbDoKIAlybSAtZiAnJChERVNURElS KSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9LZXJiZXJvcy5wbScKIAly bSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvVGVzdC9D bHVzdGVyLnBtJwogCXJtIC1mICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9z dGdyZVNRTC9UZXN0L0JhY2tncm91bmRQc3FsLnBtJworCXJtIC1mICckKERFU1RESVIpJChw Z3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0nCiAJcm0gLWYg JyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Qb3N0Z3JlU1FML1Rlc3QvQWRqdXN0 RHVtcC5wbScKIAlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3Rn cmVTUUwvVGVzdC9BZGp1c3RVcGdyYWRlLnBtJwogCXJtIC1mICckKERFU1RESVIpJChwZ3hz ZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9WZXJzaW9uLnBtJworCXJtIC1mICckKERFU1RE SVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9GaW5kTGliLnBtJworCXJtIC1m ICckKERFU1RESVIpJChwZ3hzZGlyKS8kKHN1YmRpcikvUG9zdGdyZVNRTC9QcUZGSS5wbScK KwlybSAtZiAnJChERVNURElSKSQocGd4c2RpcikvJChzdWJkaXIpL1Bvc3RncmVTUUwvUHFD b25zdGFudHMucG0nCisJcm0gLWYgJyQoREVTVERJUikkKHBneHNkaXIpLyQoc3ViZGlyKS9Q b3N0Z3JlU1FML1BHVHlwZXMucG0nCiAKIGVuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9w ZXJsL1Bvc3RncmVTUUwvRmluZExpYi5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9G aW5kTGliLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNDI5 MGM4NGM0ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9G aW5kTGliLnBtCkBAIC0wLDAgKzEsMTY0IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIw MjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKz1wb2QKKworPWhl YWQxIE5BTUUKKworUG9zdGdyZVNRTDo6RmluZExpYiAtIGZpbmQgc2hhcmVkIGxpYnJhcmll cyBmb3IgUG9zdGdyZVNRTCBUQVAgdGVzdHMKKworPWhlYWQxIFNZTk9QU0lTCisKKyAgdXNl IFBvc3RncmVTUUw6OkZpbmRMaWI7CisKKyAgbXkgJGxpYnBhdGggPSBmaW5kX2xpYl9vcl9k aWUoCisgICAgICBsaWIgICAgID0+ICdwcScsCisgICAgICBsaWJwYXRoID0+IFsnL3Vzci9s b2NhbC9wZ3NxbC9saWInXSwKKyAgKTsKKworPWhlYWQxIERFU0NSSVBUSU9OCisKK1RoaXMg bW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIG1lY2hhbmlzbSB0byBsb2NhdGUgc2hhcmVkIGxp YnJhcmllcywKK3VzZWQgYXMgYSBsaWdodHdlaWdodCByZXBsYWNlbWVudCBmb3IgQzxGRkk6 OkNoZWNrTGliPi4gSXQgc2VhcmNoZXMKK2ZvciBsaWJyYXJpZXMgaW4gc3BlY2lmaWVkIHBh dGhzIGFuZCBjb21tb24gc3lzdGVtIGxvY2F0aW9ucy4KKworPWhlYWQxIEVYUE9SVEVEIEZV TkNUSU9OUworCis9b3ZlcgorCis9aXRlbSBmaW5kX2xpYl9vcl9kaWUoJWFyZ3MpCisKK1Nl YXJjaGVzIGZvciBhIHNoYXJlZCBsaWJyYXJ5IGFuZCByZXR1cm5zIGl0cyBmdWxsIHBhdGgu IERpZXMgaWYgdGhlCitsaWJyYXJ5IGNhbm5vdCBiZSBmb3VuZC4KKworQXJndW1lbnRzOgor Cis9b3ZlcgorCis9aXRlbSBsaWIgPT4gJG5hbWUKKworUmVxdWlyZWQuIFRoZSBsaWJyYXJ5 IG5hbWUgd2l0aG91dCBwcmVmaXggb3Igc3VmZml4IChlLmcuLCBDPCdwcSc+IGZvcgorQzxs aWJwcS5zbz4pLgorCis9aXRlbSBsaWJwYXRoID0+IFxAcGF0aHMKKworT3B0aW9uYWwuIEFy cmF5IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmaXJzdC4KKworPWl0ZW0gc3lzdGVtcGF0 aCA9PiBcQHBhdGhzCisKK09wdGlvbmFsLiBJZiBzZXQgdG8gYW4gZW1wdHkgYXJyYXkgQzxb XT4sIHN5c3RlbSBwYXRocyB3aWxsIG5vdCBiZSBzZWFyY2hlZC4KKworPWJhY2sKKworPWJh Y2sKKworPWN1dAorCitwYWNrYWdlIFBvc3RncmVTUUw6OkZpbmRMaWI7CisKK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gcXcoYWxsKTsKKwordXNlIEV4cG9ydGVyIHF3 KGltcG9ydCk7Cit1c2UgRmlsZTo6U3BlYzsKK3VzZSBDb25maWc7CisKK291ciBARVhQT1JU ID0gcXcoZmluZF9saWJfb3JfZGllKTsKKworc3ViIGZpbmRfbGliX29yX2RpZQoreworCW15 ICVhcmdzID0gQF87CisKKwlteSAkbGlibmFtZSA9ICRhcmdze2xpYn0gb3IgZGllICJmaW5k X2xpYl9vcl9kaWU6ICdsaWInIGFyZ3VtZW50IHJlcXVpcmVkIjsKKwlteSAkbGlicGF0aCA9 ICRhcmdze2xpYnBhdGh9IC8vIFtdOworCW15ICRzeXN0ZW1wYXRoID0gJGFyZ3N7c3lzdGVt cGF0aH07CisKKwlteSBAc2VhcmNoX3BhdGhzID0gQCRsaWJwYXRoOworCisJIyBBZGQgc3lz dGVtIHBhdGhzIHVubGVzcyBleHBsaWNpdGx5IGRpc2FibGVkCisJdW5sZXNzIChkZWZpbmVk ICRzeXN0ZW1wYXRoICYmIHJlZigkc3lzdGVtcGF0aCkgZXEgJ0FSUkFZJyAmJiBAJHN5c3Rl bXBhdGggPT0gMCkKKwl7CisJCXB1c2ggQHNlYXJjaF9wYXRocywgX2dldF9zeXN0ZW1fbGli X3BhdGhzKCk7CisJfQorCisJIyBEZXRlcm1pbmUgbGlicmFyeSBmaWxlIHBhdHRlcm5zIGJh c2VkIG9uIE9TCisJbXkgQHBhdHRlcm5zID0gX2dldF9saWJfcGF0dGVybnMoJGxpYm5hbWUp OworCisJZm9yIG15ICRkaXIgKEBzZWFyY2hfcGF0aHMpCisJeworCQluZXh0IHVubGVzcyAt ZCAkZGlyOworCisJCWZvciBteSAkcGF0dGVybiAoQHBhdHRlcm5zKQorCQl7CisJCQlteSBA bWF0Y2hlcyA9IGdsb2IoRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyLCAkcGF0dGVybikpOwor CQkJZm9yIG15ICRtYXRjaCAoQG1hdGNoZXMpCisJCQl7CisJCQkJcmV0dXJuICRtYXRjaCBp ZiAtZiAkbWF0Y2ggJiYgLXIgJG1hdGNoOworCQkJfQorCQl9CisJfQorCisJZGllICJmaW5k X2xpYl9vcl9kaWU6IHVuYWJsZSB0byBmaW5kIGxpYiRsaWJuYW1lIGluOiAiIC4gam9pbigi LCAiLCBAc2VhcmNoX3BhdGhzKTsKK30KKworc3ViIF9nZXRfbGliX3BhdHRlcm5zCit7CisJ bXkgJGxpYm5hbWUgPSBzaGlmdDsKKworCWlmICgkXk8gZXEgJ2RhcndpbicpCisJeworCQly ZXR1cm4gKCJsaWIkbGlibmFtZS5keWxpYiIsICJsaWIkbGlibmFtZS4qLmR5bGliIik7CisJ fQorCWVsc2lmICgkXk8gZXEgJ01TV2luMzInIHx8ICReTyBlcSAnY3lnd2luJykKKwl7CisJ CXJldHVybiAoIiRsaWJuYW1lLmRsbCIsICJsaWIkbGlibmFtZS5kbGwiKTsKKwl9CisJZWxz ZQorCXsKKwkJIyBMaW51eCBhbmQgb3RoZXIgVW5peC1saWtlIHN5c3RlbXMKKwkJcmV0dXJu ICgibGliJGxpYm5hbWUuc28iLCAibGliJGxpYm5hbWUuc28uKiIpOworCX0KK30KKworc3Vi IF9nZXRfc3lzdGVtX2xpYl9wYXRocworeworCW15IEBwYXRoczsKKworCSMgQ29tbW9uIHN5 c3RlbSBsaWJyYXJ5IHBhdGhzCisJcHVzaCBAcGF0aHMsICcvdXNyL2xpYicsICcvdXNyL2xv Y2FsL2xpYicsICcvbGliJzsKKworCSMgQWRkIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBwYXRo cyBvbiBMaW51eAorCWlmICgkXk8gZXEgJ2xpbnV4JykKKwl7CisJCXB1c2ggQHBhdGhzLCAn L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudScsICcvdXNyL2xpYi9hYXJjaDY0LWxpbnV4LWdu dSc7CisJCXB1c2ggQHBhdGhzLCAnL3Vzci9saWI2NCcsICcvbGliNjQnOworCX0KKworCSMg QWRkIHBhdGhzIGZyb20gTERfTElCUkFSWV9QQVRICisJaWYgKCRFTlZ7TERfTElCUkFSWV9Q QVRIfSkKKwl7CisJCXB1c2ggQHBhdGhzLCBzcGxpdCgvOi8sICRFTlZ7TERfTElCUkFSWV9Q QVRIfSk7CisJfQorCisJIyBtYWNPUyBzcGVjaWZpYworCWlmICgkXk8gZXEgJ2Rhcndpbicp CisJeworCQlwdXNoIEBwYXRocywgJy9vcHQvaG9tZWJyZXcvbGliJywgJy91c3IvbG9jYWwv b3B0L2xpYnBxL2xpYic7CisJCWlmICgkRU5We0RZTERfTElCUkFSWV9QQVRIfSkKKwkJewor CQkJcHVzaCBAcGF0aHMsIHNwbGl0KC86LywgJEVOVntEWUxEX0xJQlJBUllfUEFUSH0pOwor CQl9CisJfQorCisJcmV0dXJuIEBwYXRoczsKK30KKworPXBvZAorCis9aGVhZDEgU0VFIEFM U08KKworTDxQb3N0Z3JlU1FMOjpQcUZGST4KKworPWN1dAorCisxOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BHVHlwZXMucG0gYi9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvUEdUeXBlcy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMmJjMDA3YzMyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvUEdUeXBlcy5wbQpAQCAtMCwwICsxLDM1NiBAQAorCisjIENvcHlyaWdodCAo YykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9 cG9kCisKKz1oZWFkMSBOQU1FCisKK1Bvc3RncmVTUUw6OlBHVHlwZXMgLSBQb3N0Z3JlU1FM IGJhY2tlbmQgdHlwZSBPSUQgY29uc3RhbnRzCisKKz1oZWFkMSBTWU5PUFNJUworCisgIHVz ZSBQb3N0Z3JlU1FMOjpQR1R5cGVzOworCisgIGlmICgkdHlwZV9vaWQgPT0gVEVYVE9JRCkg eyAuLi4gfQorCisgIGlmICgkdHlwZV9vaWQgPT0gSU5UNEFSUkFZT0lEKSB7IC4uLiB9CisK Kz1oZWFkMSBERVNDUklQVElPTgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBjb25zdGFudHMg Zm9yIFBvc3RncmVTUUwgYmFja2VuZCB0eXBlIE9JRHMsIGFzIGRlZmluZWQKK2luIEM8c3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ190eXBlX2QuaD4uIFRoZXNlIGNhbiBiZSB1c2VkIHRvIGlk ZW50aWZ5IGNvbHVtbgordHlwZXMgaW4gcXVlcnkgcmVzdWx0cyB2aWEgQzxQUWZ0eXBlKCk+ LgorCitBbGwgY29uc3RhbnRzIGFyZSBleHBvcnRlZCBieSBkZWZhdWx0LgorCis9aGVhZDEg RVhQT1JURUQgQ09OU1RBTlRTCisKKz1oZWFkMiBCYXNpYyBUeXBlcworCitDPEJPT0xPSUQ+ LCBDPEJZVEVBT0lEPiwgQzxDSEFST0lEPiwgQzxOQU1FT0lEPiwgQzxJTlQ4T0lEPiwgQzxJ TlQyT0lEPiwKK0M8SU5UMlZFQ1RPUk9JRD4sIEM8SU5UNE9JRD4sIEM8VEVYVE9JRD4sIEM8 T0lET0lEPiwgQzxUSURPSUQ+LCBDPFhJRE9JRD4sCitDPENJRE9JRD4sIEM8T0lEVkVDVE9S T0lEPiwgQzxKU09OT0lEPiwgQzxYTUxPSUQ+LCBDPFhJRDhPSUQ+LCBDPFBPSU5UT0lEPiwK K0M8TFNFR09JRD4sIEM8UEFUSE9JRD4sIEM8Qk9YT0lEPiwgQzxQT0xZR09OT0lEPiwgQzxM SU5FT0lEPiwgQzxGTE9BVDRPSUQ+LAorQzxGTE9BVDhPSUQ+LCBDPFVOS05PV05PSUQ+LCBD PENJUkNMRU9JRD4sIEM8TU9ORVlPSUQ+LCBDPE1BQ0FERFJPSUQ+LAorQzxJTkVUT0lEPiwg QzxDSURST0lEPiwgQzxNQUNBRERSOE9JRD4sIEM8QUNMSVRFTU9JRD4sIEM8QlBDSEFST0lE PiwKK0M8VkFSQ0hBUk9JRD4sIEM8REFURU9JRD4sIEM8VElNRU9JRD4sIEM8VElNRVNUQU1Q T0lEPiwgQzxUSU1FU1RBTVBUWk9JRD4sCitDPElOVEVSVkFMT0lEPiwgQzxUSU1FVFpPSUQ+ LCBDPEJJVE9JRD4sIEM8VkFSQklUT0lEPiwgQzxOVU1FUklDT0lEPiwKK0M8UkVGQ1VSU09S T0lEPiwgQzxVVUlET0lEPiwgQzxUU1ZFQ1RPUk9JRD4sIEM8R1RTVkVDVE9ST0lEPiwgQzxU U1FVRVJZT0lEPiwKK0M8SlNPTkJPSUQ+LCBDPEpTT05QQVRIT0lEPiwgQzxUWElEX1NOQVBT SE9UT0lEPgorCis9aGVhZDIgUmFuZ2UgVHlwZXMKKworQzxJTlQ0UkFOR0VPSUQ+LCBDPE5V TVJBTkdFT0lEPiwgQzxUU1JBTkdFT0lEPiwgQzxUU1RaUkFOR0VPSUQ+LAorQzxEQVRFUkFO R0VPSUQ+LCBDPElOVDhSQU5HRU9JRD4KKworPWhlYWQyIE11bHRpcmFuZ2UgVHlwZXMKKwor QzxJTlQ0TVVMVElSQU5HRU9JRD4sIEM8TlVNTVVMVElSQU5HRU9JRD4sIEM8VFNNVUxUSVJB TkdFT0lEPiwKK0M8VFNUWk1VTFRJUkFOR0VPSUQ+LCBDPERBVEVNVUxUSVJBTkdFT0lEPiwg QzxJTlQ4TVVMVElSQU5HRU9JRD4KKworPWhlYWQyIFBzZXVkbyBUeXBlcworCitDPFJFQ09S RE9JRD4sIEM8UkVDT1JEQVJSQVlPSUQ+LCBDPENTVFJJTkdPSUQ+LCBDPFZPSURPSUQ+LCBD PFRSSUdHRVJPSUQ+LAorQzxFVkVOVF9UUklHR0VST0lEPgorCis9aGVhZDIgQXJyYXkgVHlw ZXMKKworQXJyYXkgdHlwZSBPSURzIGZvbGxvdyB0aGUgcGF0dGVybiBDPHtCQVNFTkFNRX1B UlJBWU9JRD4sIGUuZy4sIEM8VEVYVEFSUkFZT0lEPiwKK0M8SU5UNEFSUkFZT0lEPiwgQzxK U09OQkFSUkFZT0lEPi4KKworPWN1dAorCitwYWNrYWdlIFBvc3RncmVTUUw6OlBHVHlwZXM7 CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gcXcoYWxsKTsKKwordXNl IEV4cG9ydGVyIHF3KGltcG9ydCk7CisKK291ciBARVhQT1JUID0gcXcoCisKKyAgQk9PTE9J RAorICBCWVRFQU9JRAorICBDSEFST0lECisgIE5BTUVPSUQKKyAgSU5UOE9JRAorICBJTlQy T0lECisgIElOVDJWRUNUT1JPSUQKKyAgSU5UNE9JRAorICBURVhUT0lECisgIE9JRE9JRAor ICBUSURPSUQKKyAgWElET0lECisgIENJRE9JRAorICBPSURWRUNUT1JPSUQKKyAgSlNPTk9J RAorICBYTUxPSUQKKyAgWElEOE9JRAorICBQT0lOVE9JRAorICBMU0VHT0lECisgIFBBVEhP SUQKKyAgQk9YT0lECisgIFBPTFlHT05PSUQKKyAgTElORU9JRAorICBGTE9BVDRPSUQKKyAg RkxPQVQ4T0lECisgIFVOS05PV05PSUQKKyAgQ0lSQ0xFT0lECisgIE1PTkVZT0lECisgIE1B Q0FERFJPSUQKKyAgSU5FVE9JRAorICBDSURST0lECisgIE1BQ0FERFI4T0lECisgIEFDTElU RU1PSUQKKyAgQlBDSEFST0lECisgIFZBUkNIQVJPSUQKKyAgREFURU9JRAorICBUSU1FT0lE CisgIFRJTUVTVEFNUE9JRAorICBUSU1FU1RBTVBUWk9JRAorICBJTlRFUlZBTE9JRAorICBU SU1FVFpPSUQKKyAgQklUT0lECisgIFZBUkJJVE9JRAorICBOVU1FUklDT0lECisgIFJFRkNV UlNPUk9JRAorICBVVUlET0lECisgIFRTVkVDVE9ST0lECisgIEdUU1ZFQ1RPUk9JRAorICBU U1FVRVJZT0lECisgIEpTT05CT0lECisgIEpTT05QQVRIT0lECisgIFRYSURfU05BUFNIT1RP SUQKKyAgSU5UNFJBTkdFT0lECisgIE5VTVJBTkdFT0lECisgIFRTUkFOR0VPSUQKKyAgVFNU WlJBTkdFT0lECisgIERBVEVSQU5HRU9JRAorICBJTlQ4UkFOR0VPSUQKKyAgSU5UNE1VTFRJ UkFOR0VPSUQKKyAgTlVNTVVMVElSQU5HRU9JRAorICBUU01VTFRJUkFOR0VPSUQKKyAgVFNU Wk1VTFRJUkFOR0VPSUQKKyAgREFURU1VTFRJUkFOR0VPSUQKKyAgSU5UOE1VTFRJUkFOR0VP SUQKKyAgUkVDT1JET0lECisgIFJFQ09SREFSUkFZT0lECisgIENTVFJJTkdPSUQKKyAgVk9J RE9JRAorICBUUklHR0VST0lECisgIEVWRU5UX1RSSUdHRVJPSUQKKworICBCT09MQVJSQVlP SUQKKyAgQllURUFBUlJBWU9JRAorICBDSEFSQVJSQVlPSUQKKyAgTkFNRUFSUkFZT0lECisg IElOVDhBUlJBWU9JRAorICBJTlQyQVJSQVlPSUQKKyAgSU5UMlZFQ1RPUkFSUkFZT0lECisg IElOVDRBUlJBWU9JRAorICBURVhUQVJSQVlPSUQKKyAgT0lEQVJSQVlPSUQKKyAgVElEQVJS QVlPSUQKKyAgWElEQVJSQVlPSUQKKyAgQ0lEQVJSQVlPSUQKKyAgT0lEVkVDVE9SQVJSQVlP SUQKKyAgSlNPTkFSUkFZT0lECisgIFhNTEFSUkFZT0lECisgIFhJRDhBUlJBWU9JRAorICBQ T0lOVEFSUkFZT0lECisgIExTRUdBUlJBWU9JRAorICBQQVRIQVJSQVlPSUQKKyAgQk9YQVJS QVlPSUQKKyAgUE9MWUdPTkFSUkFZT0lECisgIExJTkVBUlJBWU9JRAorICBGTE9BVDRBUlJB WU9JRAorICBGTE9BVDhBUlJBWU9JRAorICBDSVJDTEVBUlJBWU9JRAorICBNT05FWUFSUkFZ T0lECisgIE1BQ0FERFJBUlJBWU9JRAorICBJTkVUQVJSQVlPSUQKKyAgQ0lEUkFSUkFZT0lE CisgIE1BQ0FERFI4QVJSQVlPSUQKKyAgQUNMSVRFTUFSUkFZT0lECisgIEJQQ0hBUkFSUkFZ T0lECisgIFZBUkNIQVJBUlJBWU9JRAorICBEQVRFQVJSQVlPSUQKKyAgVElNRUFSUkFZT0lE CisgIFRJTUVTVEFNUEFSUkFZT0lECisgIFRJTUVTVEFNUFRaQVJSQVlPSUQKKyAgSU5URVJW QUxBUlJBWU9JRAorICBUSU1FVFpBUlJBWU9JRAorICBCSVRBUlJBWU9JRAorICBWQVJCSVRB UlJBWU9JRAorICBOVU1FUklDQVJSQVlPSUQKKyAgUkVGQ1VSU09SQVJSQVlPSUQKKyAgVVVJ REFSUkFZT0lECisgIFRTVkVDVE9SQVJSQVlPSUQKKyAgR1RTVkVDVE9SQVJSQVlPSUQKKyAg VFNRVUVSWUFSUkFZT0lECisgIEpTT05CQVJSQVlPSUQKKyAgSlNPTlBBVEhBUlJBWU9JRAor ICBUWElEX1NOQVBTSE9UQVJSQVlPSUQKKyAgSU5UNFJBTkdFQVJSQVlPSUQKKyAgTlVNUkFO R0VBUlJBWU9JRAorICBUU1JBTkdFQVJSQVlPSUQKKyAgVFNUWlJBTkdFQVJSQVlPSUQKKyAg REFURVJBTkdFQVJSQVlPSUQKKyAgSU5UOFJBTkdFQVJSQVlPSUQKKyAgSU5UNE1VTFRJUkFO R0VBUlJBWU9JRAorICBOVU1NVUxUSVJBTkdFQVJSQVlPSUQKKyAgVFNNVUxUSVJBTkdFQVJS QVlPSUQKKyAgVFNUWk1VTFRJUkFOR0VBUlJBWU9JRAorICBEQVRFTVVMVElSQU5HRUFSUkFZ T0lECisgIElOVDhNVUxUSVJBTkdFQVJSQVlPSUQKKyAgQ1NUUklOR0FSUkFZT0lECisKKyk7 CisKK3VzZSBjb25zdGFudCB7CisJQk9PTE9JRCAgICAgICAgICAgICAgICAgPT4gMTYsCisJ QllURUFPSUQgICAgICAgICAgICAgICAgPT4gMTcsCisJQ0hBUk9JRCAgICAgICAgICAgICAg ICAgPT4gMTgsCisJTkFNRU9JRCAgICAgICAgICAgICAgICAgPT4gMTksCisJSU5UOE9JRCAg ICAgICAgICAgICAgICAgPT4gMjAsCisJSU5UMk9JRCAgICAgICAgICAgICAgICAgPT4gMjEs CisJSU5UMlZFQ1RPUk9JRCAgICAgICAgICAgPT4gMjIsCisJSU5UNE9JRCAgICAgICAgICAg ICAgICAgPT4gMjMsCisJVEVYVE9JRCAgICAgICAgICAgICAgICAgPT4gMjUsCisJT0lET0lE ICAgICAgICAgICAgICAgICAgPT4gMjYsCisJVElET0lEICAgICAgICAgICAgICAgICAgPT4g MjcsCisJWElET0lEICAgICAgICAgICAgICAgICAgPT4gMjgsCisJQ0lET0lEICAgICAgICAg ICAgICAgICAgPT4gMjksCisJT0lEVkVDVE9ST0lEICAgICAgICAgICAgPT4gMzAsCisJSlNP Tk9JRCAgICAgICAgICAgICAgICAgPT4gMTE0LAorCVhNTE9JRCAgICAgICAgICAgICAgICAg ID0+IDE0MiwKKwlYSUQ4T0lEICAgICAgICAgICAgICAgICA9PiA1MDY5LAorCVBPSU5UT0lE ICAgICAgICAgICAgICAgID0+IDYwMCwKKwlMU0VHT0lEICAgICAgICAgICAgICAgICA9PiA2 MDEsCisJUEFUSE9JRCAgICAgICAgICAgICAgICAgPT4gNjAyLAorCUJPWE9JRCAgICAgICAg ICAgICAgICAgID0+IDYwMywKKwlQT0xZR09OT0lEICAgICAgICAgICAgICA9PiA2MDQsCisJ TElORU9JRCAgICAgICAgICAgICAgICAgPT4gNjI4LAorCUZMT0FUNE9JRCAgICAgICAgICAg ICAgID0+IDcwMCwKKwlGTE9BVDhPSUQgICAgICAgICAgICAgICA9PiA3MDEsCisJVU5LTk9X Tk9JRCAgICAgICAgICAgICAgPT4gNzA1LAorCUNJUkNMRU9JRCAgICAgICAgICAgICAgID0+ IDcxOCwKKwlNT05FWU9JRCAgICAgICAgICAgICAgICA9PiA3OTAsCisJTUFDQUREUk9JRCAg ICAgICAgICAgICAgPT4gODI5LAorCUlORVRPSUQgICAgICAgICAgICAgICAgID0+IDg2OSwK KwlDSURST0lEICAgICAgICAgICAgICAgICA9PiA2NTAsCisJTUFDQUREUjhPSUQgICAgICAg ICAgICAgPT4gNzc0LAorCUFDTElURU1PSUQgICAgICAgICAgICAgID0+IDEwMzMsCisJQlBD SEFST0lEICAgICAgICAgICAgICAgPT4gMTA0MiwKKwlWQVJDSEFST0lEICAgICAgICAgICAg ICA9PiAxMDQzLAorCURBVEVPSUQgICAgICAgICAgICAgICAgID0+IDEwODIsCisJVElNRU9J RCAgICAgICAgICAgICAgICAgPT4gMTA4MywKKwlUSU1FU1RBTVBPSUQgICAgICAgICAgICA9 PiAxMTE0LAorCVRJTUVTVEFNUFRaT0lEICAgICAgICAgID0+IDExODQsCisJSU5URVJWQUxP SUQgICAgICAgICAgICAgPT4gMTE4NiwKKwlUSU1FVFpPSUQgICAgICAgICAgICAgICA9PiAx MjY2LAorCUJJVE9JRCAgICAgICAgICAgICAgICAgID0+IDE1NjAsCisJVkFSQklUT0lEICAg ICAgICAgICAgICAgPT4gMTU2MiwKKwlOVU1FUklDT0lEICAgICAgICAgICAgICA9PiAxNzAw LAorCVJFRkNVUlNPUk9JRCAgICAgICAgICAgID0+IDE3OTAsCisJVVVJRE9JRCAgICAgICAg ICAgICAgICAgPT4gMjk1MCwKKwlUU1ZFQ1RPUk9JRCAgICAgICAgICAgICA9PiAzNjE0LAor CUdUU1ZFQ1RPUk9JRCAgICAgICAgICAgID0+IDM2NDIsCisJVFNRVUVSWU9JRCAgICAgICAg ICAgICAgPT4gMzYxNSwKKwlKU09OQk9JRCAgICAgICAgICAgICAgICA9PiAzODAyLAorCUpT T05QQVRIT0lEICAgICAgICAgICAgID0+IDQwNzIsCisJVFhJRF9TTkFQU0hPVE9JRCAgICAg ICAgPT4gMjk3MCwKKwlJTlQ0UkFOR0VPSUQgICAgICAgICAgICA9PiAzOTA0LAorCU5VTVJB TkdFT0lEICAgICAgICAgICAgID0+IDM5MDYsCisJVFNSQU5HRU9JRCAgICAgICAgICAgICAg PT4gMzkwOCwKKwlUU1RaUkFOR0VPSUQgICAgICAgICAgICA9PiAzOTEwLAorCURBVEVSQU5H RU9JRCAgICAgICAgICAgID0+IDM5MTIsCisJSU5UOFJBTkdFT0lEICAgICAgICAgICAgPT4g MzkyNiwKKwlJTlQ0TVVMVElSQU5HRU9JRCAgICAgICA9PiA0NDUxLAorCU5VTU1VTFRJUkFO R0VPSUQgICAgICAgID0+IDQ1MzIsCisJVFNNVUxUSVJBTkdFT0lEICAgICAgICAgPT4gNDUz MywKKwlUU1RaTVVMVElSQU5HRU9JRCAgICAgICA9PiA0NTM0LAorCURBVEVNVUxUSVJBTkdF T0lEICAgICAgID0+IDQ1MzUsCisJSU5UOE1VTFRJUkFOR0VPSUQgICAgICAgPT4gNDUzNiwK KwlSRUNPUkRPSUQgICAgICAgICAgICAgICA9PiAyMjQ5LAorCVJFQ09SREFSUkFZT0lEICAg ICAgICAgID0+IDIyODcsCisJQ1NUUklOR09JRCAgICAgICAgICAgICAgPT4gMjI3NSwKKwlW T0lET0lEICAgICAgICAgICAgICAgICA9PiAyMjc4LAorCVRSSUdHRVJPSUQgICAgICAgICAg ICAgID0+IDIyNzksCisJRVZFTlRfVFJJR0dFUk9JRCAgICAgICAgPT4gMzgzOCwKKworCUJP T0xBUlJBWU9JRCAgICAgICAgICAgID0+IDEwMDAsCisJQllURUFBUlJBWU9JRCAgICAgICAg ICAgPT4gMTAwMSwKKwlDSEFSQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDAyLAorCU5BTUVB UlJBWU9JRCAgICAgICAgICAgID0+IDEwMDMsCisJSU5UOEFSUkFZT0lEICAgICAgICAgICAg PT4gMTAxNiwKKwlJTlQyQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDA1LAorCUlOVDJWRUNU T1JBUlJBWU9JRCAgICAgID0+IDEwMDYsCisJSU5UNEFSUkFZT0lEICAgICAgICAgICAgPT4g MTAwNywKKwlURVhUQVJSQVlPSUQgICAgICAgICAgICA9PiAxMDA5LAorCU9JREFSUkFZT0lE ICAgICAgICAgICAgID0+IDEwMjgsCisJVElEQVJSQVlPSUQgICAgICAgICAgICAgPT4gMTAx MCwKKwlYSURBUlJBWU9JRCAgICAgICAgICAgICA9PiAxMDExLAorCUNJREFSUkFZT0lEICAg ICAgICAgICAgID0+IDEwMTIsCisJT0lEVkVDVE9SQVJSQVlPSUQgICAgICAgPT4gMTAxMywK KwlKU09OQVJSQVlPSUQgICAgICAgICAgICA9PiAxOTksCisJWE1MQVJSQVlPSUQgICAgICAg ICAgICAgPT4gMTQzLAorCVhJRDhBUlJBWU9JRCAgICAgICAgICAgID0+IDI3MSwKKwlQT0lO VEFSUkFZT0lEICAgICAgICAgICA9PiAxMDE3LAorCUxTRUdBUlJBWU9JRCAgICAgICAgICAg ID0+IDEwMTgsCisJUEFUSEFSUkFZT0lEICAgICAgICAgICAgPT4gMTAxOSwKKwlCT1hBUlJB WU9JRCAgICAgICAgICAgICA9PiAxMDIwLAorCVBPTFlHT05BUlJBWU9JRCAgICAgICAgID0+ IDEwMjcsCisJTElORUFSUkFZT0lEICAgICAgICAgICAgPT4gNjI5LAorCUZMT0FUNEFSUkFZ T0lEICAgICAgICAgID0+IDEwMjEsCisJRkxPQVQ4QVJSQVlPSUQgICAgICAgICAgPT4gMTAy MiwKKwlDSVJDTEVBUlJBWU9JRCAgICAgICAgICA9PiA3MTksCisJTU9ORVlBUlJBWU9JRCAg ICAgICAgICAgPT4gNzkxLAorCU1BQ0FERFJBUlJBWU9JRCAgICAgICAgID0+IDEwNDAsCisJ SU5FVEFSUkFZT0lEICAgICAgICAgICAgPT4gMTA0MSwKKwlDSURSQVJSQVlPSUQgICAgICAg ICAgICA9PiA2NTEsCisJTUFDQUREUjhBUlJBWU9JRCAgICAgICAgPT4gNzc1LAorCUFDTElU RU1BUlJBWU9JRCAgICAgICAgID0+IDEwMzQsCisJQlBDSEFSQVJSQVlPSUQgICAgICAgICAg PT4gMTAxNCwKKwlWQVJDSEFSQVJSQVlPSUQgICAgICAgICA9PiAxMDE1LAorCURBVEVBUlJB WU9JRCAgICAgICAgICAgID0+IDExODIsCisJVElNRUFSUkFZT0lEICAgICAgICAgICAgPT4g MTE4MywKKwlUSU1FU1RBTVBBUlJBWU9JRCAgICAgICA9PiAxMTE1LAorCVRJTUVTVEFNUFRa QVJSQVlPSUQgICAgID0+IDExODUsCisJSU5URVJWQUxBUlJBWU9JRCAgICAgICAgPT4gMTE4 NywKKwlUSU1FVFpBUlJBWU9JRCAgICAgICAgICA9PiAxMjcwLAorCUJJVEFSUkFZT0lEICAg ICAgICAgICAgID0+IDE1NjEsCisJVkFSQklUQVJSQVlPSUQgICAgICAgICAgPT4gMTU2MywK KwlOVU1FUklDQVJSQVlPSUQgICAgICAgICA9PiAxMjMxLAorCVJFRkNVUlNPUkFSUkFZT0lE ICAgICAgID0+IDIyMDEsCisJVVVJREFSUkFZT0lEICAgICAgICAgICAgPT4gMjk1MSwKKwlU U1ZFQ1RPUkFSUkFZT0lEICAgICAgICA9PiAzNjQzLAorCUdUU1ZFQ1RPUkFSUkFZT0lEICAg ICAgID0+IDM2NDQsCisJVFNRVUVSWUFSUkFZT0lEICAgICAgICAgPT4gMzY0NSwKKwlKU09O QkFSUkFZT0lEICAgICAgICAgICA9PiAzODA3LAorCUpTT05QQVRIQVJSQVlPSUQgICAgICAg ID0+IDQwNzMsCisJVFhJRF9TTkFQU0hPVEFSUkFZT0lEICAgPT4gMjk0OSwKKwlJTlQ0UkFO R0VBUlJBWU9JRCAgICAgICA9PiAzOTA1LAorCU5VTVJBTkdFQVJSQVlPSUQgICAgICAgID0+ IDM5MDcsCisJVFNSQU5HRUFSUkFZT0lEICAgICAgICAgPT4gMzkwOSwKKwlUU1RaUkFOR0VB UlJBWU9JRCAgICAgICA9PiAzOTExLAorCURBVEVSQU5HRUFSUkFZT0lEICAgICAgID0+IDM5 MTMsCisJSU5UOFJBTkdFQVJSQVlPSUQgICAgICAgPT4gMzkyNywKKwlJTlQ0TVVMVElSQU5H RUFSUkFZT0lEICA9PiA2MTUwLAorCU5VTU1VTFRJUkFOR0VBUlJBWU9JRCAgID0+IDYxNTEs CisJVFNNVUxUSVJBTkdFQVJSQVlPSUQgICAgPT4gNjE1MiwKKwlUU1RaTVVMVElSQU5HRUFS UkFZT0lEICA9PiA2MTUzLAorCURBVEVNVUxUSVJBTkdFQVJSQVlPSUQgID0+IDYxNTUsCisJ SU5UOE1VTFRJUkFOR0VBUlJBWU9JRCAgPT4gNjE1NywKKwlDU1RSSU5HQVJSQVlPSUQgICAg ICAgICA9PiAxMjYzLAorfTsKKworPXBvZAorCis9aGVhZDEgU0VFIEFMU08KKworTDxQb3N0 Z3JlU1FMOjpQcUZGST4sIEw8UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbj4KKworPWN1dAor CisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRz LnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1BxQ29uc3RhbnRzLnBtCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mODE5MTNiNTgwYQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUNvbnN0YW50cy5wbQpAQCAt MCwwICsxLDE4NSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCis9cG9kCisKKz1oZWFkMSBOQU1FCisKK1Bv c3RncmVTUUw6OlBxQ29uc3RhbnRzIC0gbGlicHEgY29uc3RhbnRzIGZvciBQb3N0Z3JlU1FM IFRBUCB0ZXN0cworCis9aGVhZDEgU1lOT1BTSVMKKworICB1c2UgUG9zdGdyZVNRTDo6UHFD b25zdGFudHM7CisKKyAgaWYgKFBRc3RhdHVzKCRjb25uKSA9PSBDT05ORUNUSU9OX09LKSB7 IC4uLiB9CisKKyAgaWYgKFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpID09IFBHUkVTX1RVUExF U19PSykgeyAuLi4gfQorCis9aGVhZDEgREVTQ1JJUFRJT04KKworVGhpcyBtb2R1bGUgcHJv dmlkZXMgbGlicHEgY29uc3RhbnRzIHVzZWQgYnkgdGhlIEZGSSBiYWNrZW5kCisoQzxQb3N0 Z3JlU1FMOjpQcUZGST4pLiAgQWxsIGNvbnN0YW50cyBhcmUgZXhwb3J0ZWQgYnkgZGVmYXVs dC4KKworPWhlYWQxIEVYUE9SVEVEIENPTlNUQU5UUworCis9aGVhZDIgQ29ubmVjdGlvbiBT dGF0dXMgKENvbm5TdGF0dXNUeXBlKQorCitDPENPTk5FQ1RJT05fT0s+LCBDPENPTk5FQ1RJ T05fQkFEPiwgQzxDT05ORUNUSU9OX1NUQVJURUQ+LAorQzxDT05ORUNUSU9OX01BREU+LCBD PENPTk5FQ1RJT05fQVdBSVRJTkdfUkVTUE9OU0U+LCBDPENPTk5FQ1RJT05fQVVUSF9PSz4s CitDPENPTk5FQ1RJT05fU0VURU5WPiwgQzxDT05ORUNUSU9OX1NTTF9TVEFSVFVQPiwgQzxD T05ORUNUSU9OX05FRURFRD4sCitDPENPTk5FQ1RJT05fQ0hFQ0tfV1JJVEFCTEU+LCBDPENP Tk5FQ1RJT05fQ09OU1VNRT4sIEM8Q09OTkVDVElPTl9HU1NfU1RBUlRVUD4sCitDPENPTk5F Q1RJT05fQ0hFQ0tfVEFSR0VUPiwgQzxDT05ORUNUSU9OX0NIRUNLX1NUQU5EQlk+LCBDPENP Tk5FQ1RJT05fQUxMT0NBVEVEPgorCis9aGVhZDIgRXhlY3V0aW9uIFN0YXR1cyAoRXhlY1N0 YXR1c1R5cGUpCisKK0M8UEdSRVNfRU1QVFlfUVVFUlk+LCBDPFBHUkVTX0NPTU1BTkRfT0s+ LCBDPFBHUkVTX1RVUExFU19PSz4sCitDPFBHUkVTX0NPUFlfT1VUPiwgQzxQR1JFU19DT1BZ X0lOPiwgQzxQR1JFU19CQURfUkVTUE9OU0U+LAorQzxQR1JFU19OT05GQVRBTF9FUlJPUj4s IEM8UEdSRVNfRkFUQUxfRVJST1I+LCBDPFBHUkVTX0NPUFlfQk9USD4sCitDPFBHUkVTX1NJ TkdMRV9UVVBMRT4sIEM8UEdSRVNfUElQRUxJTkVfU1lOQz4sIEM8UEdSRVNfUElQRUxJTkVf QUJPUlRFRD4sCitDPFBHUkVTX1RVUExFU19DSFVOSz4KKworPWhlYWQyIFBvbGxpbmcgU3Rh dHVzIChQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlKQorCitDPFBHUkVTX1BPTExJTkdfRkFJ TEVEPiwgQzxQR1JFU19QT0xMSU5HX1JFQURJTkc+LCBDPFBHUkVTX1BPTExJTkdfV1JJVElO Rz4sCitDPFBHUkVTX1BPTExJTkdfT0s+LCBDPFBHUkVTX1BPTExJTkdfQUNUSVZFPgorCis9 aGVhZDIgUGluZyBTdGF0dXMgKFBHUGluZykKKworQzxQUVBJTkdfT0s+LCBDPFBRUElOR19S RUpFQ1Q+LCBDPFBRUElOR19OT19SRVNQT05TRT4sIEM8UFFQSU5HX05PX0FUVEVNUFQ+CisK Kz1oZWFkMiBUcmFuc2FjdGlvbiBTdGF0dXMgKFBHVHJhbnNhY3Rpb25TdGF0dXNUeXBlKQor CitDPFBRVFJBTlNfSURMRT4sIEM8UFFUUkFOU19BQ1RJVkU+LCBDPFBRVFJBTlNfSU5UUkFO Uz4sIEM8UFFUUkFOU19JTkVSUk9SPiwKK0M8UFFUUkFOU19VTktOT1dOPgorCis9Y3V0CisK K3BhY2thZ2UgUG9zdGdyZVNRTDo6UHFDb25zdGFudHM7CisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gcXcoYWxsKTsKKwordXNlIEV4cG9ydGVyIHF3KGltcG9ydCk7 CisKK291ciBARVhQT1JUID0gcXcoCisKKyAgQ09OTkVDVElPTl9PSworICBDT05ORUNUSU9O X0JBRAorICBDT05ORUNUSU9OX1NUQVJURUQKKyAgQ09OTkVDVElPTl9NQURFCisgIENPTk5F Q1RJT05fQVdBSVRJTkdfUkVTUE9OU0UKKyAgQ09OTkVDVElPTl9BVVRIX09LCisgIENPTk5F Q1RJT05fU0VURU5WCisgIENPTk5FQ1RJT05fU1NMX1NUQVJUVVAKKyAgQ09OTkVDVElPTl9O RUVERUQKKyAgQ09OTkVDVElPTl9DSEVDS19XUklUQUJMRQorICBDT05ORUNUSU9OX0NPTlNV TUUKKyAgQ09OTkVDVElPTl9HU1NfU1RBUlRVUAorICBDT05ORUNUSU9OX0NIRUNLX1RBUkdF VAorICBDT05ORUNUSU9OX0NIRUNLX1NUQU5EQlkKKyAgQ09OTkVDVElPTl9BTExPQ0FURUQK KworICBQR1JFU19FTVBUWV9RVUVSWQorICBQR1JFU19DT01NQU5EX09LCisgIFBHUkVTX1RV UExFU19PSworICBQR1JFU19DT1BZX09VVAorICBQR1JFU19DT1BZX0lOCisgIFBHUkVTX0JB RF9SRVNQT05TRQorICBQR1JFU19OT05GQVRBTF9FUlJPUgorICBQR1JFU19GQVRBTF9FUlJP UgorICBQR1JFU19DT1BZX0JPVEgKKyAgUEdSRVNfU0lOR0xFX1RVUExFCisgIFBHUkVTX1BJ UEVMSU5FX1NZTkMKKyAgUEdSRVNfUElQRUxJTkVfQUJPUlRFRAorICBQR1JFU19UVVBMRVNf Q0hVTksKKworICBQR1JFU19QT0xMSU5HX0ZBSUxFRAorICBQR1JFU19QT0xMSU5HX1JFQURJ TkcKKyAgUEdSRVNfUE9MTElOR19XUklUSU5HCisgIFBHUkVTX1BPTExJTkdfT0sKKyAgUEdS RVNfUE9MTElOR19BQ1RJVkUKKworICBQUVBJTkdfT0sKKyAgUFFQSU5HX1JFSkVDVAorICBQ UVBJTkdfTk9fUkVTUE9OU0UKKyAgUFFQSU5HX05PX0FUVEVNUFQKKworICBQUVRSQU5TX0lE TEUKKyAgUFFUUkFOU19BQ1RJVkUKKyAgUFFUUkFOU19JTlRSQU5TCisgIFBRVFJBTlNfSU5F UlJPUgorICBQUVRSQU5TX1VOS05PV04KKworKTsKKworIyBDb25uU3RhdHVzVHlwZToKK3Vz ZSBjb25zdGFudCB7CisJQ09OTkVDVElPTl9PSyAgICAgICAgICAgICAgICAgPT4gMCwKKwlD T05ORUNUSU9OX0JBRCAgICAgICAgICAgICAgICA9PiAxLAorCUNPTk5FQ1RJT05fU1RBUlRF RCAgICAgICAgICAgID0+IDIsCisJQ09OTkVDVElPTl9NQURFICAgICAgICAgICAgICAgPT4g MywKKwlDT05ORUNUSU9OX0FXQUlUSU5HX1JFU1BPTlNFICA9PiA0LAorCUNPTk5FQ1RJT05f QVVUSF9PSyAgICAgICAgICAgID0+IDUsCisJQ09OTkVDVElPTl9TRVRFTlYgICAgICAgICAg ICAgPT4gNiwKKwlDT05ORUNUSU9OX1NTTF9TVEFSVFVQICAgICAgICA9PiA3LAorCUNPTk5F Q1RJT05fTkVFREVEICAgICAgICAgICAgID0+IDgsCisJQ09OTkVDVElPTl9DSEVDS19XUklU QUJMRSAgICAgPT4gOSwKKwlDT05ORUNUSU9OX0NPTlNVTUUgICAgICAgICAgICA9PiAxMCwK KwlDT05ORUNUSU9OX0dTU19TVEFSVFVQICAgICAgICA9PiAxMSwKKwlDT05ORUNUSU9OX0NI RUNLX1RBUkdFVCAgICAgICA9PiAxMiwKKwlDT05ORUNUSU9OX0NIRUNLX1NUQU5EQlkgICAg ICA9PiAxMywKKwlDT05ORUNUSU9OX0FMTE9DQVRFRCAgICAgICAgICA9PiAxNCwKK307CisK KyMgRXhlY1N0YXR1c1R5cGU6Cit1c2UgY29uc3RhbnQgeworCVBHUkVTX0VNUFRZX1FVRVJZ ICAgICA9PiAwLAorCVBHUkVTX0NPTU1BTkRfT0sgICAgICA9PiAxLAorCVBHUkVTX1RVUExF U19PSyAgICAgICA9PiAyLAorCVBHUkVTX0NPUFlfT1VUICAgICAgICA9PiAzLAorCVBHUkVT X0NPUFlfSU4gICAgICAgICA9PiA0LAorCVBHUkVTX0JBRF9SRVNQT05TRSAgICA9PiA1LAor CVBHUkVTX05PTkZBVEFMX0VSUk9SICA9PiA2LAorCVBHUkVTX0ZBVEFMX0VSUk9SICAgICA9 PiA3LAorCVBHUkVTX0NPUFlfQk9USCAgICAgICA9PiA4LAorCVBHUkVTX1NJTkdMRV9UVVBM RSAgICA9PiA5LAorCVBHUkVTX1BJUEVMSU5FX1NZTkMgICA9PiAxMCwKKwlQR1JFU19QSVBF TElORV9BQk9SVEVEID0+IDExLAorCVBHUkVTX1RVUExFU19DSFVOSyAgICA9PiAxMiwKK307 CisKKyMgUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZToKK3VzZSBjb25zdGFudCB7CisJUEdS RVNfUE9MTElOR19GQUlMRUQgID0+IDAsCisJUEdSRVNfUE9MTElOR19SRUFESU5HID0+IDEs CisJUEdSRVNfUE9MTElOR19XUklUSU5HID0+IDIsCisJUEdSRVNfUE9MTElOR19PSyAgICAg ID0+IDMsCisJUEdSRVNfUE9MTElOR19BQ1RJVkUgID0+IDQsCit9OworCisjIFBHUGluZzoK K3VzZSBjb25zdGFudCB7CisJUFFQSU5HX09LICAgICAgICAgID0+IDAsCisJUFFQSU5HX1JF SkVDVCAgICAgID0+IDEsCisJUFFQSU5HX05PX1JFU1BPTlNFID0+IDIsCisJUFFQSU5HX05P X0FUVEVNUFQgID0+IDMsCit9OworCisjIFBHVHJhbnNhY3Rpb25TdGF0dXNUeXBlOgordXNl IGNvbnN0YW50IHsKKwlQUVRSQU5TX0lETEUgICAgPT4gMCwKKwlQUVRSQU5TX0FDVElWRSAg PT4gMSwKKwlQUVRSQU5TX0lOVFJBTlMgPT4gMiwKKwlQUVRSQU5TX0lORVJST1IgPT4gMywK KwlQUVRSQU5TX1VOS05PV04gPT4gNCwKK307CisKKz1wb2QKKworPWhlYWQxIFNFRSBBTFNP CisKK0w8UG9zdGdyZVNRTDo6UHFGRkk+LCBMPFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24+ CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9Q cUZGSS5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9QcUZGSS5wbQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjE2NDcwYzQ2ZDkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvUHFGRkkucG0KQEAgLTAsMCArMSw0 MzcgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKworPXBvZAorCis9aGVhZDEgTkFNRQorCitQb3N0Z3JlU1FM OjpQcUZGSSAtIEZGSSB3cmFwcGVyIGZvciBsaWJwcQorCis9aGVhZDEgU1lOT1BTSVMKKwor ICB1c2UgUG9zdGdyZVNRTDo6UHFGRkk7CisKKyAgIyBJbml0aWFsaXplIHRoZSBGRkkgYmlu ZGluZ3MgKHJlcXVpcmVkIGJlZm9yZSB1c2UpCisgIFBvc3RncmVTUUw6OlBxRkZJOjpzZXR1 cCgkbGliZGlyKTsKKworICAjIENvbm5lY3QgdG8gZGF0YWJhc2UKKyAgbXkgJGNvbm4gPSBQ UWNvbm5lY3RkYigiZGJuYW1lPXBvc3RncmVzIik7CisgIGRpZSBQUWVycm9yTWVzc2FnZSgk Y29ubikgdW5sZXNzIFBRc3RhdHVzKCRjb25uKSA9PSBDT05ORUNUSU9OX09LOworCisgICMg RXhlY3V0ZSBxdWVyeQorICBteSAkcmVzdWx0ID0gUFFleGVjKCRjb25uLCAiU0VMRUNUIDEi KTsKKyAgaWYgKFBRcmVzdWx0U3RhdHVzKCRyZXN1bHQpID09IFBHUkVTX1RVUExFU19PSykg eworICAgICAgcHJpbnQgUFFnZXR2YWx1ZSgkcmVzdWx0LCAwLCAwKSwgIlxuIjsKKyAgfQor ICBQUWNsZWFyKCRyZXN1bHQpOworCisgIFBRZmluaXNoKCRjb25uKTsKKworPWhlYWQxIERF U0NSSVBUSU9OCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIFBlcmwgYmluZGluZ3MgdG8gbGli cHEgdXNpbmcgTDxGRkk6OlBsYXR5cHVzPi4KK0l0IGlzIHRoZSBiYWNrZW5kIHVzZWQgYnkg TDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uPi4KKworVGhlIG1vZHVsZSBtdXN0IGJlIGlu aXRpYWxpemVkIGJ5IGNhbGxpbmcgQzxzZXR1cCgpPiBiZWZvcmUgYW55IGxpYnBxCitmdW5j dGlvbnMgY2FuIGJlIHVzZWQuCisKKz1oZWFkMSBGVU5DVElPTlMKKworPWhlYWQyIHNldHVw KCRsaWJkaXIgWywgJHVzZV9zeXN0ZW1fcGF0aF0pCisKK0luaXRpYWxpemUgdGhlIEZGSSBi aW5kaW5ncy4gQzwkbGliZGlyPiBzcGVjaWZpZXMgd2hlcmUgdG8gZmluZCBsaWJwcS4KK0lm IEM8JHVzZV9zeXN0ZW1fcGF0aD4gaXMgZmFsc2UsIG9ubHkgQzwkbGliZGlyPiBpcyBzZWFy Y2hlZC4KKworPWhlYWQyIGxpYnBxIEZ1bmN0aW9ucworCitBbGwgc3RhbmRhcmQgbGlicHEg ZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gU2VlIHRoZSBQb3N0Z3JlU1FMIGxpYnBxCitkb2N1 bWVudGF0aW9uIGZvciBkZXRhaWxzLiBDb21tb25seSB1c2VkIGZ1bmN0aW9ucyBpbmNsdWRl OgorCitCPENvbm5lY3Rpb246PiBDPFBRY29ubmVjdGRiPiwgQzxQUWNvbm5lY3RTdGFydD4s IEM8UFFjb25uZWN0UG9sbD4sCitDPFBRZmluaXNoPiwgQzxQUXN0YXR1cz4sIEM8UFFlcnJv ck1lc3NhZ2U+CisKK0I8RXhlY3V0aW9uOj4gQzxQUWV4ZWM+LCBDPFBRZXhlY1BhcmFtcz4s IEM8UFFwcmVwYXJlPiwgQzxQUWV4ZWNQcmVwYXJlZD4sCitDPFBRc2VuZFF1ZXJ5PiwgQzxQ UWdldFJlc3VsdD4sIEM8UFFjbGVhcj4KKworQjxSZXN1bHRzOj4gQzxQUXJlc3VsdFN0YXR1 cz4sIEM8UFFudHVwbGVzPiwgQzxQUW5maWVsZHM+LCBDPFBRZm5hbWU+LAorQzxQUWZ0eXBl PiwgQzxQUWdldHZhbHVlPiwgQzxQUWdldGlzbnVsbD4KKworQjxQaXBlbGluZTo+IEM8UFFl bnRlclBpcGVsaW5lTW9kZT4sIEM8UFFleGl0UGlwZWxpbmVNb2RlPiwKK0M8UFFwaXBlbGlu ZVN5bmM+LCBDPFBRc2VuZFF1ZXJ5UGFyYW1zPgorCitCPE5vdGlmaWNhdGlvbnM6PiBDPFBR bm90aWZpZXM+LCBDPFBRbm90aWZ5X2NoYW5uZWw+LCBDPFBRbm90aWZ5X3BheWxvYWQ+LAor QzxQUW5vdGlmeV9iZV9waWQ+LCBDPFBRbm90aWZ5X2ZyZWU+CisKK0I8Tm90aWNlIFByb2Nl c3Npbmc6PiBDPFBRc2V0Tm90aWNlUHJvY2Vzc29yPiwgQzxjcmVhdGVfbm90aWNlX3Byb2Nl c3Nvcj4KKworPWhlYWQyIGNyZWF0ZV9ub3RpY2VfcHJvY2Vzc29yKCRjYWxsYmFjaykKKwor Q3JlYXRlcyBhIG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0aGF0IGNhbiBiZSBwYXNzZWQg dG8KK0M8UFFzZXROb3RpY2VQcm9jZXNzb3I+LiBUaGUgY2FsbGJhY2sgcmVjZWl2ZXMgQzwo JGFyZywgJG1lc3NhZ2UpPi4KK1RoZSBjYWxsZXIgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRv IHRoZSByZXR1cm5lZCBjbG9zdXJlIHRvIHByZXZlbnQKK2dhcmJhZ2UgY29sbGVjdGlvbi4K KworPWhlYWQxIEVYUE9SVEVEIENPTlNUQU5UUworCitUaGlzIG1vZHVsZSByZS1leHBvcnRz IGFsbCBjb25zdGFudHMgZnJvbSBMPFBvc3RncmVTUUw6OlBxQ29uc3RhbnRzPgorYW5kIEw8 UG9zdGdyZVNRTDo6UEdUeXBlcz4uCisKKz1jdXQKKworcGFja2FnZSBQb3N0Z3JlU1FMOjpQ cUZGSTsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiBxdyhhbGwpOwor Cit1c2UgRkZJOjpQbGF0eXB1czsKK3VzZSBGRkk6OlBsYXR5cHVzOjpSZWNvcmQ7Cit1c2Ug UG9zdGdyZVNRTDo6RmluZExpYjsKKworIyBQR25vdGlmeSBzdHJ1Y3QgZm9yIG5vdGlmaWNh dGlvbiBzdXBwb3J0CisjIHR5cGVkZWYgc3RydWN0IHBnTm90aWZ5IHsKKyMgICAgIGNoYXIg KnJlbG5hbWU7ICAgIC8qIG5vdGlmaWNhdGlvbiBjaGFubmVsIG5hbWUgKi8KKyMgICAgIGlu dCAgIGJlX3BpZDsgICAgIC8qIHByb2Nlc3MgSUQgb2Ygbm90aWZ5aW5nIHNlcnZlciBwcm9j ZXNzICovCisjICAgICBjaGFyICpleHRyYTsgICAgICAvKiBub3RpZmljYXRpb24gcGF5bG9h ZCBzdHJpbmcgKi8KKyMgfSBQR25vdGlmeTsKK3BhY2thZ2UgUEdub3RpZnkgeworCXVzZSBG Rkk6OlBsYXR5cHVzOjpSZWNvcmQ7CisJcmVjb3JkX2xheW91dF8xKAorCQknb3BhcXVlJyA9 PiAncmVsbmFtZScsCisJCSdzaW50MzInID0+ICdiZV9waWQnLAorCQknb3BhcXVlJyA9PiAn ZXh0cmEnLAorCSk7Cit9CitwYWNrYWdlIFBvc3RncmVTUUw6OlBxRkZJOwordXNlIFBvc3Rn cmVTUUw6OlBxQ29uc3RhbnRzOwordXNlIFBvc3RncmVTUUw6OlBHVHlwZXM7CisKK3VzZSBF eHBvcnRlciBxdyhpbXBvcnQpOworCitvdXIgQEVYUE9SVCA9ICgKKyAgQFBvc3RncmVTUUw6 OlBxQ29uc3RhbnRzOjpFWFBPUlQsCisgIEBQb3N0Z3JlU1FMOjpQR1R5cGVzOjpFWFBPUlQs CispOworCisKKworbXkgQHByb2NzID0gcXcoCisKKyAgUFFub3RpZmllcworICBQUWZyZWVt ZW0KKyAgUFFub3RpZnlfY2hhbm5lbAorICBQUW5vdGlmeV9wYXlsb2FkCisgIFBRbm90aWZ5 X2JlX3BpZAorICBQUW5vdGlmeV9mcmVlCisKKyAgUFFjb25uZWN0ZGIKKyAgUFFjb25uZWN0 ZGJQYXJhbXMKKyAgUFFzZXRkYkxvZ2luCisgIFBRZmluaXNoCisgIFBRcmVzZXQKKyAgUFFk YgorICBQUXVzZXIKKyAgUFFwYXNzCisgIFBRaG9zdAorICBQUWhvc3RhZGRyCisgIFBRcG9y dAorICBQUXR0eQorICBQUW9wdGlvbnMKKyAgUFFzdGF0dXMKKyAgUFF0cmFuc2FjdGlvblN0 YXR1cworICBQUXBhcmFtZXRlclN0YXR1cworICBQUXBpbmcKKyAgUFFwaW5nUGFyYW1zCisK KyAgUFFleGVjCisgIFBRZXhlY1BhcmFtcworICBQUXByZXBhcmUKKyAgUFFleGVjUHJlcGFy ZWQKKworICBQUWRlc2NyaWJlUHJlcGFyZWQKKyAgUFFkZXNjcmliZVBvcnRhbAorCisgIFBR Y2xvc2VQcmVwYXJlZAorICBQUWNsb3NlUG9ydGFsCisgIFBRY2xlYXIKKworICBQUXNlbmRR dWVyeQorICBQUWdldFJlc3VsdAorICBQUWlzQnVzeQorICBQUWNvbnN1bWVJbnB1dAorCisg IFBRcHJvdG9jb2xWZXJzaW9uCisgIFBRc2VydmVyVmVyc2lvbgorICBQUWVycm9yTWVzc2Fn ZQorICBQUXNvY2tldAorICBQUXNvY2tldFBvbGwKKyAgUFFnZXRDdXJyZW50VGltZVVTZWMK KyAgUFFiYWNrZW5kUElECisgIFBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQKKyAgUFFjb25u ZWN0aW9uVXNlZFBhc3N3b3JkCisgIFBRY29ubmVjdGlvblVzZWRHU1NBUEkKKyAgUFFjbGll bnRFbmNvZGluZworICBQUXNldENsaWVudEVuY29kaW5nCisKKyAgUFFyZXN1bHRTdGF0dXMK KyAgUFFyZXNTdGF0dXMKKyAgUFFyZXN1bHRFcnJvck1lc3NhZ2UKKyAgUFFyZXN1bHRFcnJv ckZpZWxkCisgIFBRbnR1cGxlcworICBQUW5maWVsZHMKKyAgUFFiaW5hcnlUdXBsZXMKKyAg UFFmbmFtZQorICBQUWZudW1iZXIKKyAgUFFmdGFibGUKKyAgUFFmdGFibGVjb2wKKyAgUFFm Zm9ybWF0CisgIFBRZnR5cGUKKyAgUFFmc2l6ZQorICBQUWZtb2QKKyAgUFFjbWRTdGF0dXMK KyAgUFFvaWRWYWx1ZQorICBQUWNtZFR1cGxlcworICBQUWdldHZhbHVlCisgIFBRZ2V0bGVu Z3RoCisgIFBRZ2V0aXNudWxsCisgIFBRbnBhcmFtcworICBQUXBhcmFtdHlwZQorICBQUWNo YW5nZVBhc3N3b3JkCisKKyAgUFFwaXBlbGluZVN0YXR1cworICBQUWVudGVyUGlwZWxpbmVN b2RlCisgIFBRZXhpdFBpcGVsaW5lTW9kZQorICBQUXBpcGVsaW5lU3luYworICBQUXNlbmRG bHVzaFJlcXVlc3QKKyAgUFFzZW5kUGlwZWxpbmVTeW5jCisgIFBRc2VuZFF1ZXJ5UGFyYW1z CisKKyAgUFFzZXRub25ibG9ja2luZworICBQUWlzbm9uYmxvY2tpbmcKKyAgUFFmbHVzaAor CisgIFBRY29ubmVjdFN0YXJ0CisgIFBRY29ubmVjdFN0YXJ0UGFyYW1zCisgIFBRY29ubmVj dFBvbGwKKworICBQUXNldE5vdGljZVByb2Nlc3NvcgorICBjcmVhdGVfbm90aWNlX3Byb2Nl c3NvcgorCispOworCitwdXNoKEBFWFBPUlQsIEBwcm9jcyk7CisKK3N1YiBzZXR1cAorewor CW15ICRsaWJkaXIgPSBzaGlmdDsKKwlteSAkdXNlX3N5c3RlbV9wYXRoID0gc2hpZnQ7CisK KwlteSAkZmZpID0gRkZJOjpQbGF0eXB1cy0+bmV3KGFwaSA9PiAxKTsKKworCW15IEBzeXN0 ZW1fcGF0aDsKKwlAc3lzdGVtX3BhdGggPSAoc3lzdGVtcGF0aCA9PiBbXSkgdW5sZXNzICR1 c2Vfc3lzdGVtX3BhdGg7CisKKwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQR2Nvbm4nKTsK KwkkZmZpLT50eXBlKCdvcGFxdWUnID0+ICdQR3Jlc3VsdCcpOworCSRmZmktPnR5cGUoJ3Vp bnQzMicgPT4gJ09pZCcpOworCSRmZmktPnR5cGUoJ2ludCcgPT4gJ0V4ZWNTdGF0dXNUeXBl Jyk7CisKKwkjIFJlZ2lzdGVyIHRoZSBQR25vdGlmeSByZWNvcmQgdHlwZSBmb3Igc3RydWN0 IGFjY2VzcworCSRmZmktPnR5cGUoJ3JlY29yZChQR25vdGlmeSknID0+ICdQR25vdGlmeV9y ZWNvcmQnKTsKKworCW15ICRsaWIgPSBmaW5kX2xpYl9vcl9kaWUoCisJCWxpYiA9PiAncHEn LAorCQlsaWJwYXRoID0+IFskbGliZGlyXSwKKwkgICAgQHN5c3RlbV9wYXRoLAorCSAgICk7 CisJJGZmaS0+bGliKCRsaWIpOworCisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3RkYicgPT4g WydzdHJpbmcnXSA9PiAnUEdjb25uJyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFjb25uZWN0 ZGJQYXJhbXMnID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcgXSA9PiAnUEdj b25uJyk7CisJJGZmaS0+YXR0YWNoKAorCQknUFFzZXRkYkxvZ2luJyA9PiBbCisJCQknc3Ry aW5nJywgJ3N0cmluZycsICdzdHJpbmcnLCAnc3RyaW5nJywKKwkJCSdzdHJpbmcnLCAnc3Ry aW5nJywgJ3N0cmluZycsCisJCV0gPT4gJ1BHY29ubicpOworCSRmZmktPmF0dGFjaCgnUFFm aW5pc2gnID0+IFsnUEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVz ZXQnID0+IFsnUEdjb25uJ10gPT4gJ3ZvaWQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZGInID0+ IFsnUEdjb25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF1c2VyJyA9PiBb J1BHY29ubiddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFzcycgPT4gWydQ R2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUWhvc3QnID0+IFsnUEdj b25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFob3N0YWRkcicgPT4gWydQ R2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXBvcnQnID0+IFsnUEdj b25uJ10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFF0dHknID0+IFsnUEdjb25u J10gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFvcHRpb25zJyA9PiBbJ1BHY29u biddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc3RhdHVzJyA9PiBbJ1BHY29u biddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRdHJhbnNhY3Rpb25TdGF0dXMnID0+ IFsnUEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFwYXJhbWV0ZXJTdGF0 dXMnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0 dGFjaCgnUFFwaW5nJyA9PiBbJ3N0cmluZyddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2go CisJCSdQUXBpbmdQYXJhbXMnID0+IFsgJ3N0cmluZ1tdJywgJ3N0cmluZ1tdJywgJ2ludCcg XSA9PiAnaW50Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcHJvdG9jb2xWZXJzaW9uJyA9PiBb J1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VydmVyVmVyc2lvbicg PT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWVycm9yTWVzc2Fn ZScgPT4gWydQR2Nvbm4nXSA9PiAnc3RyaW5nJyk7CisJJGZmaS0+YXR0YWNoKCdQUXNvY2tl dCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUXNvY2tldFBv bGwnID0+IFsnaW50JywgJ2ludCcsICdpbnQnLCAnc2ludDY0J10gPT4gJ2ludCcpOworCSRm ZmktPmF0dGFjaCgnUFFnZXRDdXJyZW50VGltZVVTZWMnID0+IFtdID0+ICdzaW50NjQnKTsK KwkkZmZpLT5hdHRhY2goJ1BRYmFja2VuZFBJRCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7 CisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3Rpb25OZWVkc1Bhc3N3b3JkJyA9PiBbJ1BHY29u biddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRY29ubmVjdGlvblVzZWRQYXNzd29y ZCcgPT4gWydQR2Nvbm4nXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNvbm5lY3Rp b25Vc2VkR1NTQVBJJyA9PiBbJ1BHY29ubiddID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2go J1BRY2xpZW50RW5jb2RpbmcnID0+IFsnUEdjb25uJ10gPT4gJ2ludCcpOworCSRmZmktPmF0 dGFjaCgnUFFzZXRDbGllbnRFbmNvZGluZycgPT4gWyAnUEdjb25uJywgJ3N0cmluZycgXSA9 PiAnaW50Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRZXhlYycgPT4gWyAnUEdjb25uJywgJ3N0 cmluZycgXSA9PiAnUEdyZXN1bHQnKTsKKwkkZmZpLT5hdHRhY2goCisJCSdQUWV4ZWNQYXJh bXMnID0+IFsKKwkJCSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdpbnRbXScsCisJCQkn c3RyaW5nW10nLCAnaW50W10nLCAnaW50W10nLCAnaW50JworCQldID0+ICdQR3Jlc3VsdCcp OworCSRmZmktPmF0dGFjaCgKKwkJJ1BRcHJlcGFyZScgPT4gWyAnUEdjb25uJywgJ3N0cmlu ZycsICdzdHJpbmcnLCAnaW50JywgJ2ludFtdJyBdID0+CisJCSAgJ1BHcmVzdWx0Jyk7CisJ JGZmaS0+YXR0YWNoKAorCQknUFFleGVjUHJlcGFyZWQnID0+IFsgJ1BHY29ubicsICdzdHJp bmcnLCAnaW50JywKKwkJCSdzdHJpbmdbXScsICdpbnRbXScsICdpbnRbXScsICdpbnQnIF0g PT4gJ1BHcmVzdWx0Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRcmVzdWx0U3RhdHVzJyA9PiBb J1BHcmVzdWx0J10gPT4gJ0V4ZWNTdGF0dXNUeXBlJyk7CisJJGZmaS0+YXR0YWNoKCdQUXJl c1N0YXR1cycgPT4gWydFeGVjU3RhdHVzVHlwZSddID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5h dHRhY2goJ1BRcmVzdWx0RXJyb3JNZXNzYWdlJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ3N0cmlu ZycpOworCSRmZmktPmF0dGFjaCgnUFFyZXN1bHRFcnJvckZpZWxkJyA9PiBbICdQR3Jlc3Vs dCcsICdpbnQnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFjaCgnUFFudHVwbGVzJyA9 PiBbJ1BHcmVzdWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFuZmllbGRzJyA9 PiBbJ1BHcmVzdWx0J10gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFiaW5hcnlUdXBs ZXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZuYW1l JyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ3N0cmluZycpOworCSRmZmktPmF0dGFj aCgnUFFmbnVtYmVyJyA9PiBbICdQR3Jlc3VsdCcsICdzdHJpbmcnIF0gPT4gJ2ludCcpOwor CSRmZmktPmF0dGFjaCgnUFFmdGFibGUnID0+IFsgJ1BHcmVzdWx0JywgJ2ludCcgXSA9PiAn T2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUWZ0YWJsZWNvbCcgPT4gWyAnUEdyZXN1bHQnLCAn aW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZmZvcm1hdCcgPT4gWyAnUEdy ZXN1bHQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZnR5cGUnID0+ IFsgJ1BHcmVzdWx0JywgJ2ludCcgXSA9PiAnT2lkJyk7CisJJGZmaS0+YXR0YWNoKCdQUWZz aXplJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFj aCgnUFFmbW9kJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnIF0gPT4gJ2ludCcpOworCSRmZmkt PmF0dGFjaCgnUFFjbWRTdGF0dXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3RyaW5nJyk7CisJ JGZmaS0+YXR0YWNoKCdQUW9pZFZhbHVlJyA9PiBbJ1BHcmVzdWx0J10gPT4gJ09pZCcpOwor CSRmZmktPmF0dGFjaCgnUFFjbWRUdXBsZXMnID0+IFsnUEdyZXN1bHQnXSA9PiAnc3RyaW5n Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWdldHZhbHVlJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQn LCAnaW50JyBdID0+ICdzdHJpbmcnKTsKKwkkZmZpLT5hdHRhY2goJ1BRZ2V0bGVuZ3RoJyA9 PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRh Y2goJ1BRZ2V0aXNudWxsJyA9PiBbICdQR3Jlc3VsdCcsICdpbnQnLCAnaW50JyBdID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRbnBhcmFtcycgPT4gWydQR3Jlc3VsdCddID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcGFyYW10eXBlJyA9PiBbICdQR3Jlc3VsdCcsICdp bnQnIF0gPT4gJ09pZCcpOworCisKKwkkZmZpLT5hdHRhY2goCisJCSdQUWRlc2NyaWJlUHJl cGFyZWQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZm aS0+YXR0YWNoKCdQUWRlc2NyaWJlUG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBd ID0+ICdQR3Jlc3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUWNsb3NlUHJlcGFyZWQnID0+ IFsgJ1BHY29ubicsICdzdHJpbmcnIF0gPT4gJ1BHcmVzdWx0Jyk7CisJJGZmaS0+YXR0YWNo KCdQUWNsb3NlUG9ydGFsJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJyBdID0+ICdQR3Jlc3Vs dCcpOworCSRmZmktPmF0dGFjaCgnUFFjbGVhcicgPT4gWydQR3Jlc3VsdCddID0+ICd2b2lk Jyk7CisKKwkkZmZpLT5hdHRhY2goJ1BRY29ubmVjdFN0YXJ0JyA9PiBbICdzdHJpbmcnIF0g PT4gJ1BHY29ubicpOworCSRmZmktPmF0dGFjaCgKKwkJJ1BRY29ubmVjdFN0YXJ0UGFyYW1z JyA9PiBbICdzdHJpbmdbXScsICdzdHJpbmdbXScsICdpbnQnIF0gPT4gJ1BHY29ubicpOwor CSRmZmktPmF0dGFjaCgnUFFjb25uZWN0UG9sbCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQn KTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVzZXRTdGFydCcgPT4gWyAnUEdjb25uJyBdID0+ICdp bnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRcmVzZXRQb2xsJyA9PiBbICdQR2Nvbm4nIF0gPT4g J2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzZW5kUXVlcnknID0+IFsgJ1BHY29ubicsICAn c3RyaW5nJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BRc2VuZFF1ZXJ5UGFyYW1z JyA9PiBbCisJCSdQR2Nvbm4nLCAnc3RyaW5nJywgJ2ludCcsICdPaWQqJywgJ3N0cmluZyon LAorCQknaW50KicsICdpbnQqJywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNo KCdQUXNlbmRQcmVwYXJlJyA9PiBbICdQR2Nvbm4nLCAnc3RyaW5nJywgJ3N0cmluZycsICdp bnQnLCAnT2lkW10nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFnZXRSZXN1bHQn ID0+IFsgJ1BHY29ubicgXSA9PiAnUEdyZXN1bHQnKTsKKworCSRmZmktPmF0dGFjaCgnUFFp c0J1c3knID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWNv bnN1bWVJbnB1dCcgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2go J1BRY2hhbmdlUGFzc3dvcmQnID0+IFsgJ1BHY29ubicsICdzdHJpbmcnLCAnc3RyaW5nJyBd ID0+ICdQR3Jlc3VsdCcpOworCisJJGZmaS0+YXR0YWNoKCdQUXBpcGVsaW5lU3RhdHVzJyA9 PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFlbnRlclBpcGVs aW5lTW9kZScgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5hdHRhY2goJ1BR ZXhpdFBpcGVsaW5lTW9kZScgPT4gWyAnUEdjb25uJyBdID0+ICdpbnQnKTsKKwkkZmZpLT5h dHRhY2goJ1BRcGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCSRm ZmktPmF0dGFjaCgnUFFzZW5kRmx1c2hSZXF1ZXN0JyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2lu dCcpOworCSRmZmktPmF0dGFjaCgnUFFzZW5kUGlwZWxpbmVTeW5jJyA9PiBbICdQR2Nvbm4n IF0gPT4gJ2ludCcpOworCSRmZmktPmF0dGFjaCgnUFFzZXRub25ibG9ja2luZycgPT4gWyAn UEdjb25uJywgJ2ludCcgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWlzbm9uYmxv Y2tpbmcnID0+IFsgJ1BHY29ubicgXSA9PiAnaW50Jyk7CisJJGZmaS0+YXR0YWNoKCdQUWZs dXNoJyA9PiBbICdQR2Nvbm4nIF0gPT4gJ2ludCcpOworCisJIyBOb3RpZmljYXRpb24gc3Vw cG9ydCAtIFBRbm90aWZpZXMgcmV0dXJucyBhIHBvaW50ZXIgdG8gUEdub3RpZnkgc3RydWN0 CisJIyBXZSByZXR1cm4gb3BhcXVlIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBwb2ludGVy IGZvciBmcmVlaW5nIHdpdGggUFFmcmVlbWVtCisJJGZmaS0+YXR0YWNoKCdQUW5vdGlmaWVz JyA9PiBbICdQR2Nvbm4nIF0gPT4gJ29wYXF1ZScpOworCSRmZmktPmF0dGFjaCgnUFFmcmVl bWVtJyA9PiBbICdvcGFxdWUnIF0gPT4gJ3ZvaWQnKTsKKworCSMgTm90aWNlIHByb2Nlc3Nv ciBjYWxsYmFjayBzdXBwb3J0CisJIyB0eXBlZGVmIHZvaWQgKCpQUW5vdGljZVByb2Nlc3Nv cikodm9pZCAqYXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkkZmZpLT50eXBlKCcob3Bh cXVlLHN0cmluZyktPnZvaWQnID0+ICdQUW5vdGljZVByb2Nlc3NvcicpOworCSRmZmktPmF0 dGFjaCgnUFFzZXROb3RpY2VQcm9jZXNzb3InID0+IFsgJ1BHY29ubicsICdQUW5vdGljZVBy b2Nlc3NvcicsICdvcGFxdWUnIF0gPT4gJ29wYXF1ZScpOworCisJIyBTdG9yZSB0aGUgJGZm aSBpbnN0YW5jZSBmb3IgdXNlIGJ5IGhlbHBlciBmdW5jdGlvbnMKKwkkUG9zdGdyZVNRTDo6 UHFGRkk6Ol9mZmkgPSAkZmZpOworfQorCisjIEhlbHBlciBmdW5jdGlvbnMgdG8gZXh0cmFj dCB2YWx1ZXMgZnJvbSBQR25vdGlmeSBzdHJ1Y3QKKyMgVGhlIG9wYXF1ZSBwb2ludGVyIGlz IGNhc3QgdG8gdGhlIHJlY29yZCB0eXBlIHRvIGFjY2VzcyBmaWVsZHMKKworc3ViIF9jYXN0 X3RvX3Bnbm90aWZ5Cit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVybiB1bmRlZiB1bmxl c3MgJHB0cjsKKwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFx dWUnLCAncmVjb3JkKFBHbm90aWZ5KSonLCAkcHRyKTsKK30KKworc3ViIFBRbm90aWZ5X2No YW5uZWwKK3sKKwlteSAkcHRyID0gc2hpZnQ7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkcHRy OworCW15ICRub3RpZnkgPSBfY2FzdF90b19wZ25vdGlmeSgkcHRyKTsKKwlteSAkc3RyX3B0 ciA9ICRub3RpZnktPnJlbG5hbWU7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsK KwlyZXR1cm4gJFBvc3RncmVTUUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3Ry aW5nJywgJHN0cl9wdHIpOworfQorCitzdWIgUFFub3RpZnlfcGF5bG9hZAoreworCW15ICRw dHIgPSBzaGlmdDsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRwdHI7CisJbXkgJG5vdGlmeSA9 IF9jYXN0X3RvX3Bnbm90aWZ5KCRwdHIpOworCW15ICRzdHJfcHRyID0gJG5vdGlmeS0+ZXh0 cmE7CisJcmV0dXJuIHVuZGVmIHVubGVzcyAkc3RyX3B0cjsKKwlyZXR1cm4gJFBvc3RncmVT UUw6OlBxRkZJOjpfZmZpLT5jYXN0KCdvcGFxdWUnLCAnc3RyaW5nJywgJHN0cl9wdHIpOwor fQorCitzdWIgUFFub3RpZnlfYmVfcGlkCit7CisJbXkgJHB0ciA9IHNoaWZ0OworCXJldHVy biB1bmRlZiB1bmxlc3MgJHB0cjsKKwlteSAkbm90aWZ5ID0gX2Nhc3RfdG9fcGdub3RpZnko JHB0cik7CisJcmV0dXJuICRub3RpZnktPmJlX3BpZDsKK30KKworIyBGcmVlIGEgUEdub3Rp Znkgc3RydWN0IHVzaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyCitzdWIgUFFub3RpZnlfZnJl ZQoreworCW15ICRwdHIgPSBzaGlmdDsKKwlyZXR1cm4gdW5sZXNzICRwdHI7CisJUFFmcmVl bWVtKCRwdHIpOworfQorCisjIENyZWF0ZSBhIG5vdGljZSBwcm9jZXNzb3IgY2xvc3VyZSB0 aGF0IGNhbiBiZSBwYXNzZWQgdG8gUFFzZXROb3RpY2VQcm9jZXNzb3IuCisjIFRoZSBjYWxs YmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCAoYXJnLCBtZXNzYWdlKSB3aGVyZSBhcmcgaXMg b3BhcXVlIGFuZCBtZXNzYWdlIGlzIHN0cmluZy4KKyMgUmV0dXJucyB0aGUgY2xvc3VyZSAt IGNhbGxlciBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gcHJldmVudCBnYXJiYWdlIGNvbGxl Y3Rpb24uCitzdWIgY3JlYXRlX25vdGljZV9wcm9jZXNzb3IKK3sKKwlteSAkY2FsbGJhY2sg PSBzaGlmdDsgICMgc3ViIHsgbXkgKCRhcmcsICRtZXNzYWdlKSA9IEBfOyAuLi4gfQorCXJl dHVybiAkUG9zdGdyZVNRTDo6UHFGRkk6Ol9mZmktPmNsb3N1cmUoJGNhbGxiYWNrKTsKK30K KworPXBvZAorCis9aGVhZDEgU0VFIEFMU08KKworTDxQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uPiwKK0w8UG9zdGdyZVNRTDo6UHFDb25zdGFudHM+LCBMPFBvc3RncmVTUUw6OlBHVHlw ZXM+LCBMPEZGSTo6UGxhdHlwdXM+CisKKz1jdXQKKworMTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0gYi9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9TZXNzaW9uLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi41YTY3NGJkMjM3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0KQEAgLTAsMCArMSwxMDc1IEBACisKKyMg Q29weXJpZ2h0IChjKSAyMDIxLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKz1wb2QKKworPWhlYWQxIE5BTUUKKworUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbiAtIGNsYXNzIGZvciBhIFBvc3RncmVTUUwgbGlicHEgc2Vzc2lvbgorCis9aGVhZDEg U1lOT1BTSVMKKworICB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKKworICB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKKworICBteSAkbm9kZSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygnbXlub2RlJyk7CisKKyAgIyBjcmVhdGUgYSBuZXcgc2Vz c2lvbi4gZGVmdWx0IGRibmFtZSBpcyAncG9zdGdyZXMnCisgIG15ICRzZXNzaW9uID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWywgZGJuYW1lID0+ICRkYm5h bWVdICk7CisKKyAgIyBjbG9zZSB0aGUgc2Vzc2lvbgorICAkc2Vzc2lvbi0+Y2xvc2U7CisK KyAgIyByZW9wZW4gdGhlIHNlc3Npb24sIGFmdGVyIGNsb3NpbmcgaXQgaWYgbm90IGNsb3Nl ZAorICAkc2Vzc2lvbi0+cmVjb25uZWN0OworCisgICMgY2hlY2sgaWYgdGhlIHNlc3Npb24g aXMgb2sKKyAgIyBteSAkc3RhdHVzID0gJHNlc3Npb24tPmNvbm5fc3RhdHVzOworCisgICMg cnVuIHNvbWUgU1FMLCBub3QgcHJvZHVjaW5nIHR1cGxlcworICBteSAkcmVzdWx0ID0gJHNl c3Npb24tPmRvKCRzcWwsIC4uLik7CisKKyAgIyBydW4gYW4gU1FMIHN0YXRlbWVudCBhc3lu Y2hyb25vdXNseQorICBteSAkcmVzdWx0ID0gJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpOwor CisgICMgd2FpdCBmb3IgYW5kIGFzeW5jIFNRTCB0byBjb21wbGV0ZQorICAkc2Vzc2lvbi0+ d2FpdF9mb3JfY29tcGxldGlvbjsKKworICAjIHNldCBhIHBhc3N3b3JkIGZvciBhIHVzZXIK KyAgbXkgJHJlc3VsdCA9ICRzZXNzaW9uLT5zZXRfcGFzc3dvcmQoJHVzZXIsICRwYXNzd29y ZCk7CisKKyAgIyBnZXQgc29tZSBkYXRhCisgIG15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVl cnkoJHNxbCk7CisKKyAgIyBnZXQgYSBzaW5nbGUgdmFsdWUsIGRlZmF1bHQgY3JvYWtzIGlm IG5vIHZhbHVlIGZvdW5kCisgIG15ICR2YWwgPSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCRz cWwgWywgJG1pc3Npbmdfb2sgXSk7CisKKyAgI3JldHVybiBsaW5lcyBvZiB0dXBsZXMgbGlr ZSAicHNxbCAtQSAtdCIKKyAgbXkgQGxpbmVzID0gJHNlc3Npb24tPnF1ZXJ5X3R1cGxlcygk c3FsLCAuLi4pOworCis9aGVhZDEgREVTQ1JJUFRJT04KKworQzxQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uPiBlbmNhcHN1bGF0ZXMgYSBDPGxpYnBxPiBzZXNzaW9uIGZvciB1c2UgaW4K K1Bvc3RncmVTUUwgVEFQIHRlc3RzLCBhbGxvd2luZyB0aGUgdGVzdCB0byBjb25uZWN0IHdp dGhvdXQgaGF2aW5nIHRvIHNwYXduCitDPHBzcWw+IGluIGEgY2hpbGQgcHJvY2Vzcy4KKwor VGhlIHNlc3Npb24gb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkIHdoZW4gdGhlIG9i amVjdCBnb2VzIG91dCBvZiBzY29wZSwKK2luY2x1ZGluZyBhdCBzY3JpcHQgZW5kLgorCitT ZXZlcmFsIG1ldGhvZHMgcmV0dXJuIGEgaGFzaHJlZiBhcyBhIHJlc3VsdCwgd2hpY2ggd2ls bCBoYXZlIHRoZSBmb2xsb3dpbmcKK2ZpZWxkczoKKworPW92ZXIKKworPWl0ZW0gKiBzdGF0 dXMKKworPWl0ZW0gKiBlcnJvcl9tZXNzYWdlIChvbmx5IGlmIHRoZXJlIGlzIGFuIGVycm9y KQorCis9aXRlbSAqIG5hbWVzCisKKz1pdGVtICogdHlwZXMKKworPWl0ZW0gKiByb3dzCisK Kz1pdGVtICogcHNxbG91dAorCis9YmFjaworCitUaGUgbGFzdCA0IHdpbGwgYmUgZW1wdHkg dW5sZXNzIHRoZSBTUUwgcHJvZHVjZXMgdHVwbGVzLgorCis9Y3V0CisKK3BhY2thZ2UgUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKKwordXNlIENhcnA7CisKK215ICRzZXR1cF9vazsKKworQkVHSU4K K3sKKwkjIFVzZSB0aGUgRkZJIGxpYnBxIHdyYXBwZXIuICBUaGlzIHdpbGwgZmFpbCBpZiB0 aGUgRkZJIGxpYnJhcmllcyBhcmUgbm90CisJIyBhdmFpbGFibGUuCisJIworCSMgVGhlIGFj dHVhbCBzZXR1cCBpcyBkb25lIHBlciBzZXNzaW9uLCBiZWNhdXNlIHdlIGdldCB0aGUgbGli ZGlyIGZyb20KKwkjIHRoZSBub2RlIG9iamVjdCAoaW4gbW9zdCBjYXNlcykuCisJcmVxdWly ZSBQb3N0Z3JlU1FMOjpQcUZGSTsKKwlQb3N0Z3JlU1FMOjpQcUZGSS0+aW1wb3J0OworfQor CitzdWIgX3NldHVwCit7CisJcmV0dXJuIGlmICRzZXR1cF9vazsKKwlteSAkbGliZGlyID0g c2hpZnQ7CisJUG9zdGdyZVNRTDo6UHFGRkk6OnNldHVwKCRsaWJkaXIpOworCSRzZXR1cF9v ayA9IDE7Cit9CisKKz1wb2QKKworPWhlYWQxIE1FVEhPRFMKKworPW92ZXIKKworPWl0ZW0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiAkbm9kZSBbLCBkYm5hbWU9 PiAkZGJuYW1lIF0pCisKK1NldCB1cCBhIG5ldyBzZXNzaW9uIGZvciB0aGUgbm9kZSwgd2hp Y2ggbXVzdCBiZSBhIEM8UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcj4KK2luc3RhbmNlLiBU aGUgZGVmYXVsdCBkYmFtZSBpcyBDPHBvc3RncmVzPi4KKworPWl0ZW0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KGNvbm5zdHIgPT4gJGNvbm5zdHIgWywgbGliZGlyID0+ICRs aWJkaXJdKQorCitTZXQgdXAgYSBuZXcgc2Vzc2lvbiBmb3IgdGhlIGNvbm5lY3Rpb24gc3Ry aW5nLiBJZiB1c2luZyB0aGUgRkZJIGxpYnBxIHdyYXBwZXIsCitDPCRsaWJkaXI+IG11c3Qg cG9pbnQgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgbGlicHEgbGlicmFyeSBpcyBpbnN0 YWxsZWQuCisKKz1jdXQKKworc3ViIG5ldworeworCW15ICRjbGFzcyA9IHNoaWZ0OworCW15 ICRzZWxmID0ge307CisJYmxlc3MgJHNlbGYsICRjbGFzczsKKwlteSAlYXJncyA9IEBfOwor CW15ICRub2RlID0gJGFyZ3N7bm9kZX07CisJbXkgJGRibmFtZSA9ICRhcmdze2RibmFtZX0g fHwgJ3Bvc3RncmVzJzsKKwlteSAkbGliZGlyID0gJGFyZ3N7bGliZGlyfTsKKwlteSAkY29u bnN0ciA9ICRhcmdze2Nvbm5zdHJ9OworCW15ICR3YWl0ID0gJGFyZ3N7d2FpdH0gLy8gMTsK Kwl1bmxlc3MgKCRzZXR1cF9vaykKKwl7CisJCXVubGVzcyAoJGxpYmRpcikKKwkJeworCQkJ Y3JvYWsgImJhZCBub2RlIiB1bmxlc3MgJG5vZGUtPmlzYSgiUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlciIpOworCQkJJGxpYmRpciA9ICRub2RlLT5jb25maWdfZGF0YSgkXk8gZXEgJ01T V2luMzInID8gJy0tYmluZGlyJyA6ICctLWxpYmRpcicpOworCQl9CisJCV9zZXR1cCgkbGli ZGlyKTsKKwl9CisJdW5sZXNzICgkY29ubnN0cikKKwl7CisJCWNyb2FrICJiYWQgbm9kZSIg dW5sZXNzICRub2RlLT5pc2EoIlBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIiKTsKKwkJJGNv bm5zdHIgPSAkbm9kZS0+Y29ubnN0cigkZGJuYW1lKTsKKwl9CisJJHNlbGYtPntjb25uc3Ry fSA9ICRjb25uc3RyOworCSRzZWxmLT57bm90aWNlc30gPSBbXTsKKworCWlmICgkd2FpdCkK Kwl7CisJCSRzZWxmLT57Y29ubn0gPSBQUWNvbm5lY3RkYigkY29ubnN0cik7CisJCSMgVGhl IGRlc3RydWN0b3Igd2lsbCBjbGVhbiB1cCBmb3IgdXMgZXZlbiBpZiB3ZSBmYWlsCisJCXJl dHVybiB1bmRlZiB1bmxlc3MgUFFzdGF0dXMoJHNlbGYtPntjb25ufSkgPT0gQ09OTkVDVElP Tl9PSzsKKwkJJHNlbGYtPl9zZXR1cF9ub3RpY2VfcHJvY2Vzc29yKCk7CisJCXJldHVybiAk c2VsZjsKKwl9CisJZWxzZQorCXsKKwkJJHNlbGYtPntjb25ufSA9IFBRY29ubmVjdFN0YXJ0 KCRjb25uc3RyKTsKKwkJcmV0dXJuIFBRc3RhdHVzKCRzZWxmLT57Y29ubn0pICE9IENPTk5F Q1RJT05fQkFEID8gJHNlbGYgOiB1bmRlZjsKKwl9Cit9CisKKyMgU2V0IHVwIGEgbm90aWNl IHByb2Nlc3NvciB0byBjYXB0dXJlIG5vdGljZXMvd2FybmluZ3MKK3N1YiBfc2V0dXBfbm90 aWNlX3Byb2Nlc3NvcgoreworCW15ICRzZWxmID0gc2hpZnQ7CisKKwkjIE9ubHkgYXZhaWxh YmxlIHdpdGggRkZJIGJhY2tlbmQKKwlyZXR1cm4gdW5sZXNzIGRlZmluZWQgJmNyZWF0ZV9u b3RpY2VfcHJvY2Vzc29yOworCisJbXkgJG5vdGljZXMgPSAkc2VsZi0+e25vdGljZXN9Owor CisJIyBDcmVhdGUgY2xvc3VyZSB0aGF0IGNhcHR1cmVzIG5vdGljZXMgaW50byBvdXIgYXJy YXkKKwkkc2VsZi0+e19ub3RpY2VfY2xvc3VyZX0gPSBjcmVhdGVfbm90aWNlX3Byb2Nlc3Nv cihzdWIgeworCQlteSAoJGFyZywgJG1lc3NhZ2UpID0gQF87CisJCXB1c2ggQCRub3RpY2Vz LCAkbWVzc2FnZTsKKwl9KTsKKworCVBRc2V0Tm90aWNlUHJvY2Vzc29yKCRzZWxmLT57Y29u bn0sICRzZWxmLT57X25vdGljZV9jbG9zdXJlfSwgdW5kZWYpOworfQorCisKKyMgZm9yIGEg Y29ubmVjdGlvbiBzdGFydGVkIHdpdGggUFFjb25uZWN0U3RhcnQsIHdhaXQgdW50aWwgaXQg aXMgaW4gQ09OTkVDVElPTl9PSyBzdGF0ZS4KKyMgVXNlcyBQUWNvbm5lY3RQb2xsIHRvIGRy aXZlIHRoZSBhc3luYyBjb25uZWN0aW9uIGZvcndhcmQuCitzdWIgd2FpdF9jb25uZWN0Cit7 CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJbXkg JHRpbWVvdXQgPSAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsK KwlteSAkc3RhcnQgPSB0aW1lOworCXdoaWxlICgxKQorCXsKKwkJbXkgJHBvbGxfcmVzID0g UFFjb25uZWN0UG9sbCgkY29ubik7CisJCW15ICRzdGF0dXMgPSBQUXN0YXR1cygkY29ubik7 CisKKwkJIyBDb25uZWN0aW9uIGlzIGNvbXBsZXRlCisJCWlmICgkcG9sbF9yZXMgPT0gUEdS RVNfUE9MTElOR19PSyB8fCAkc3RhdHVzID09IENPTk5FQ1RJT05fT0spCisJCXsKKwkJCSRz ZWxmLT5fc2V0dXBfbm90aWNlX3Byb2Nlc3NvcigpOworCQkJcmV0dXJuOworCQl9CisKKwkJ IyBDb25uZWN0aW9uIGZhaWxlZAorCQlpZiAoJHBvbGxfcmVzID09IFBHUkVTX1BPTExJTkdf RkFJTEVEIHx8ICRzdGF0dXMgPT0gQ09OTkVDVElPTl9CQUQpCisJCXsKKwkJCWRpZSAiY29u bmVjdGlvbiBmYWlsZWQ6ICIgLiBQUWVycm9yTWVzc2FnZSgkY29ubik7CisJCX0KKworCQlk aWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBjb25uZWN0aW9uIiBpZiB0aW1lIC0gJHN0YXJ0 ID4gJHRpbWVvdXQ7CisKKwkJIyBXYWl0IG9uIHNvY2tldCBiYXNlZCBvbiB3aGF0IFBRY29u bmVjdFBvbGwgbmVlZHMKKwkJbXkgJHNvY2tldCA9IFBRc29ja2V0KCRjb25uKTsKKwkJaWYg KCRzb2NrZXQgPj0gMCkKKwkJeworCQkJbXkgJGZvclJlYWQgPSAoJHBvbGxfcmVzID09IFBH UkVTX1BPTExJTkdfUkVBRElORykgPyAxIDogMDsKKwkJCW15ICRmb3JXcml0ZSA9ICgkcG9s bF9yZXMgPT0gUEdSRVNfUE9MTElOR19XUklUSU5HKSA/IDEgOiAwOworCQkJbXkgJGVuZF90 aW1lID0gUFFnZXRDdXJyZW50VGltZVVTZWMoKSArIDFfMDAwXzAwMDsgICMgMSBzZWNvbmQK KwkJCVBRc29ja2V0UG9sbCgkc29ja2V0LCAkZm9yUmVhZCwgJGZvcldyaXRlLCAkZW5kX3Rp bWUpOworCQl9CisJfQorfQorCisjIFNpbmdsZSBzdGVwIG9mIGFzeW5jIGNvbm5lY3Rpb24g cG9sbGluZyAtIGRyaXZlcyB0aGUgY29ubmVjdGlvbiBzdGF0ZSBtYWNoaW5lCisjIGZvcndh cmQgd2l0aG91dCBibG9ja2luZy4gUmV0dXJucyB0aGUgcG9sbCByZXN1bHQgKFBHUkVTX1BP TExJTkdfKiBjb25zdGFudCkuCitzdWIgcG9sbF9jb25uZWN0Cit7CisJbXkgJHNlbGYgPSBz aGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJcmV0dXJuIFBRY29ubmVjdFBv bGwoJGNvbm4pOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5jbG9zZSgpCisKK0Ns b3NlIHRoZSBjb25uZWN0aW9uCisKKz1jdXQKKworc3ViIGNsb3NlCit7CisJbXkgJHNlbGYg PSBzaGlmdDsKKwlQUWZpbmlzaCgkc2VsZi0+e2Nvbm59KTsKKwlkZWxldGUgJHNlbGYtPntj b25ufTsKK30KKworIyBBbGlhcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEJhY2tncm91bmRQ c3FsCisqcXVpdCA9IFwmY2xvc2U7CisKKyMgY2xvc2UgdGhlIHNlc3Npb24gaWYgdGhlIG9i amVjdCBnb2VzIG91dCBvZiBzY29wZQorc3ViIERFU1RST1kKK3sKKwlteSAkc2VsZiA9IHNo aWZ0OworCisJIyBEdXJpbmcgZ2xvYmFsIGRlc3RydWN0aW9uIHRoZSBGRkk6OlBsYXR5cHVz IGJpbmRpbmdzIChhbmQgYW55IG5vdGljZQorCSMgcHJvY2Vzc29yIGNsb3N1cmUgcmVnaXN0 ZXJlZCB3aXRoIGxpYnBxKSBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gdG9ybgorCSMgZG93biBp biBhbiB1bnByZWRpY3RhYmxlIG9yZGVyLiAgQ2FsbGluZyBQUWZpbmlzaCgpIHRoZW4gY2Fu IGludm9rZSBhCisJIyBmcmVlZCBub3RpY2UgY2FsbGJhY2sgb3IgYSBmcmVlZCBGRkkgdGh1 bmssIGR5aW5nIHdpdGggIkNhbid0IHVzZSBhbgorCSMgdW5kZWZpbmVkIHZhbHVlIGFzIGEg c3Vicm91dGluZSByZWZlcmVuY2UiLiAgVGhlIHByb2Nlc3MgaXMgZXhpdGluZworCSMgYW55 d2F5LCBzbyBqdXN0IGxldCB0aGUgT1MgcmVjbGFpbSB0aGUgc29ja2V0LgorCXJldHVybiBp ZiAke15HTE9CQUxfUEhBU0V9IGVxICdERVNUUlVDVCc7CisKKwkkc2VsZi0+Y2xvc2UgaWYg ZXhpc3RzICRzZWxmLT57Y29ubn07Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnJl Y29ubmVjdCgpCisKK1Jlb3BlbiB0aGUgc2Vzc2lvbiB1c2luZyB0aGUgb3JpZ2luYWwgY29u bnN0ci4gSWYgdGhlIHNlc3Npb24gaXMgc3RpbGwgb3BlbiwKK2Nsb3NlIGl0IGJlZm9yZSBy ZW9wZW5pbmcuCisKKz1jdXQKKworc3ViIHJlY29ubmVjdAoreworCW15ICRzZWxmID0gc2hp ZnQ7CisJJHNlbGYtPmNsb3NlIGlmIGV4aXN0cyAkc2VsZi0+e2Nvbm59OworCSRzZWxmLT57 Y29ubn0gPSBQUWNvbm5lY3RkYigkc2VsZi0+e2Nvbm5zdHJ9KTsKKwlteSAkc3RhdHVzID0g UFFzdGF0dXMoJHNlbGYtPntjb25ufSk7CisJaWYgKCRzdGF0dXMgPT0gQ09OTkVDVElPTl9P SykKKwl7CisJCSRzZWxmLT5fc2V0dXBfbm90aWNlX3Byb2Nlc3NvcigpOworCX0KKwlyZXR1 cm4gJHN0YXR1czsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+cmVjb25uZWN0X2Fu ZF9jbGVhcigpCisKK1JlY29ubmVjdCBhbmQgY2xlYXIgYWxsIGNhcHR1cmVkIG5vdGljZXMu IFJldHVybnMgdGhlIGNvbm5lY3Rpb24gc3RhdHVzLgorCis9Y3V0CisKK3N1YiByZWNvbm5l Y3RfYW5kX2NsZWFyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3RhdHVzID0gJHNl bGYtPnJlY29ubmVjdCgpOworCSRzZWxmLT5jbGVhcl9ub3RpY2VzKCk7CisJcmV0dXJuICRz dGF0dXM7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPmdldF9ub3RpY2VzKCkKKwor UmV0dXJuIGFuIGFycmF5cmVmIG9mIGFsbCBjYXB0dXJlZCBub3RpY2VzL3dhcm5pbmdzIHNp bmNlIHRoZSBsYXN0IGNsZWFyLgorCis9Y3V0CisKK3N1YiBnZXRfbm90aWNlcworeworCW15 ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuICRzZWxmLT57bm90aWNlc307Cit9CisKKz1wb2QK KworPWl0ZW0gJHNlc3Npb24tPmdldF9ub3RpY2VzX3N0cigpCisKK1JldHVybiBhbGwgY2Fw dHVyZWQgbm90aWNlcy93YXJuaW5ncyBhcyBhIHNpbmdsZSBzdHJpbmcgKGpvaW5lZCBieSBl bXB0eSBzdHJpbmcpLgorVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBCYWNrZ3JvdW5kUHNxbCdz IHtzdGRlcnJ9IGZpZWxkIHdvcmtzLgorCis9Y3V0CisKK3N1YiBnZXRfbm90aWNlc19zdHIK K3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVybiBqb2luKCcnLCBAeyRzZWxmLT57bm90 aWNlc319KTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Y2xlYXJfbm90aWNlcygp CisKK0NsZWFyIGFsbCBjYXB0dXJlZCBub3RpY2VzL3dhcm5pbmdzLgorCis9Y3V0CisKK3N1 YiBjbGVhcl9ub3RpY2VzCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkjIENsZWFyIGluIHBs YWNlIC0gZG9uJ3QgcmVwbGFjZSB0aGUgYXJyYXksIGFzIHRoZSBub3RpY2UgcHJvY2Vzc29y CisJIyBjbG9zdXJlIGhhcyBhIHJlZmVyZW5jZSB0byBpdAorCUB7JHNlbGYtPntub3RpY2Vz fX0gPSAoKTsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Z2V0X3N0ZGVycigpCisK K1JldHVybiBhIHN0ZGVyci1saWtlIHN0cmluZyBjb250YWluaW5nIGFsbCBub3RpY2VzIHBs dXMgYW55IGVycm9yIG1lc3NhZ2UKK2Zyb20gdGhlIGxhc3QgcXVlcnkuIFRoaXMgbWltaWNz IEJhY2tncm91bmRQc3FsJ3Mge3N0ZGVycn0gYmVoYXZpb3IuCisKKz1jdXQKKworc3ViIGdl dF9zdGRlcnIKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRzdGRlcnIgPSAkc2VsZi0+ Z2V0X25vdGljZXNfc3RyKCk7CisJaWYgKGV4aXN0cyAkc2VsZi0+e2xhc3RfZXJyb3J9ICYm IGRlZmluZWQgJHNlbGYtPntsYXN0X2Vycm9yfSkKKwl7CisJCSRzdGRlcnIgLj0gJHNlbGYt PntsYXN0X2Vycm9yfTsKKwl9CisJcmV0dXJuICRzdGRlcnI7Cit9CisKKz1wb2QKKworPWl0 ZW0gJHNlc3Npb24tPmNsZWFyX3N0ZGVycigpCisKK0NsZWFyIG5vdGljZXMgYW5kIGxhc3Qg ZXJyb3IsIGxpa2Ugc2V0dGluZyAkcHNxbC0+e3N0ZGVycn0gPSAnJy4KKworPWN1dAorCitz dWIgY2xlYXJfc3RkZXJyCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkkc2VsZi0+Y2xlYXJf bm90aWNlcygpOworCWRlbGV0ZSAkc2VsZi0+e2xhc3RfZXJyb3J9OworfQorCis9cG9kCisK Kz1pdGVtICRzZXNzaW9uLT5jb25uX3N0YXR1cygpCisKK1JldHVybiB0aGUgY29ubmVjdGlv biBzdGF0dXMuIFRoaXMgd2lsbCBiZSBhIGxpYnBxIHN0YXR1cyB2YWx1ZSBsaWtlCitDPENP Tk5FQ1RJT05fT0s+LgorCis9Y3V0CisKK3N1YiBjb25uX3N0YXR1cworeworCW15ICRzZWxm ID0gc2hpZnQ7CisJcmV0dXJuIGV4aXN0cyAkc2VsZi0+e2Nvbm59ID8gUFFzdGF0dXMoJHNl bGYtPntjb25ufSkgOiB1bmRlZjsKK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+YmFj a2VuZF9waWQoKQorCitSZXR1cm4gdGhlIGJhY2tlbmQgcHJvY2VzcyBJRCBmb3IgdGhpcyBj b25uZWN0aW9uLgorCis9Y3V0CisKK3N1YiBiYWNrZW5kX3BpZAoreworCW15ICRzZWxmID0g c2hpZnQ7CisJcmV0dXJuIFBRYmFja2VuZFBJRCgkc2VsZi0+e2Nvbm59KTsKK30KKworPXBv ZAorCis9aXRlbSAkc2Vzc2lvbi0+ZG8oJHNxbCwgLi4uKQorCitSdW4gb25lIG9yIG1vcmUg U1FMIHN0YXRlbWVudHMgc3luY2hyb25vdXNseSAodXNpbmcgQzxQUWV4ZWM+KS4gVGhlIHN0 YXRlbWVudHMKK3Nob3VsZCBub3QgcmV0dXJuIGFueSB0dXBsZXMuIFJldHVybnMgdGhlIHN0 YXR1cywgd2hpY2ggd2lsbCBiZQorQzxQR1JFU19DT01NQU5EX09LPiAoaS5lLiAxKSBpbiB0 aGUgY2FzZSBvZiBzdWNjZXNzLgorCis9Y3V0CisKK3N1YiBkbworeworCW15ICRzZWxmID0g c2hpZnQ7CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15ICRzdGF0dXM7CisJZm9y ZWFjaCBteSAkc3FsIChAXykKKwl7CisJCW15ICRyZXN1bHQgPSBQUWV4ZWMoJGNvbm4sICRz cWwpOworCQkkc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7CisJCVBRY2xlYXIo JHJlc3VsdCk7CisJCXJldHVybiAkc3RhdHVzIHVubGVzcyAkc3RhdHVzID09IFBHUkVTX0NP TU1BTkRfT0s7CisJfQorCXJldHVybiAkc3RhdHVzOworfQorCis9cG9kCisKKz1pdGVtICRz ZXNzaW9uLT5kb19hc3luYygkc3FsKQorCitSdW4gYSBzaW5nbGUgc3RhdGVtZW50IGFzeW5j aHJvbm91c2x5LCB1c2luZyBDPFBRc2VuZFF1ZXJ5Pi4gVGhlIHJldHVybiB2YWx1ZQoraXMg YSBib29sZWFuIGluZGljYXRpbmcgc3VjY2Vzcy4KKworPWN1dAorCitzdWIgZG9fYXN5bmMK K3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlt eSAkc3FsID0gc2hpZnQ7CisJbXkgJHJlc3VsdCA9IFBRc2VuZFF1ZXJ5KCRjb25uLCAkc3Fs KTsKKwlyZXR1cm4gJHJlc3VsdDsgIyAxIG9yIDAKK30KKworIyBnZXQgdGhlIG5leHQgcmVz dWx0c2V0IGZyb20gc29tZSBhc3luYyBjb21tYW5kcworIyB3YWl0IGlmIG5lY2Vzc2FyeSB1 c2luZyBQUXNvY2tldFBvbGwKKyMgYy5mLiBsaWJwcXNydl9nZXRfcmVzdWx0CitzdWIgX2dl dF9yZXN1bHQKK3sKKwlteSAkY29ubiA9IHNoaWZ0OworCW15ICRzb2NrZXQgPSBQUXNvY2tl dCgkY29ubik7CisJd2hpbGUgKFBRaXNCdXN5KCRjb25uKSkKKwl7CisJCSMgV2FpdCBmb3Ig dGhlIHNvY2tldCB0byBiZWNvbWUgcmVhZGFibGUgKG5vIHRpbWVvdXQgPSAtMSkKKwkJUFFz b2NrZXRQb2xsKCRzb2NrZXQsIDEsIDAsIC0xKTsKKwkJbGFzdCBpZiBQUWNvbnN1bWVJbnB1 dCgkY29ubikgPT0gMDsKKwl9CisJcmV0dXJuIFBRZ2V0UmVzdWx0KCRjb25uKTsKK30KKwor PXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbigpCisKK1dhaXQg dW50aWwgYWxsIGFzeW5jaHJvbm91cyBTUUwgaGFzIGNvbXBsZXRlZAorCis9Y3V0CisKK3N1 YiB3YWl0X2Zvcl9jb21wbGV0aW9uCit7CisJIyB3YWl0IGZvciBhbGwgdGhlIHJlc3VsdHNl dHMgYW5kIGNsZWFyIHRoZW0KKwkjIGMuZi4gbGlicHFzcnZfZ2V0X3Jlc3VsdF9sYXN0CisJ bXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJd2hpbGUg KG15ICRyZXMgPSBfZ2V0X3Jlc3VsdCgkY29ubikpCisJeworCQlQUWNsZWFyKCRyZXMpOwor CX0KK30KKworPXBvZAorCis9aXRlbSAkc2Vzc2lvbi0+Z2V0X2FzeW5jX3Jlc3VsdCgpCisK K1dhaXQgZm9yIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvZiBhbiBhc3luYyBxdWVyeSBhcyBh IHJlc3VsdCBoYXNoLgorQ2xlYXJzIGFueSBzdWJzZXF1ZW50IHJlc3VsdHMuCisKKz1jdXQK Kworc3ViIGdldF9hc3luY19yZXN1bHQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRj b25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkcmVzdWx0ID0gX2dldF9yZXN1bHQoJGNvbm4p OworCXJldHVybiB1bmRlZiB1bmxlc3MgJHJlc3VsdDsKKwlteSAkcmVzID0gX2dldF9yZXN1 bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJUFFjbGVhcigkcmVzdWx0KTsKKwkjIENsZWFy IGFueSByZW1haW5pbmcgcmVzdWx0cworCXdoaWxlIChteSAkciA9IF9nZXRfcmVzdWx0KCRj b25uKSkKKwl7CisJCVBRY2xlYXIoJHIpOworCX0KKwlyZXR1cm4gJHJlczsKK30KKworPXBv ZAorCis9aXRlbSAkc2Vzc2lvbi0+d2FpdF9mb3JfYXN5bmNfcGF0dGVybigkcGF0dGVybiwg JHRpbWVvdXQpCisKK1dhaXQgZm9yIGFuIGFzeW5jIHF1ZXJ5IHJlc3VsdCB3aG9zZSBwc3Fs b3V0IG1hdGNoZXMgdGhlIGdpdmVuIHJlZ2V4IHBhdHRlcm4uCitSZXR1cm5zIHRoZSBtYXRj aGluZyBvdXRwdXQgc3RyaW5nLCBvciBkaWVzIG9uIHRpbWVvdXQvZXJyb3IuCitEZWZhdWx0 IHRpbWVvdXQgaXMgZnJvbSAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVm YXVsdC4KKworPWN1dAorCitzdWIgd2FpdF9mb3JfYXN5bmNfcGF0dGVybgoreworCW15ICRz ZWxmID0gc2hpZnQ7CisJbXkgJHBhdHRlcm4gPSBzaGlmdDsKKwlteSAkdGltZW91dCA9IHNo aWZ0IC8vICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OworCW15 ICRjb25uID0gJHNlbGYtPntjb25ufTsKKwlteSAkc29ja2V0ID0gUFFzb2NrZXQoJGNvbm4p OworCW15ICRzdGFydCA9IHRpbWU7CisKKwl3aGlsZSAoMSkKKwl7CisJCSMgQ2hlY2sgaWYg cmVzdWx0IGlzIHJlYWR5IChub24tYmxvY2tpbmcpCisJCVBRY29uc3VtZUlucHV0KCRjb25u KTsKKwkJaWYgKCFQUWlzQnVzeSgkY29ubikpCisJCXsKKwkJCW15ICRyZXN1bHQgPSBQUWdl dFJlc3VsdCgkY29ubik7CisJCQlpZiAoJHJlc3VsdCkKKwkJCXsKKwkJCQlteSAkcmVzID0g X2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJCQkJUFFjbGVhcigkcmVzdWx0 KTsKKwkJCQkjIENsZWFyIGFueSByZW1haW5pbmcgcmVzdWx0cworCQkJCXdoaWxlIChteSAk ciA9IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwkJCQl7CisJCQkJCVBRY2xlYXIoJHIpOworCQkJ CX0KKwkJCQlteSAkb3V0cHV0ID0gJHJlcy0+e3BzcWxvdXR9OworCQkJCWlmICgkb3V0cHV0 ID1+ICRwYXR0ZXJuKQorCQkJCXsKKwkJCQkJcmV0dXJuICRvdXRwdXQ7CisJCQkJfQorCQkJ CSMgSWYgd2UgZ290IGEgcmVzdWx0IGJ1dCBpdCBkaWRuJ3QgbWF0Y2gsIHJldHVybiBpdCBh bnl3YXkKKwkJCQkjIChjYWxsZXIgbWF5IHdhbnQgdG8gY2hlY2sgZXJyb3IpCisJCQkJcmV0 dXJuICRvdXRwdXQ7CisJCQl9CisJCX0KKworCQlkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZv ciBhc3luYyByZXN1bHQiIGlmIHRpbWUgLSAkc3RhcnQgPiAkdGltZW91dDsKKworCQkjIFdh aXQgZm9yIHRoZSBzb2NrZXQgdG8gYmVjb21lIHJlYWRhYmxlLCB3aXRoIDEgc2Vjb25kIHRp bWVvdXQKKwkJIyB0byBhbGxvdyBwZXJpb2RpYyB0aW1lb3V0IGNoZWNrcworCQlteSAkZW5k X3RpbWUgPSBQUWdldEN1cnJlbnRUaW1lVVNlYygpICsgMV8wMDBfMDAwOyAgIyAxIHNlY29u ZAorCQlQUXNvY2tldFBvbGwoJHNvY2tldCwgMSwgMCwgJGVuZF90aW1lKTsKKwl9Cit9CisK Kz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnRyeV9nZXRfYXN5bmNfcmVzdWx0KCkKKworTm9u LWJsb2NraW5nIGNoZWNrIGZvciBhc3luYyBxdWVyeSByZXN1bHQuIFJldHVybnMgcmVzdWx0 IGhhc2ggaWYgYXZhaWxhYmxlLAordW5kZWYgaWYgcXVlcnkgaXMgc3RpbGwgcnVubmluZy4K KworPWN1dAorCitzdWIgdHJ5X2dldF9hc3luY19yZXN1bHQKK3sKKwlteSAkc2VsZiA9IHNo aWZ0OworCW15ICRjb25uID0gJHNlbGYtPntjb25ufTsKKworCVBRY29uc3VtZUlucHV0KCRj b25uKTsKKwlyZXR1cm4gdW5kZWYgaWYgUFFpc0J1c3koJGNvbm4pOworCisJbXkgJHJlc3Vs dCA9IFBRZ2V0UmVzdWx0KCRjb25uKTsKKwlyZXR1cm4gdW5kZWYgdW5sZXNzICRyZXN1bHQ7 CisKKwlteSAkcmVzID0gX2dldF9yZXN1bHRfZGF0YSgkcmVzdWx0LCAkY29ubik7CisJUFFj bGVhcigkcmVzdWx0KTsKKwkjIENsZWFyIGFueSByZW1haW5pbmcgcmVzdWx0cworCXdoaWxl IChteSAkciA9IFBRZ2V0UmVzdWx0KCRjb25uKSkKKwl7CisJCVBRY2xlYXIoJHIpOworCX0K KwlyZXR1cm4gJHJlczsKK30KKworPXBvZAorCis9aXRlbSAgJHNlc3Npb24tPnNldF9wYXNz d29yZCgkdXNlciwgJHBhc3N3b3JkKQorCitTZXQgdGhlIHVzZXIncyBwYXNzd29yZCBieSBj YWxsaW5nIEM8UFFjaGFuZ2VQYXNzd29yZD4uCisKK1JldHVybnMgYSByZXN1bHQgaGFzaC4K KworPWN1dAorCisjIHNldCBwYXNzd29yZCBmb3IgdXNlcgorc3ViIHNldF9wYXNzd29yZAor eworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHVzZXIgPSBzaGlmdDsKKwlteSAkcGFzc3dv cmQgPSBzaGlmdDsKKwlteSAkY29ubiA9ICRzZWxmLT57Y29ubn07CisJbXkgJHJlc3VsdCA9 IFBRY2hhbmdlUGFzc3dvcmQoJGNvbm4sICR1c2VyLCAkcGFzc3dvcmQpOworCW15ICRyZXQg PSBfZ2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQpOworCVBRY2xlYXIoJHJlc3VsdCk7CisJcmV0 dXJuICRyZXQ7Cit9CisKKyMgQ29tbW9uIGludGVybmFsIHJvdXRpbmUgdG8gcHJvY2VzcyBy ZXN1bHQgZGF0YS4KKyMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBkZWFkIGFuZCB3aWxsIGJl IGdhcmJhZ2UgY29sbGVjdGVkIGFzIG5lY2Vzc2FyeS4KKworc3ViIF9nZXRfcmVzdWx0X2Rh dGEKK3sKKwlteSAkcmVzdWx0ID0gc2hpZnQ7CisJbXkgJGNvbm4gPSBzaGlmdDsKKwlteSAk c3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoJHJlc3VsdCk7CisJbXkgJHJlcyA9IHsJc3RhdHVz ID0+ICRzdGF0dXMsIG5hbWVzID0+IFtdLCB0eXBlcyA9PiBbXSwgcm93cyA9PiBbXSwKKwkJ CXBzcWxvdXQgPT4gIiJ9OworCXVubGVzcyAoJHN0YXR1cyA9PSBQR1JFU19UVVBMRVNfT0sg fHwgJHN0YXR1cyA9PSBQR1JFU19DT01NQU5EX09LKQorCXsKKwkJJHJlcy0+e2Vycm9yX21l c3NhZ2V9ID0gUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCQlyZXR1cm4gJHJlczsKKwl9CisJ aWYgKCRzdGF0dXMgPT0gUEdSRVNfQ09NTUFORF9PSykKKwl7CisJCXJldHVybiAkcmVzOwor CX0KKwlteSAkbnR1cGxlcyA9IFBRbnR1cGxlcygkcmVzdWx0KTsKKwlteSAkbmZpZWxkcyA9 IFBRbmZpZWxkcygkcmVzdWx0KTsKKwkjIGFzc3VtaW5nIGhlcmUgdGhhdCB0aGUgc3RyaW5n cyByZXR1cm5lZCBieSBQUWZuYW1lIGFuZCBQUWdldHZhbHVlCisJIyBhcmUgbWFwcGVkIGlu dG8gcGVybCBzcGFjZSB1c2luZyBzZXRzdnB2IG9yIHNpbWlsYXIgYW5kIHRodXMgd29uJ3QK KwkjIGJlIGFmZmVjdCBieSB1cyBjYWxsaW5nIFBRY2xlYXIgb24gdGhlIHJlc3VsdCBvYmpl Y3QuCisJZm9yZWFjaCBteSAkZmllbGQgKDAgLi4gJG5maWVsZHMtMSkKKwl7CisJCXB1c2go QHskcmVzLT57bmFtZXN9fSwgUFFmbmFtZSgkcmVzdWx0LCAkZmllbGQpKTsKKwkJcHVzaChA eyRyZXMtPnt0eXBlc319LCBQUWZ0eXBlKCRyZXN1bHQsICRmaWVsZCkpOworCX0KKwlteSBA dGV4dHJvd3M7CisJZm9yZWFjaCBteSAkbnJvdyAoMCAuLiAkbnR1cGxlcyAtIDEpCisJewor CQlteSAkcm93ID0gW107CisJCWZvcmVhY2ggbXkgJGZpZWxkICggMCAuLiAkbmZpZWxkcyAt IDEpCisJCXsKKwkJCW15ICR2YWwgPSBQUWdldHZhbHVlKCRyZXN1bHQsICRucm93LCAkZmll bGQpOworCQkJaWYgKCgkdmFsIC8vICIiKSBlcSAiIikKKwkJCXsKKwkJCQkkdmFsID0gdW5k ZWYgaWYgUFFnZXRpc251bGwoJHJlc3VsdCwgJG5yb3csICRmaWVsZCk7CisJCQl9CisJCQlw dXNoKEAkcm93LCAkdmFsKTsKKwkJfQorCQlwdXNoKEB7JHJlcy0+e3Jvd3N9fSwgJHJvdyk7 CisJCW5vIHdhcm5pbmdzIHF3KHVuaW5pdGlhbGl6ZWQpOworCQlwdXNoKEB0ZXh0cm93cywg am9pbignfCcsIEAkcm93KSk7CisJfQorCSRyZXMtPntwc3Fsb3V0fSA9IGpvaW4oIlxuIixA dGV4dHJvd3MpIGlmICRudHVwbGVzOworCXJldHVybiAkcmVzOworfQorCisKKz1wb2QKKwor PWl0ZW0gJHNlc3Npb24tPnF1ZXJ5KCRzcWwpCisKK1J1bnMgc3FsIHRoYXQgbWlnaHQgcmV0 dXJuIHR1cGxlcy4KKworUmV0dXJucyBhIHJlc3VsdCBoYXNoLgorCis9Y3V0CisKK3N1YiBx dWVyeQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJbXkgJHNxbCA9IHNoaWZ0OworCW15ICRj b25uID0gJHNlbGYtPntjb25ufTsKKworCSMgVXNlIFBRc2VuZFF1ZXJ5ICsgUFFnZXRSZXN1 bHQgdG8gaGFuZGxlIG11bHRpLXN0YXRlbWVudCBTUUwgcHJvcGVybHkuCisJIyBUaGlzIGNv bGxlY3RzIHJlc3VsdHMgZnJvbSBhbGwgc3RhdGVtZW50cyBhbmQgcmV0dXJucyB0aGUgbGFz dCBvbmUKKwkjIHRoYXQgaGFkIHR1cGxlcywgc2ltaWxhciB0byBob3cgcHNxbCB3b3Jrcy4K KwlQUXNlbmRRdWVyeSgkY29ubiwgJHNxbCkgb3IgZG8geworCQlyZXR1cm4geyBzdGF0dXMg PT4gLTEsIGVycm9yX21lc3NhZ2UgPT4gUFFlcnJvck1lc3NhZ2UoJGNvbm4pLAorCQkJCSBu YW1lcyA9PiBbXSwgdHlwZXMgPT4gW10sIHJvd3MgPT4gW10sIHBzcWxvdXQgPT4gIiIgfTsK Kwl9OworCisJbXkgJGZpbmFsX3JlczsKKwlteSAkbGFzdF9lcnJvcjsKKwlteSBAYWxsX3Bz cWxvdXQ7CisKKwl3aGlsZSAobXkgJHJlc3VsdCA9IF9nZXRfcmVzdWx0KCRjb25uKSkKKwl7 CisJCW15ICRyZXMgPSBfZ2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQsICRjb25uKTsKKwkJUFFj bGVhcigkcmVzdWx0KTsKKworCQkjIENvbGxlY3Qgb3V0cHV0IGZyb20gYWxsIHN0YXRlbWVu dHMKKwkJcHVzaCBAYWxsX3BzcWxvdXQsICRyZXMtPntwc3Fsb3V0fSBpZiAkcmVzLT57cHNx bG91dH0gbmUgIiI7CisKKwkJIyBUcmFjayBlcnJvcnMKKwkJJGxhc3RfZXJyb3IgPSAkcmVz LT57ZXJyb3JfbWVzc2FnZX0gaWYgZXhpc3RzICRyZXMtPntlcnJvcl9tZXNzYWdlfTsKKwor CQkjIEtlZXAgdGhlIGxhc3QgcmVzdWx0IHRoYXQgaGFkIHR1cGxlcywgb3IgdGhlIGxhc3Qg cmVzdWx0IG92ZXJhbGwKKwkJaWYgKCRyZXMtPntzdGF0dXN9ID09IFBHUkVTX1RVUExFU19P SyB8fCAhZGVmaW5lZCAkZmluYWxfcmVzKQorCQl7CisJCQkkZmluYWxfcmVzID0gJHJlczsK KwkJfQorCX0KKworCSRmaW5hbF9yZXMgLy89IHsgc3RhdHVzID0+IFBHUkVTX0NPTU1BTkRf T0ssIG5hbWVzID0+IFtdLCB0eXBlcyA9PiBbXSwKKwkJCQkJIHJvd3MgPT4gW10sIHBzcWxv dXQgPT4gIiIgfTsKKworCSMgQ29tYmluZSBhbGwgb3V0cHV0IChsaWtlIHBzcWwgZG9lcykK KwkkZmluYWxfcmVzLT57cHNxbG91dH0gPSBqb2luKCJcbiIsIEBhbGxfcHNxbG91dCkgaWYg QGFsbF9wc3Fsb3V0OworCisJIyBJZiB0aGVyZSB3YXMgYW55IGVycm9yLCBpbmNsdWRlIGl0 IGluIHRoZSByZXN1bHQgZm9yIHF1ZXJ5X3NhZmUKKwkkZmluYWxfcmVzLT57ZXJyb3JfbWVz c2FnZX0gPSAkbGFzdF9lcnJvciBpZiBkZWZpbmVkICRsYXN0X2Vycm9yOworCisJIyBTdG9y ZSBlcnJvciBmb3IgZ2V0X3N0ZGVycigpCisJJHNlbGYtPntsYXN0X2Vycm9yfSA9ICRsYXN0 X2Vycm9yOworCisJIyBJZiB3ZSdyZSBpbiBhbiBhYm9ydGVkIHRyYW5zYWN0aW9uIHN0YXRl LCByb2xsIGl0IGJhY2sgdG8gY2xlYW4gdXAuCisJIyBUaGlzIG1pbWljcyBwc3FsJ3MgYmVo YXZpb3Igd2l0aCBvbl9lcnJvcl9zdG9wID0+IDAuCisJaWYgKFBRdHJhbnNhY3Rpb25TdGF0 dXMoJGNvbm4pID09IFBRVFJBTlNfSU5FUlJPUikKKwl7CisJCW15ICRyYiA9IFBRZXhlYygk Y29ubiwgIlJPTExCQUNLIik7CisJCVBRY2xlYXIoJHJiKSBpZiAkcmI7CisJfQorCisJcmV0 dXJuICRmaW5hbF9yZXM7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5X3Nh ZmUoJHNxbCkKKworUnVucyBzcWwgdGhhdCBtaWdodCByZXR1cm4gdHVwbGVzLCBjcm9ha2lu ZyBpZiB0aGVyZSdzIGFuIGVycm9yLgorUmV0dXJucyB0aGUgcHNxbG91dCBzdHJpbmcgKGxp a2UgcHNxbCAtQXQgb3V0cHV0KSBvbiBzdWNjZXNzLgorCis9Y3V0CisKK3N1YiBxdWVyeV9z YWZlCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkc3FsID0gc2hpZnQ7CisJbXkgJHJl cyA9ICRzZWxmLT5xdWVyeSgkc3FsKTsKKwlpZiAoZXhpc3RzICRyZXMtPntlcnJvcl9tZXNz YWdlfSkgeworCQkjIERlYnVnOiBzaG93IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJlZAorCQlt eSAkc2hvcnRfc3FsID0gc3Vic3RyKCRzcWwsIDAsIDEwMCk7CisJCSRzaG9ydF9zcWwgPX4g cy9ccysvIC9nOworCQljcm9hayAicXVlcnlfc2FmZSBmYWlsZWQgb24gWyRzaG9ydF9zcWwu Li5dOiAkcmVzLT57ZXJyb3JfbWVzc2FnZX0iOworCX0KKwlyZXR1cm4gJHJlcy0+e3BzcWxv dXR9OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoJHNxbCBb LCAkbWlzc2luZ19vayBdICkKKworUnVuIGEgcXVlcnkgdGhhdCBpcyBleHBlY3RlZCB0byBy ZXR1cm4gbm8gbW9yZSB0aGFuIG9uZSB0dXBsZSB3aXRoIG9uZSB2YWx1ZTsKKworSWYgQzwk bWlzc2luZ19vaz4gaXMgdHJ1ZSwgcmV0dXJuIHVuZGVmIGlmIHRoZSBxdWVyeSByZXR1cm5z IG5vIHR1cGxlLiBPdGhlcndpc2UKK2Nyb2FrIGlmIHRoZXJlIGlzIG5vdCBleGFjdGx5IG9u ZSB0dXBsZSwgb3Igb2YgdGhlIHR1cGxlIGRvZXMgbm90IGhhdmUKK2V4Y3RseSBvbmUgdmFs dWUuCisKK0lmIG5vbmUgb2YgdGhlc2UgYXBwbHksIHJldHVybiB0aGUgc2luZ2xlIHZhbHVl IGZyb20gdGhlIHF1ZXJ5LiBBIE5VTEwgdmFsdWUKK3dpbGwgcmVzdWx0IGluIHVuZGVmLCBz byBpZiBDPCRtaXNzaW5nX29rPiBpcyB0cnVlIHlvdSB3b24ndCBiZSBhYmxlIHRvCitkaXN0 aW5ndWlzaCBiZXR3ZWVuIGEgbnVsbCB2YWx1ZSBhbmQgYSBtaXNzaW5nIHR1cGxlLgorCitB IG5vbiBOVUxMIHZhbHVlIGlzIHJldHVybmVkIGFzIHRoZSBzdHJpbmcgdmFsdWUgb2J0YWlu ZWQgZnJvbSBDPFBRZ2V0dmFsdWU+LgorCis9Y3V0CisKK3N1YiBxdWVyeV9vbmV2YWwKK3sK KwlteSAkc2VsZiA9IHNoaWZ0OworCW15ICRzcWwgPSBzaGlmdDsKKwlteSAkbWlzc2luZ19v ayA9IHNoaWZ0OyAjIGRlZmF1bHQgaXMgbm90IG9rCisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nv bm59OworCW15ICRyZXN1bHQgPSBQUWV4ZWMoJGNvbm4sICRzcWwpOworCW15ICRzdGF0dXMg PSBQUXJlc3VsdFN0YXR1cygkcmVzdWx0KTsKKwl1bmxlc3MgICgkc3RhdHVzID09IFBHUkVT X1RVUExFU19PSykKKwl7CisJCVBRY2xlYXIoJHJlc3VsdCkgaWYgJHJlc3VsdDsKKwkJY3Jv YWsgUFFlcnJvck1lc3NhZ2UoJGNvbm4pOworCX0KKwlteSAkbnR1cGxlcyA9IFBRbnR1cGxl cygkcmVzdWx0KTsKKwlyZXR1cm4gdW5kZWYgaWYgKCRtaXNzaW5nX29rICYmICEkbnR1cGxl cyk7CisJbXkgJG5maWVsZHMgPSBQUW5maWVsZHMoJHJlc3VsdCk7CisJY3JvYWsgIiRudHVw bGVzIHR1cGxlcyAhPSAxIG9yICRuZmllbGRzIGZpZWxkcyAhPSAxIgorCSAgaWYgJG50dXBs ZXMgIT0gMSB8fCAkbmZpZWxkcyAhPSAxOworCW15ICR2YWwgPSBQUWdldHZhbHVlKCRyZXN1 bHQsIDAsIDApOworCWlmICgkdmFsIGVxICIiKQorCXsKKwkJJHZhbCA9IHVuZGVmIGlmIFBR Z2V0aXNudWxsKCRyZXN1bHQsIDAsIDApOworCX0KKwlQUWNsZWFyKCRyZXN1bHQpOworCXJl dHVybiAkdmFsOworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5xdWVyeV90dXBsZXMo JHNxbCwgLi4uKQorCitSdW4gdGhlIHNxbCBjb21tYW5kcyBhbmQgcmV0dXJuIHRoZSBvdXRw dXQgYXMgYSBzaW5nbGUgcGllY2Ugb2YgdGV4dCBpbiB0aGUKK3NhbWUgZm9ybWF0IGFzIEM8 cHNxbCAtQSAtdD4uCisKK0ZpZWxkcyB3aXRoaW4gdHVwbGVzIGFyZSBzZXBhcmF0ZWQgYnkg YSAifCIsIHR1cGxlcyBhcmUgc3BlYXJhdGVkIGJ5ICJcbiIKKworPWN1dAorCitzdWIgcXVl cnlfdHVwbGVzCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwkjIFVzZSBwaXBlbGluZWQgdmVy c2lvbiBmb3IgNCsgcXVlcmllcyB3aGVyZSB0aGUgb3ZlcmhlYWQgaXMgd29ydGggaXQKKwly ZXR1cm4gJHNlbGYtPnF1ZXJ5X3R1cGxlc19waXBlbGluZWQoQF8pIGlmIEBfID49IDQ7CisK KwlteSBAcmVzdWx0czsKKwlmb3JlYWNoIG15ICRzcWwgKEBfKQorCXsKKwkJbXkgJHJlcyA9 ICRzZWxmLT5xdWVyeSgkc3FsKTsKKwkJY3JvYWsgJHJlcy0+e2Vycm9yX21lc3NhZ2V9CisJ CSAgdW5sZXNzICRyZXMtPntzdGF0dXN9ID09IFBHUkVTX1RVUExFU19PSzsKKwkJbXkgJHJv d3MgPSAkcmVzLT57cm93c307CisJCXVubGVzcyAoQCRyb3dzKQorCQl7CisJCQkjIHVuZm9y dHVuYXRlbHkgYnJlYWtzIGF0IGxlYXN0IG9uZSB0ZXN0CisJCQkjIHB1c2goQHJlc3VsdHMs Ii0tIGVtcHR5Iik7CisJCQluZXh0OworCQl9CisJCSMgam9pbiB3aWxsIHJlbmRlciB1bmRl ZiBhcyBhbiBlbXB0eSBzdHJpbmcgaGVyZQorCQlubyB3YXJuaW5ncyBxdyh1bmluaXRpYWxp emVkKTsKKwkJbXkgQHR1cGxlcyA9IG1hcCB7IGpvaW4oJ3wnLCBAJF8pOyB9IEAkcm93czsK KwkJcHVzaChAcmVzdWx0cywgam9pbigiXG4iLEB0dXBsZXMpKTsKKwl9CisJcmV0dXJuIGpv aW4oIlxuIixAcmVzdWx0cyk7Cit9CisKKz1wb2QKKworPWl0ZW0gJHNlc3Npb24tPnF1ZXJ5 X3R1cGxlc19waXBlbGluZWQoJHNxbCwgLi4uKQorCitSdW4gbXVsdGlwbGUgU1FMIHF1ZXJp ZXMgdXNpbmcgcGlwZWxpbmUgbW9kZSBmb3IgZWZmaWNpZW5jeS4gUmV0dXJucyBvdXRwdXQK K2luIHRoZSBzYW1lIGZvcm1hdCBhcyBDPHF1ZXJ5X3R1cGxlcz4gYnV0IHdpdGggb25seSBv bmUgbmV0d29yayByb3VuZC10cmlwCitmb3IgYWxsIHF1ZXJpZXMuCisKKz1jdXQKKworc3Vi IHF1ZXJ5X3R1cGxlc19waXBlbGluZWQKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCW15IEBx dWVyaWVzID0gQF87CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCW15IEByZXN1bHRz OworCisJIyBFbnRlciBwaXBlbGluZSBtb2RlCisJUFFlbnRlclBpcGVsaW5lTW9kZSgkY29u bikgb3IgY3JvYWsgIkZhaWxlZCB0byBlbnRlciBwaXBlbGluZSBtb2RlIjsKKworCSMgU2Vu ZCBhbGwgcXVlcmllcyB1c2luZyBQUXNlbmRRdWVyeVBhcmFtcyAoUFFzZW5kUXVlcnkgbm90 IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZSkKKwlmb3IgbXkgJHNxbCAoQHF1ZXJpZXMpCisJ eworCQlQUXNlbmRRdWVyeVBhcmFtcygkY29ubiwgJHNxbCwgMCwgdW5kZWYsIHVuZGVmLCB1 bmRlZiwgdW5kZWYsIDApIG9yIGRvIHsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7 CisJCQljcm9hayAiRmFpbGVkIHRvIHNlbmQgcXVlcnk6ICIgLiBQUWVycm9yTWVzc2FnZSgk Y29ubik7CisJCX07CisJfQorCisJIyBNYXJrIGVuZCBvZiBwaXBlbGluZQorCVBRcGlwZWxp bmVTeW5jKCRjb25uKSBvciBkbyB7CisJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29ubik7CisJ CWNyb2FrICJGYWlsZWQgdG8gc3luYyBwaXBlbGluZSI7CisJfTsKKworCSMgQ29sbGVjdCBy ZXN1bHRzIGZvciBlYWNoIHF1ZXJ5CisJZm9yIG15ICRpICgwIC4uICQjcXVlcmllcykKKwl7 CisJCW15ICRyZXN1bHQgPSBfZ2V0X3Jlc3VsdCgkY29ubik7CisJCWlmICghJHJlc3VsdCkK KwkJeworCQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKTsKKwkJCWNyb2FrICJObyByZXN1 bHQgZm9yIHF1ZXJ5ICRpIjsKKwkJfQorCisJCW15ICRzdGF0dXMgPSBQUXJlc3VsdFN0YXR1 cygkcmVzdWx0KTsKKwkJaWYgKCRzdGF0dXMgPT0gUEdSRVNfUElQRUxJTkVfQUJPUlRFRCkK KwkJeworCQkJUFFjbGVhcigkcmVzdWx0KTsKKwkJCVBRZXhpdFBpcGVsaW5lTW9kZSgkY29u bik7CisJCQljcm9hayAiUGlwZWxpbmUgYWJvcnRlZCBhdCBxdWVyeSAkaSI7CisJCX0KKwor CQlpZiAoJHN0YXR1cyA9PSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCW15ICRyZXMgPSBf Z2V0X3Jlc3VsdF9kYXRhKCRyZXN1bHQsICRjb25uKTsKKwkJCW15ICRyb3dzID0gJHJlcy0+ e3Jvd3N9OworCQkJaWYgKEAkcm93cykKKwkJCXsKKwkJCQlubyB3YXJuaW5ncyBxdyh1bmlu aXRpYWxpemVkKTsKKwkJCQlteSBAdHVwbGVzID0gbWFwIHsgam9pbignfCcsIEAkXyk7IH0g QCRyb3dzOworCQkJCXB1c2goQHJlc3VsdHMsIGpvaW4oIlxuIiwgQHR1cGxlcykpOworCQkJ fQorCQl9CisJCWVsc2lmICgkc3RhdHVzICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCXsKKwkJ CW15ICRlcnIgPSBQUWVycm9yTWVzc2FnZSgkY29ubik7CisJCQlQUWNsZWFyKCRyZXN1bHQp OworCQkJUFFleGl0UGlwZWxpbmVNb2RlKCRjb25uKTsKKwkJCWNyb2FrICJRdWVyeSAkaSBm YWlsZWQ6ICRlcnIiOworCQl9CisJCVBRY2xlYXIoJHJlc3VsdCk7CisKKwkJIyBDb25zdW1l IHRoZSBOVUxMIHJlc3VsdCB0aGF0IG1hcmtzIGVuZCBvZiB0aGlzIHF1ZXJ5J3MgcmVzdWx0 cworCQl3aGlsZSAobXkgJGV4dHJhID0gUFFnZXRSZXN1bHQoJGNvbm4pKQorCQl7CisJCQlQ UWNsZWFyKCRleHRyYSk7CisJCX0KKwl9CisKKwkjIENvbnN1bWUgdGhlIHBpcGVsaW5lIHN5 bmMgcmVzdWx0CisJbXkgJHN5bmNfcmVzdWx0ID0gX2dldF9yZXN1bHQoJGNvbm4pOworCWlm ICgkc3luY19yZXN1bHQpCisJeworCQlteSAkc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoJHN5 bmNfcmVzdWx0KTsKKwkJUFFjbGVhcigkc3luY19yZXN1bHQpOworCQlpZiAoJHN0YXR1cyAh PSBQR1JFU19QSVBFTElORV9TWU5DKQorCQl7CisJCQlQUWV4aXRQaXBlbGluZU1vZGUoJGNv bm4pOworCQkJY3JvYWsgIkV4cGVjdGVkIFBHUkVTX1BJUEVMSU5FX1NZTkMsIGdvdCAkc3Rh dHVzIjsKKwkJfQorCX0KKworCSMgRXhpdCBwaXBlbGluZSBtb2RlCisJUFFleGl0UGlwZWxp bmVNb2RlKCRjb25uKSBvciBjcm9hayAiRmFpbGVkIHRvIGV4aXQgcGlwZWxpbmUgbW9kZSI7 CisKKwlyZXR1cm4gam9pbigiXG4iLCBAcmVzdWx0cyk7Cit9CisKKworc3ViIHNldG5vbmJs b2NraW5nCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlteSAkdmFsID0gc2hpZnQ7CisJbXkg JHJlcyA9IFBRc2V0bm9uYmxvY2tpbmcoJHNlbGYtPntjb25ufSwgJHZhbCk7CisJY3JvYWsg InByb2JsZW0gc2V0dGluZyBub24tYmxvY2tpbmciCisJICBpZiAkcmVzOworCXJldHVybjsK K30KKworc3ViIGlzbm9uYmxvY2tpbmcKK3sKKwlteSAkc2VsZiA9IHNoaWZ0OworCXJldHVy biBQUWlzbm9uYmxvY2tpbmcoJHNlbGYtPntjb25ufSk7Cit9CisKK3N1YiBlbnRlclBpcGVs aW5lTW9kZQoreworCW15ICRzZWxmID0gc2hpZnQ7CisJcmV0dXJuIFBRZW50ZXJQaXBlbGlu ZU1vZGUoJHNlbGYtPntjb25ufSk7Cit9CisKK3N1YiBleGl0UGlwZWxpbmVNb2RlCit7CisJ bXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFleGl0UGlwZWxpbmVNb2RlKCRzZWxmLT57 Y29ubn0pOworfQorCitzdWIgcGlwZWxpbmVTdGF0dXMKK3sKKwlteSAkc2VsZiA9IHNoaWZ0 OworCXJldHVybiBQUXBpcGVsaW5lU3RhdHVzKCRzZWxmLT57Y29ubn0pOworfQorCitzdWIg cGlwZWxpbmVTeW5jCit7CisJbXkgJHNlbGYgPSBzaGlmdDsKKwlyZXR1cm4gUFFwaXBlbGlu ZVN5bmMoJHNlbGYtPntjb25ufSk7Cit9CisKKworc3ViIGRvX3BpcGVsaW5lCit7CisJbXkg JHNlbGYgPSBzaGlmdDsKKwlteSAkc3RhdGVtZW50ID0gc2hpZnQ7CisJbXkgQGFyZ3MgPSBA XzsKKwlteSAkbmFyZ3MgPSBzY2FsYXIoQGFyZ3MpOworCW15ICRyZXMgPSBQUXNlbmRRdWVy eVBhcmFtcygkc2VsZi0+e2Nvbm59LCAkc3RhdGVtZW50LCAkbmFyZ3MsIHVuZGVmLCBcQGFy Z3MsIHVuZGVmICwgdW5kZWYsIDApOworCXJldHVybiAkcmVzOworfQorCis9cG9kCisKKz1p dGVtICRzZXNzaW9uLT5nZXRfbm90aWZpY2F0aW9uKCkKKworQ2hlY2sgZm9yIGEgcGVuZGlu ZyBub3RpZmljYXRpb24gYW5kIHJldHVybiBpdCBhcyBhIGhhc2hyZWYgd2l0aCBrZXlzCitD PGNoYW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+LiBSZXR1cm5zIHVuZGVmIGlmIG5v IG5vdGlmaWNhdGlvbiBpcworYXZhaWxhYmxlLgorCitBdXRvbWF0aWNhbGx5IGNvbnN1bWVz IGFueSBwZW5kaW5nIGlucHV0IGJlZm9yZSBjaGVja2luZyBmb3Igbm90aWZpY2F0aW9ucy4K KworPWN1dAorCitzdWIgZ2V0X25vdGlmaWNhdGlvbgoreworCW15ICRzZWxmID0gc2hpZnQ7 CisJbXkgJGNvbm4gPSAkc2VsZi0+e2Nvbm59OworCisJIyBDb25zdW1lIGFueSBwZW5kaW5n IGlucHV0CisJUFFjb25zdW1lSW5wdXQoJGNvbm4pOworCisJbXkgJG5vdGlmeSA9IFBRbm90 aWZpZXMoJGNvbm4pOworCXJldHVybiB1bmRlZiB1bmxlc3MgJG5vdGlmeTsKKworCW15ICRy ZXN1bHQgPSB7CisJCWNoYW5uZWwgPT4gUFFub3RpZnlfY2hhbm5lbCgkbm90aWZ5KSwKKwkJ cGlkICAgICA9PiBQUW5vdGlmeV9iZV9waWQoJG5vdGlmeSksCisJCXBheWxvYWQgPT4gUFFu b3RpZnlfcGF5bG9hZCgkbm90aWZ5KSwKKwl9OworCisJUFFub3RpZnlfZnJlZSgkbm90aWZ5 KTsKKworCXJldHVybiAkcmVzdWx0OworfQorCis9cG9kCisKKz1pdGVtICRzZXNzaW9uLT5n ZXRfYWxsX25vdGlmaWNhdGlvbnMoKQorCitDb25zdW1lIGlucHV0IGFuZCByZXR1cm4gYWxs IHBlbmRpbmcgbm90aWZpY2F0aW9ucyBhcyBhbiBhcnJheXJlZiBvZiBoYXNocmVmcy4KK0Vh Y2ggaGFzaHJlZiBoYXMga2V5cyBDPGNoYW5uZWw+LCBDPHBpZD4sIGFuZCBDPHBheWxvYWQ+ LgorCis9Y3V0CisKK3N1YiBnZXRfYWxsX25vdGlmaWNhdGlvbnMKK3sKKwlteSAkc2VsZiA9 IHNoaWZ0OworCW15IEBub3RpZmljYXRpb25zOworCisJd2hpbGUgKG15ICRub3RpZnkgPSAk c2VsZi0+Z2V0X25vdGlmaWNhdGlvbigpKQorCXsKKwkJcHVzaCBAbm90aWZpY2F0aW9ucywg JG5vdGlmeTsKKwl9CisKKwlyZXR1cm4gXEBub3RpZmljYXRpb25zOworfQorCis9cG9kCisK Kz1iYWNrCisKKz1jdXQKKworCisxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9tZXNv bi5idWlsZCBiL3NyYy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKaW5kZXggMGZkMzZjOWU1NzAu LjM3ZDhhYzJhMzZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL21lc29uLmJ1aWxkCisr KyBiL3NyYy90ZXN0L3BlcmwvbWVzb24uYnVpbGQKQEAgLTQsNiArNCwxMCBAQAogCiBpbnN0 YWxsX2RhdGEoCiAgICdQb3N0Z3JlU1FML1ZlcnNpb24ucG0nLAorICAnUG9zdGdyZVNRTC9G aW5kTGliLnBtJywKKyAgJ1Bvc3RncmVTUUwvUHFGRkkucG0nLAorICAnUG9zdGdyZVNRTC9Q cUNvbnN0YW50cy5wbScsCisgICdQb3N0Z3JlU1FML1BHVHlwZXMucG0nLAogICBpbnN0YWxs X2RpcjogZGlyX3BneHMgLyAnc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FMJykKIAogaW5zdGFs bF9kYXRhKApAQCAtMTUsNCArMTksNSBAQCBpbnN0YWxsX2RhdGEoCiAgICdQb3N0Z3JlU1FM L1Rlc3QvQmFja2dyb3VuZFBzcWwucG0nLAogICAnUG9zdGdyZVNRTC9UZXN0L0FkanVzdER1 bXAucG0nLAogICAnUG9zdGdyZVNRTC9UZXN0L0FkanVzdFVwZ3JhZGUucG0nLAorICAnUG9z dGdyZVNRTC9UZXN0L1Nlc3Npb24ucG0nLAogICBpbnN0YWxsX2RpcjogZGlyX3BneHMgLyAn c3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QnKQotLSAKMi40My4wCgo= --------------6iQoF3MkVh7mSGjIgCVULhlm Content-Type: text/x-patch; charset=UTF-8; name="v12-0002-Use-PostgreSQL-Test-Session-within-the-TAP-test-.patch" Content-Disposition: attachment; filename*0="v12-0002-Use-PostgreSQL-Test-Session-within-the-TAP-test-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkMGQwNGQwODA5OTJjNDI0NzhkMjI4YTRmNzNmZjE5YTQ3MDMyOTdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAyIEp1biAyMDI2IDExOjI4OjA1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMi8zXSBVc2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbiB3aXRoaW4gdGhl IFRBUCB0ZXN0CiBmcmFtZXdvcmsKCk1ha2UgdGhlIHRlc3QgZnJhbWV3b3JrIGl0c2VsZiBi ZW5lZml0IGZyb20gaW4tcHJvY2VzcyBsaWJwcSBhY2Nlc3M6CgogICogUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlcjo6c2FmZV9wc3FsKCkgcnVucyBhIHNpbmdsZSwgcGFyYW1ldGVybGVz cwogICAgc3RhdGVtZW50IHRocm91Z2ggYSBTZXNzaW9uIGluc3RlYWQgb2Ygc3Bhd25pbmcg cHNxbCwgZmFsbGluZyBiYWNrCiAgICB0byBwc3FsIGZvciBtdWx0aS1zdGF0ZW1lbnQgb3Ig cGFyYW1ldGVyaXplZCBjYWxscy4KICAqIHBvbGxfcXVlcnlfdW50aWwoKSBwb2xscyB0aHJv dWdoIGEgU2Vzc2lvbi4KICAqIGFkZCBwb2xsX3VudGlsX2Nvbm5lY3Rpb24oKSB0byB3YWl0 IGZvciB0aGUgc2VydmVyIHRvIGFjY2VwdAogICAgY29ubmVjdGlvbnMuCgpBbHNvIGhhcmRl biBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlscyBhZ2FpbnN0IGVycm9ycyByYWlzZWQgZHVyaW5n IGdsb2JhbApkZXN0cnVjdGlvbi4gIFN1Y2ggZXJyb3JzIGhhcHBlbiBhZnRlciB0aGUgdGVz dCBib2R5IGhhcyBmaW5pc2hlZCAoZm9yCmV4YW1wbGUgRkZJOjpQbGF0eXB1cyBiaW5kaW5n cyBvciBjYWxsYmFjayBjbG9zdXJlcyBiZWluZyBmcmVlZCBpbiBhbgp1bnByZWRpY3RhYmxl IG9yZGVyIGFzIHRoZSBwcm9jZXNzIGV4aXRzKTsgcmVwb3J0aW5nIHRoZW0gYnkgY2FsbGlu Zwpkb25lX3Rlc3RpbmcoKSBhIHNlY29uZCB0aW1lIHdvdWxkIHNwdXJpb3VzbHkgZmFpbCBh biBvdGhlcndpc2UtcGFzc2luZwp0ZXN0LCBzbyB0aGV5IGFyZSBub3cgbG9nZ2VkIGFuZCBp Z25vcmVkLgotLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0g fCAxMTQgKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNR TC9UZXN0L1V0aWxzLnBtICAgfCAgMTMgKysrCiAyIGZpbGVzIGNoYW5nZWQsIDkxIGluc2Vy dGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwv VGVzdC9DbHVzdGVyLnBtCmluZGV4IDRmY2IxZjZiZTU2Li5hNWJmMThlNmExNiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQorKysgYi9z cmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCkBAIC0xMTIsNiArMTEy LDcgQEAgdXNlIFNvY2tldDsKIHVzZSBUZXN0OjpNb3JlOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzICAgICAgICAgICgpOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkJhY2tncm91 bmRQc3FsICgpOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGV4dDo6 UGFyc2VXb3JkcyAgICAgICAgICAgICAgICAgcXcoc2hlbGx3b3Jkcyk7CiB1c2UgVGltZTo6 SGlSZXMgICAgICAgICAgICAgICAgICAgICAgcXcodXNsZWVwKTsKIHVzZSBTY2FsYXI6OlV0 aWwgICAgICAgICAgICAgICAgICAgICBxdyhibGVzc2VkKTsKQEAgLTIwNzEsMjAgKzIwNzIs NDAgQEAgc3ViIHNhZmVfcHNxbAogCiAJbXkgKCRzdGRvdXQsICRzdGRlcnIpOwogCi0JbXkg JHJldCA9ICRzZWxmLT5wc3FsKAotCQkkZGJuYW1lLCAkc3FsLAotCQklcGFyYW1zLAotCQlz dGRvdXQgPT4gXCRzdGRvdXQsCi0JCXN0ZGVyciA9PiBcJHN0ZGVyciwKLQkJb25fZXJyb3Jf ZGllID0+IDEsCi0JCW9uX2Vycm9yX3N0b3AgPT4gMSk7Ci0KLQkjIHBzcWwgY2FuIGVtaXQg c3RkZXJyIGZyb20gTk9USUNFcyBldGMKLQlpZiAoJHN0ZGVyciBuZSAiIikKKwkjIGZvciBu b3cgb25seSB1c2UgYSBTZXNzaW9uIG9iamVjdCBmb3Igc2luZ2xlIHN0YXRlbWVudCBzcWwg d2l0aG91dAorCSMgYW55IHNwZWNpYWwgcGFyYW1zCisJaWYgICgkc3FsID1+IC9cdy8gJiYg JHNxbCAhfiAvXFxiaW5kfDsuKlx3L3MgJiYgIXNjYWxhcihrZXlzKCVwYXJhbXMpKSkKIAl7 Ci0JCXByaW50ICIjIyMjIEJlZ2luIHN0YW5kYXJkIGVycm9yXG4iOwotCQlwcmludCAkc3Rk ZXJyOwotCQlwcmludCAiXG4jIyMjIEVuZCBzdGFuZGFyZCBlcnJvclxuIjsKKworCQlteSAk c2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlPT4gJHNlbGYs CisJCQkJCQkJCQkJCQkJIGRibmFtZSA9PiAkZGJuYW1lKTsKKwkJbXkgJHJlcyA9ICRzZXNz aW9uLT5xdWVyeSgkc3FsKTsKKwkJbXkgJHN0YXR1cyA9ICRyZXMtPntzdGF0dXN9OworCQkk c3Rkb3V0ID0gJHJlcy0+e3BzcWxvdXR9IC8vICIiOworCQkkc3RkZXJyID0gJHJlcy0+e2Vy cm9yX21lc3NhZ2V9IC8vICIiOworCQlkaWUgImVycm9yOiBzdGF0dXMgPSAkc3RhdHVzIHN0 ZGVycjogJyRzdGRlcnInXG53aGlsZSBydW5uaW5nICckc3FsJyIKKwkJICBpZiAoJHN0YXR1 cyAhPSAxICYmICRzdGF0dXMgIT0gMik7ICMgQ09NTUFORF9PSyBvciBDT01NQU5EX1RVUExF UworCisJfQorCWVsc2UKKwl7CisJCSMgZGlhZyAic2FmZV9wc3FsIGNhbGwgaGFzIHBhcmFt cyBvciBtdWx0aXBsZSBzdGF0ZW1lbnRzIjsKKworCQlteSAkcmV0ID0gJHNlbGYtPnBzcWwo CisJCQkkZGJuYW1lLCAkc3FsLAorCQkJJXBhcmFtcywKKwkJCXN0ZG91dCA9PiBcJHN0ZG91 dCwKKwkJCXN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJCW9uX2Vycm9yX2RpZSA9PiAxLAorCQkJ b25fZXJyb3Jfc3RvcCA9PiAxKTsKKworCQkjIHBzcWwgY2FuIGVtaXQgc3RkZXJyIGZyb20g Tk9USUNFcyBldGMKKwkJaWYgKCRzdGRlcnIgbmUgIiIpCisJCXsKKwkJCXByaW50ICIjIyMj IEJlZ2luIHN0YW5kYXJkIGVycm9yXG4iOworCQkJcHJpbnQgJHN0ZGVycjsKKwkJCXByaW50 ICJcbiMjIyMgRW5kIHN0YW5kYXJkIGVycm9yXG4iOworCQl9CiAJfQogCiAJcmV0dXJuICRz dGRvdXQ7CkBAIC0yMTg4LDYgKzIyMDksOSBAQCBzdWIgcHNxbAogCiAJbG9jYWwgJUVOViA9 ICRzZWxmLT5fZ2V0X2VudigpOwogCisJIyB1bmNvbW1lbnQgdG8gZ2V0IGEgY291bnQgb2Yg Y2FsbHMgdG8gcHNxbAorCSMgbm90ZSgiY291bnRpbmcgcHNxbCIpOworCiAJbXkgJHN0ZG91 dCA9ICRwYXJhbXN7c3Rkb3V0fTsKIAlteSAkc3RkZXJyID0gJHBhcmFtc3tzdGRlcnJ9Owog CW15ICRyZXBsaWNhdGlvbiA9ICRwYXJhbXN7cmVwbGljYXRpb259OwpAQCAtMjc2MSwzMyAr Mjc4NSwyMCBAQCBzdWIgcG9sbF9xdWVyeV91bnRpbAogewogCW15ICgkc2VsZiwgJGRibmFt ZSwgJHF1ZXJ5LCAkZXhwZWN0ZWQpID0gQF87CiAKLQlsb2NhbCAlRU5WID0gJHNlbGYtPl9n ZXRfZW52KCk7Ci0KIAkkZXhwZWN0ZWQgPSAndCcgdW5sZXNzIGRlZmluZWQoJGV4cGVjdGVk KTsgICAgIyBkZWZhdWx0IHZhbHVlCiAKLQlteSAkY21kID0gWwotCQkkc2VsZi0+aW5zdGFs bGVkX2NvbW1hbmQoJ3BzcWwnKSwgJy0tbm8tcHNxbHJjJywKLQkJJy0tbm8tYWxpZ24nLCAn LS10dXBsZXMtb25seScsCi0JCSctLWRibmFtZScgPT4gJHNlbGYtPmNvbm5zdHIoJGRibmFt ZSkKLQldOwotCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKwlteSAkc2Vzc2lvbiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRzZWxmLAorCQkJCQkJCQkJCQkJ IGRibmFtZSA9PiAkZGJuYW1lKTsKIAlteSAkbWF4X2F0dGVtcHRzID0gMTAgKiAkUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKIAlteSAkYXR0ZW1wdHMgPSAw OwogCisJbXkgJHF1ZXJ5X3ZhbHVlOworCiAJd2hpbGUgKCRhdHRlbXB0cyA8ICRtYXhfYXR0 ZW1wdHMpCiAJewotCQlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biAkY21kLAotCQkgICc8 JyA9PiBcJHF1ZXJ5LAotCQkgICc+JyA9PiBcJHN0ZG91dCwKLQkJICAnMj4nID0+IFwkc3Rk ZXJyOwotCi0JCWNob21wKCRzdGRvdXQpOwotCQljaG9tcCgkc3RkZXJyKTsKLQotCQlpZiAo JHN0ZG91dCBlcSAkZXhwZWN0ZWQgJiYgJHN0ZGVyciBlcSAnJykKLQkJewotCQkJcmV0dXJu IDE7Ci0JCX0KKwkJbXkgJHJlc3VsdCA9ICRzZXNzaW9uLT5xdWVyeSgkcXVlcnkpOworCQkk cXVlcnlfdmFsdWUgPSAoJHJlc3VsdC0+e3BzcWxvdXR9IC8vICIiKTsKKwkJcmV0dXJuIDEg aWYgICRxdWVyeV92YWx1ZSBlcSAkZXhwZWN0ZWQ7CiAKIAkJIyBXYWl0IDAuMSBzZWNvbmQg YmVmb3JlIHJldHJ5aW5nLgogCQl1c2xlZXAoMTAwXzAwMCk7CkBAIC0yODAyLDkgKzI4MTMs NDAgQEAgJHF1ZXJ5CiBleHBlY3RpbmcgdGhpcyBvdXRwdXQ6CiAkZXhwZWN0ZWQKIGxhc3Qg YWN0dWFsIHF1ZXJ5IG91dHB1dDoKLSRzdGRvdXQKLXdpdGggc3RkZXJyOgotJHN0ZGVycik7 CiskcXVlcnlfdmFsdWUKKyk7CisJcmV0dXJuIDA7Cit9CisKKz1wb2QKKworPWl0ZW0gJG5v ZGUtPnBvbGxfdW50aWxfY29ubmVjdGlvbigkZGJuYW1lKQorCitUcnkgdG8gY29ubmVjdCBy ZXBlYXRlZGx5LCB1bnRpbCBpdCB3ZSBzdWNjZWVkLgorVGltZXMgb3V0IGFmdGVyICRQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0IHNlY29uZHMuCitSZXR1cm5z IDEgaWYgc3VjY2Vzc2Z1bCwgMCBpZiB0aW1lZCBvdXQuCisKKz1jdXQKKworc3ViIHBvbGxf dW50aWxfY29ubmVjdGlvbgoreworCW15ICgkc2VsZiwgJGRibmFtZSkgPSBAXzsKKworCW15 ICRtYXhfYXR0ZW1wdHMgPSAxMCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91 dF9kZWZhdWx0OworCW15ICRhdHRlbXB0cyA9IDA7CisKKwl3aGlsZSAoJGF0dGVtcHRzIDwg JG1heF9hdHRlbXB0cykKKwl7CisJCW15ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJHNlbGYsCisJCQkJCQkJCQkJCQkJIGRibmFtZSA9PiAk ZGJuYW1lKTsKKwkJcmV0dXJuIDEgaWYgJHNlc3Npb247CisKKwkJIyBXYWl0IDAuMSBzZWNv bmQgYmVmb3JlIHJldHJ5aW5nLgorCQl1c2xlZXAoMTAwXzAwMCk7CisKKwkJJGF0dGVtcHRz Kys7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvVXRpbHMucG0KaW5kZXggZDNlNmFiZjdhNjguLmMwOTFjZTAzMjZkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbQorKysgYi9zcmMvdGVz dC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbQpAQCAtMjYyLDYgKzI2MiwxOSBAQCBJ TklUCiAJCSMgSWdub3JlIGRpZXMgaW5zaWRlIGV2YWxzCiAJCXJldHVybiBpZiAkXlMgPT0g MTsKIAorCQkjIERpZXMgZHVyaW5nIGdsb2JhbCBkZXN0cnVjdGlvbiBoYXBwZW4gYWZ0ZXIg dGhlIHRlc3QgYm9keSBoYXMKKwkJIyBmaW5pc2hlZCAoZG9uZV90ZXN0aW5nKCkgaGFzIGFs cmVhZHkgcnVuKS4gIFRoZXkgYXJlIHR5cGljYWxseQorCQkjIGhhcm1sZXNzIHRlYXJkb3du LW9yZGVyaW5nIGFydGlmYWN0cyAtLSBmb3IgZXhhbXBsZSBGRkk6OlBsYXR5cHVzCisJCSMg YmluZGluZ3Mgb3IgY2FsbGJhY2sgY2xvc3VyZXMgYmVpbmcgZnJlZWQgaW4gYW4gdW5wcmVk aWN0YWJsZSBvcmRlcgorCQkjIHdoaWxlIHRoZSBwcm9jZXNzIGV4aXRzLiAgUmVwb3J0aW5n IHRoZW0gYnkgY2FsbGluZyBkb25lX3Rlc3RpbmcoKQorCQkjIGFnYWluIHdvdWxkIHNwdXJp b3VzbHkgZmFpbCBhbiBvdGhlcndpc2UtcGFzc2luZyB0ZXN0LCBzbyBqdXN0IGxvZworCQkj IHRoZW0gYW5kIHJldHVybi4KKwkJaWYgKCR7XkdMT0JBTF9QSEFTRX0gZXEgJ0RFU1RSVUNU JykKKwkJeworCQkJZGlhZygiZGllIGR1cmluZyBnbG9iYWwgZGVzdHJ1Y3Rpb24gKGlnbm9y ZWQpOiAkX1swXSIpOworCQkJcmV0dXJuOworCQl9CisKIAkJZGlhZygiZGllOiAkX1swXSIp OwogCQkjIEFsc28gY2FsbCBkb25lX3Rlc3RpbmcoKSB0byBhdm9pZCB0aGUgY29uZnVzaW5n ICJubyBwbGFuIHdhcyBkZWNsYXJlZCIKIAkJIyBtZXNzYWdlIGluIFRBUCBvdXRwdXQgd2hl biBhIHRlc3QgZGllcy4KLS0gCjIuNDMuMAoK --------------6iQoF3MkVh7mSGjIgCVULhlm Content-Type: text/x-patch; charset=UTF-8; name="v12-0003-Convert-TAP-tests-to-PostgreSQL-Test-Session.patch" Content-Disposition: attachment; filename*0="v12-0003-Convert-TAP-tests-to-PostgreSQL-Test-Session.patch" Content-Transfer-Encoding: base64 RnJvbSA3ZTc1NWZkYjljMmZmZTViZDJhM2ZlNWRiOGRjY2Q1MWVlYWM4ZDA0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVHVlLCAyIEp1biAyMDI2IDExOjI4OjE1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMy8zXSBDb252ZXJ0IFRBUCB0ZXN0cyB0byBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uCgpDb252ZXJ0IHRlc3RzIHRoYXQgZHJvdmUgYSBsb25nLWxpdmVkIGJhY2tncm91 bmQgcHNxbCBwcm9jZXNzIChvcgpyZXBlYXRlZGx5IHNwYXduZWQgcHNxbCkgdG8gdXNlIHRo ZSBsaWJwcSBTZXNzaW9uIG9iamVjdCBpbnN0ZWFkLiAgVGhpcwpjb3ZlcnMgY29uY3VycmVu dC1zZXNzaW9uIGFuZCBhc3luY2hyb25vdXMtcXVlcnkgdGVzdHMgYWNyb3NzIGNvbnRyaWIs CnNyYy9iaW4gYW5kIHNyYy90ZXN0OiBhbWNoZWNrLCBibG9vbSwgcGdfdmlzaWJpbGl0eSwg dGVzdF9kZWNvZGluZywKcGdfYW1jaGVjaywgcGdfdXBncmFkZSwgYXV0aGVudGljYXRpb24s IG9hdXRoX3ZhbGlkYXRvciwgdGVzdF9haW8sCnRlc3RfY2hlY2tzdW1zLCB0ZXN0X21pc2Ms IHRlc3Rfc2xydSwgeGlkX3dyYXBhcm91bmQsIHBvc3RtYXN0ZXIsCnJlY292ZXJ5IGFuZCBz dWJzY3JpcHRpb24uCi0tLQogY29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0u cGwgICAgICAgIHwgIDM2ICstCiBjb250cmliL2FtY2hlY2svdC8wMDJfY2ljLnBsICAgICAg ICAgICAgICAgICAgfCAgIDcgKy0KIGNvbnRyaWIvYW1jaGVjay90LzAwM19jaWNfMnBjLnBs ICAgICAgICAgICAgICB8ICA2NCArKy0KIGNvbnRyaWIvYmxvb20vdC8wMDFfd2FsLnBsICAg ICAgICAgICAgICAgICAgICB8ICA0NCArLQogLi4uL3QvMDAxX2NvbmN1cnJlbnRfdHJhbnNh Y3Rpb24ucGwgICAgICAgICAgIHwgICA5ICstCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvdC8w MDFfcmVwbF9zdGF0cy5wbCAgICAgfCAgMTEgKy0KIHNyYy9iaW4vcGdfYW1jaGVjay90LzAw NF92ZXJpZnlfaGVhcGFtLnBsICAgICB8ICA5NyArKystLQogLi4uL3BnX3VwZ3JhZGUvdC8w MDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwgIHwgIDMwICstCiBzcmMvdGVzdC9hdXRoZW50 aWNhdGlvbi90LzAwMV9wYXNzd29yZC5wbCAgICAgfCAgMzUgKy0KIHNyYy90ZXN0L2F1dGhl bnRpY2F0aW9uL3QvMDA3X3ByZV9hdXRoLnBsICAgICB8ICAzNCArLQogLi4uL21vZHVsZXMv b2F1dGhfdmFsaWRhdG9yL3QvMDAxX3NlcnZlci5wbCAgIHwgIDI5ICstCiBzcmMvdGVzdC9t b2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fpby5wbCAgICAgICAgfCAxNjUgKysrKy0tLQogLi4u L21vZHVsZXMvdGVzdF9haW8vdC8wMDRfcmVhZF9zdHJlYW0ucGwgICAgIHwgIDc1ICsrLS0K IC4uLi9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDAyX3Jlc3RhcnRzLnBsICB8ICAgNyAr LQogLi4uL3Rlc3RfY2hlY2tzdW1zL3QvMDAzX3N0YW5kYnlfcmVzdGFydHMucGwgIHwgIDEz ICstCiAuLi4vbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwNF9vZmZsaW5lLnBsICAgfCAg IDcgKy0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1X3RpbWVvdXRzLnBsICB8 ICA0NSArLQogLi4uL21vZHVsZXMvdGVzdF9taXNjL3QvMDA3X2NhdGNhY2hlX2ludmFsLnBs IHwgIDI0ICstCiAuLi4vdC8wMTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbCAgICAg ICAgfCA0MDYgKysrKysrLS0tLS0tLS0tLS0tCiAuLi4vbW9kdWxlcy90ZXN0X21pc2MvdC8w MTFfbG9ja19zdGF0cy5wbCAgICAgfCAgOTYgKystLS0KIC4uLi90ZXN0X21pc2MvdC8wMTNf dGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsICB8ICAyNiArLQogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NscnUvdC8wMDFfbXVsdGl4YWN0LnBsIHwgIDE3ICstCiAuLi4veGlkX3dyYXBhcm91 bmQvdC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbCAgfCAgMTYgKy0KIC4uLi9tb2R1bGVzL3hp ZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbCAgICB8ICAyMSArLQogLi4uL3hpZF93cmFw YXJvdW5kL3QvMDA0X25vdGlmeV9mcmVlemUucGwgICAgIHwgIDI3ICstCiAuLi4vcG9zdG1h c3Rlci90LzAwMl9jb25uZWN0aW9uX2xpbWl0cy5wbCAgICAgfCAgMjYgKy0KIHNyYy90ZXN0 L3JlY292ZXJ5L3QvMDA5X3R3b3BoYXNlLnBsICAgICAgICAgICB8ICAxNiArLQogc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMTNfY3Jhc2hfcmVzdGFydC5wbCAgICAgIHwgICA0ICstCiBzcmMv dGVzdC9yZWNvdmVyeS90LzAyMl9jcmFzaF90ZW1wX2ZpbGVzLnBsICAgfCAgIDQgKy0KIHNy Yy90ZXN0L3JlY292ZXJ5L3QvMDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsICB8ICAzOSArLQog c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzdfaW52YWxpZF9kYXRhYmFzZS5wbCAgIHwgIDQ1ICst CiAuLi4vdC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsICAgICAgfCAgMjYg Ky0KIC4uLi9yZWNvdmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwgICB8ICAx MSArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbCAgIHwg IDEyICstCiAuLi4vcmVjb3ZlcnkvdC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwg fCAgNjYgKystCiAuLi4vdC8wNDdfY2hlY2twb2ludF9waHlzaWNhbF9zbG90LnBsICAgICAg ICAgfCAgMTggKy0KIC4uLi9yZWNvdmVyeS90LzA0OF92YWN1dW1faG9yaXpvbl9mbG9vci5w bCAgICB8ICA0MCArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3JfbHNuLnBs ICAgICAgIHwgMTU2ICsrKystLS0KIC4uLi9yZWNvdmVyeS90LzA1MF9yZWRvX3NlZ21lbnRf bWlzc2luZy5wbCAgICB8ICAxNCArLQogLi4uL3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93 YWxfbGV2ZWwucGwgICAgIHwgIDIzICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVf c3RyZWFtLnBsICAgICAgICAgfCAgMzUgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz NV9jb25mbGljdHMucGwgICAgICB8ICAyMyArLQogLi4uL3QvMDM4X3dhbHNuZF9zaHV0ZG93 bl90aW1lb3V0LnBsICAgICAgICAgIHwgIDE1ICstCiA0MyBmaWxlcyBjaGFuZ2VkLCA4NzAg aW5zZXJ0aW9ucygrKSwgMTA0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmli L2FtY2hlY2svdC8wMDFfdmVyaWZ5X2hlYXBhbS5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAw MV92ZXJpZnlfaGVhcGFtLnBsCmluZGV4IGUzZmVlMTlhZTVkLi45ZWE3MjE3OWZjZCAxMDA2 NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0ucGwKKysrIGIv Y29udHJpYi9hbWNoZWNrL3QvMDAxX3ZlcmlmeV9oZWFwYW0ucGwKQEAgLTUsNiArNSw3IEBA IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiAKIHVzZSBUZXN0OjpNb3JlOwpAQCAt MTgsNyArMTksOSBAQCAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn dGVzdCcpOwogJG5vZGUtPmluaXQobm9fZGF0YV9jaGVja3N1bXMgPT4gMSk7CiAkbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdhdXRvdmFjdXVtPW9mZicpOwogJG5v ZGUtPnN0YXJ0OwotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRF TlNJT04gYW1jaGVjaykpOworbXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisKKyRzZXNzaW9uLT5kbyhxKENSRUFURSBFWFRF TlNJT04gYW1jaGVjaykpOwogCiAjCiAjIENoZWNrIGEgdGFibGUgd2l0aCBkYXRhIGxvYWRl ZCBidXQgbm8gY29ycnVwdGlvbiwgZnJlZXppbmcsIGV0Yy4KQEAgLTQ5LDcgKzUyLDcgQEAg ZGV0ZWN0c19oZWFwX2NvcnJ1cHRpb24oCiAjIENoZWNrIGEgY29ycnVwdCB0YWJsZSB3aXRo IGFsbC1mcm96ZW4gZGF0YQogIwogZnJlc2hfdGVzdF90YWJsZSgndGVzdCcpOwotJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0Vf U0tJUFBJTkcpIHRlc3QpKTsKKyRzZXNzaW9uLT5kbyhxKFZBQ1VVTSAoRlJFRVpFLCBESVNB QkxFX1BBR0VfU0tJUFBJTkcpIHRlc3QpKTsKIGRldGVjdHNfbm9fY29ycnVwdGlvbigidmVy aWZ5X2hlYXBhbSgndGVzdCcpIiwKIAkiYWxsLWZyb3plbiBub3QgY29ycnVwdGVkIHRhYmxl Iik7CiBjb3JydXB0X2ZpcnN0X3BhZ2UoJ3Rlc3QnKTsKQEAgLTgxLDcgKzg0LDcgQEAgc3Vi IHJlbGF0aW9uX2ZpbGVwYXRoCiAJbXkgKCRyZWxuYW1lKSA9IEBfOwogCiAJbXkgJHBnZGF0 YSA9ICRub2RlLT5kYXRhX2RpcjsKLQlteSAkcmVsID0gJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCW15ICRyZWwgPSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKAogCQlxcShTRUxF Q1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJyRyZWxuYW1lJykpKTsKIAlkaWUgInBhdGggbm90 IGZvdW5kIGZvciByZWxhdGlvbiAkcmVsbmFtZSIgdW5sZXNzIGRlZmluZWQgJHJlbDsKIAly ZXR1cm4gIiRwZ2RhdGEvJHJlbCI7CkBAIC05Miw4ICs5NSw4IEBAIHN1YiBmcmVzaF90ZXN0 X3RhYmxlCiB7CiAJbXkgKCRyZWxuYW1lKSA9IEBfOwogCi0JcmV0dXJuICRub2RlLT5zYWZl X3BzcWwoCi0JCSdwb3N0Z3JlcycsIHFxKAorCXJldHVybiAkc2Vzc2lvbi0+ZG8oCisJCXFx KAogCQlEUk9QIFRBQkxFIElGIEVYSVNUUyAkcmVsbmFtZSBDQVNDQURFOwogCQlDUkVBVEUg VEFCTEUgJHJlbG5hbWUgKGEgaW50ZWdlciwgYiB0ZXh0KTsKIAkJQUxURVIgVEFCTEUgJHJl bG5hbWUgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQ9ZmFsc2UpOwpAQCAtMTE3LDggKzEyMCw4 IEBAIHN1YiBmcmVzaF90ZXN0X3NlcXVlbmNlCiB7CiAJbXkgKCRzZXFuYW1lKSA9IEBfOwog Ci0JcmV0dXJuICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsIHFxKAorCXJldHVy biAkc2Vzc2lvbi0+ZG8oCisJCXFxKAogCQlEUk9QIFNFUVVFTkNFIElGIEVYSVNUUyAkc2Vx bmFtZSBDQVNDQURFOwogCQlDUkVBVEUgU0VRVUVOQ0UgJHNlcW5hbWUKIAkJCUlOQ1JFTUVO VCBCWSAxMwpAQCAtMTM0LDggKzEzNyw4IEBAIHN1YiBhZHZhbmNlX3Rlc3Rfc2VxdWVuY2UK IHsKIAlteSAoJHNlcW5hbWUpID0gQF87CiAKLQlyZXR1cm4gJG5vZGUtPnNhZmVfcHNxbCgK LQkJJ3Bvc3RncmVzJywgcXEoCisJcmV0dXJuICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCisJ CXFxKAogCQlTRUxFQ1QgbmV4dHZhbCgnJHNlcW5hbWUnKTsKIAkpKTsKIH0KQEAgLTE0NSwx MCArMTQ4LDcgQEAgc3ViIHNldF90ZXN0X3NlcXVlbmNlCiB7CiAJbXkgKCRzZXFuYW1lKSA9 IEBfOwogCi0JcmV0dXJuICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsIHFxKAot CQlTRUxFQ1Qgc2V0dmFsKCckc2VxbmFtZScsIDEwMik7Ci0JKSk7CisJcmV0dXJuICRzZXNz aW9uLT5xdWVyeV9vbmV2YWwocXEoU0VMRUNUIHNldHZhbCgnJHNlcW5hbWUnLCAxMDIpKSk7 CiB9CiAKICMgQ2FsbCBTUUwgZnVuY3Rpb25zIHRvIHJlc2V0IHRoZSBzZXF1ZW5jZQpAQCAt MTU2LDggKzE1Niw4IEBAIHN1YiByZXNldF90ZXN0X3NlcXVlbmNlCiB7CiAJbXkgKCRzZXFu YW1lKSA9IEBfOwogCi0JcmV0dXJuICRub2RlLT5zYWZlX3BzcWwoCi0JCSdwb3N0Z3Jlcycs IHFxKAorCXJldHVybiAkc2Vzc2lvbi0+ZG8oCisJCXFxKAogCQlBTFRFUiBTRVFVRU5DRSAk c2VxbmFtZSBSRVNUQVJUIFdJVEggNTEKIAkpKTsKIH0KQEAgLTE2OSw2ICsxNjksNyBAQCBz dWIgY29ycnVwdF9maXJzdF9wYWdlCiAJbXkgKCRyZWxuYW1lKSA9IEBfOwogCW15ICRyZWxw YXRoID0gcmVsYXRpb25fZmlsZXBhdGgoJHJlbG5hbWUpOwogCisJJHNlc3Npb24tPmNsb3Nl OwogCSRub2RlLT5zdG9wOwogCiAJbXkgJGZoOwpAQCAtMTkxLDYgKzE5Miw3IEBAIHN1YiBj b3JydXB0X2ZpcnN0X3BhZ2UKIAkgIG9yIEJBSUxfT1VUKCJjbG9zZSBmYWlsZWQ6ICQhIik7 CiAKIAkkbm9kZS0+c3RhcnQ7CisJJHNlc3Npb24tPnJlY29ubmVjdDsKIH0KIAogc3ViIGRl dGVjdHNfaGVhcF9jb3JydXB0aW9uCkBAIC0yMTYsNyArMjE4LDcgQEAgc3ViIGRldGVjdHNf Y29ycnVwdGlvbgogCiAJbXkgKCRmdW5jdGlvbiwgJHRlc3RuYW1lLCBAcmUpID0gQF87CiAK LQlteSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcShTRUxFQ1Qg KiBGUk9NICRmdW5jdGlvbikpOworCW15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnlfdHVw bGVzKHFxKFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CiAJbGlrZSgkcmVzdWx0LCAkXywg JHRlc3RuYW1lKSBmb3IgKEByZSk7CiB9CiAKQEAgLTIyNiw3ICsyMjgsNyBAQCBzdWIgZGV0 ZWN0c19ub19jb3JydXB0aW9uCiAKIAlteSAoJGZ1bmN0aW9uLCAkdGVzdG5hbWUpID0gQF87 CiAKLQlteSAkcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcShTRUxF Q1QgKiBGUk9NICRmdW5jdGlvbikpOworCW15ICRyZXN1bHQgPSAkc2Vzc2lvbi0+cXVlcnlf dHVwbGVzKHFxKFNFTEVDVCAqIEZST00gJGZ1bmN0aW9uKSk7CiAJaXMoJHJlc3VsdCwgJycs ICR0ZXN0bmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwMl9j aWMucGwgYi9jb250cmliL2FtY2hlY2svdC8wMDJfY2ljLnBsCmluZGV4IDYyOWQwMGMxZDA1 Li5mMmM3YmM4NjUzZiAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3QvMDAyX2NpYy5w bAorKysgYi9jb250cmliL2FtY2hlY2svdC8wMDJfY2ljLnBsCkBAIC02LDYgKzYsNyBAQCB1 c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTcy LDggKzczLDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXEoSU5TRVJUIElO VE8gcXVlYmVjIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIHMoaSk7KSk7 CiAKICMgc3RhcnQgYmFja2dyb3VuZCB0cmFuc2FjdGlvbgotbXkgJGluX3Byb2dyZXNzX2gg PSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGluX3Byb2dyZXNzX2gt PnF1ZXJ5X3NhZmUocShCRUdJTjsgU0VMRUNUIHBnX2N1cnJlbnRfeGFjdF9pZCgpOykpOwor bXkgJGluX3Byb2dyZXNzX2ggPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9k ZSA9PiAkbm9kZSk7CiskaW5fcHJvZ3Jlc3NfaC0+ZG8ocShCRUdJTjsgU0VMRUNUIHBnX2N1 cnJlbnRfeGFjdF9pZCgpOykpOwogCiAjIGRlbGV0ZSBvbmUgcm93IGZyb20gdGFibGUsIHdo aWxlIGJhY2tncm91bmQgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcShERUxFVEUgRlJPTSBxdWViZWMgV0hFUkUgaSA9IDE7KSk7 CkBAIC04Niw3ICs4Nyw3IEBAIG15ICRyZXN1bHQgPSAkbm9kZS0+cHNxbCgncG9zdGdyZXMn LAogCXEoU0VMRUNUIGJ0X2luZGV4X3BhcmVudF9jaGVjaygnb3NjYXInLCBoZWFwYWxsaW5k ZXhlZCA9PiB0cnVlKSkpOwogaXMoJHJlc3VsdCwgJzAnLCAnYnRfaW5kZXhfcGFyZW50X2No ZWNrIGZvciBDSUMgYWZ0ZXIgcmVtb3ZlZCByb3cnKTsKIAotJGluX3Byb2dyZXNzX2gtPnF1 aXQ7CiskaW5fcHJvZ3Jlc3NfaC0+Y2xvc2U7CiAKICRub2RlLT5zdG9wOwogZG9uZV90ZXN0 aW5nKCk7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDNfY2ljXzJwYy5wbCBi L2NvbnRyaWIvYW1jaGVjay90LzAwM19jaWNfMnBjLnBsCmluZGV4IGYyOGVlYWMxN2VmLi5k M2ExNjQzYmYzMyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMu cGwKKysrIGIvY29udHJpYi9hbWNoZWNrL3QvMDAzX2NpY18ycGMucGwKQEAgLTcsNiArNyw3 IEBAIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIAogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTM2LDI5ICsz Nyw0MiBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRi bChpIGludCwgaiBqc29uYikpKTsKICMgc3RhdGVtZW50cy4KICMKIAotbXkgJG1haW5faCA9 ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitteSAkbWFpbl9oID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRub2RlKTsKIAotJG1haW5faC0+ cXVlcnlfc2FmZSgKKyRtYWluX2gtPmRvX2FzeW5jKAogCXEoCiBCRUdJTjsKIElOU0VSVCBJ TlRPIHRibCBWQUxVRVMoMCwgJ1tbMTQsMiwzXV0nKTsKICkpOwogCi1teSAkY2ljX2ggPSAk bm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJGNpY19oID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGU9PiRub2RlKTsKIAotJGNpY19oLT5xdWVy eV91bnRpbCgKLQlxci9zdGFydC8sIHEoCi1cZWNobyBzdGFydAotQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gdGJsKGkpOwotQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBn aW5pZHggT04gdGJsIFVTSU5HIGdpbihqKTsKKyRjaWNfaC0+c2V0bm9uYmxvY2tpbmcoMSk7 CisKKyRjaWNfaC0+ZW50ZXJQaXBlbGluZU1vZGUoKTsKKworJGNpY19oLT5kb19waXBlbGlu ZSgKKwlxKAorQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gdGJsKGkpCispKTsK KworJGNpY19oLT5waXBlbGluZVN5bmMoKTsKKworJGNpY19oLT5kb19waXBlbGluZSgKKwlx KAorQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBnaW5pZHggT04gdGJsIFVTSU5HIGdpbihq KQogKSk7CiAKLSRtYWluX2gtPnF1ZXJ5X3NhZmUoCiskY2ljX2gtPnBpcGVsaW5lU3luYygp OworCiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG9fYXN5bmMo CiAJcSgKIFBSRVBBUkUgVFJBTlNBQ1RJT04gJ2EnOwogKSk7CiAKLSRtYWluX2gtPnF1ZXJ5 X3NhZmUoCiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1haW5faC0+ZG9fYXN5 bmMoCiAJcSgKIEJFR0lOOwogSU5TRVJUIElOVE8gdGJsIFZBTFVFUygwLCAnW1sxNCwyLDNd XScpOwpAQCAtNjYsNyArODAsOCBAQCBJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKDAsICdbWzE0 LDIsM11dJyk7CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDT01NSVQgUFJF UEFSRUQgJ2EnOykpOwogCi0kbWFpbl9oLT5xdWVyeV9zYWZlKAorJG1haW5faC0+d2FpdF9m b3JfY29tcGxldGlvbjsKKyRtYWluX2gtPmRvX2FzeW5jKAogCXEoCiBQUkVQQVJFIFRSQU5T QUNUSU9OICdiJzsKIEJFR0lOOwpAQCAtNzUsMTQgKzkwLDE3IEBAIElOU0VSVCBJTlRPIHRi bCBWQUxVRVMoMCwgJyJtYXJ5IGhhZCBhIGxpdHRsZSBsYW1iIicpOwogCiAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHEoQ09NTUlUIFBSRVBBUkVEICdiJzspKTsKIAotJG1haW5f aC0+cXVlcnlfc2FmZSgKLQlxKAotUFJFUEFSRSBUUkFOU0FDVElPTiAnYyc7Ci1DT01NSVQg UFJFUEFSRUQgJ2MnOwotKSk7CiskbWFpbl9oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJG1h aW5faC0+ZG8oCisJcShQUkVQQVJFIFRSQU5TQUNUSU9OICdjJzspLAorCXEoQ09NTUlUIFBS RVBBUkVEICdjJzspKTsKIAotJG1haW5faC0+cXVpdDsKLSRjaWNfaC0+cXVpdDsKKyRtYWlu X2gtPmNsb3NlOworCisjIGNhbGxlZCB0d2ljZSBvdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNh dXRpb24gYWJvdXQgcGlwZWxpbmUgbW9kZQorJGNpY19oLT53YWl0X2Zvcl9jb21wbGV0aW9u OworJGNpY19oLT53YWl0X2Zvcl9jb21wbGV0aW9uOworJGNpY19oLT5jbG9zZTsKIAogJHJl c3VsdCA9ICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIGJ0X2luZGV4X2NoZWNr KCdpZHgnLHRydWUpKSk7CiBpcygkcmVzdWx0LCAnMCcsICdidF9pbmRleF9jaGVjayBhZnRl ciBvdmVybGFwcGluZyAyUEMnKTsKQEAgLTEwNiwxMCArMTI0LDkgQEAgUFJFUEFSRSBUUkFO U0FDVElPTiAncGVyc2lzdHNfZm9yZXZlcic7CiApKTsKICRub2RlLT5yZXN0YXJ0OwogCi1t eSAkcmVpbmRleF9oID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRy ZWluZGV4X2gtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0LywgcSgKLVxlY2hvIHN0YXJ0Citt eSAkcmVpbmRleF9oID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JG5vZGUpOworJHJlaW5kZXhfaC0+ZG9fYXN5bmMoCisJcSgKIERST1AgSU5ERVggQ09OQ1VS UkVOVExZIGlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpKTsK IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGdpbmlkeDsKQEAgLTExNyw3ICsxMzQsOCBAQCBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGdpbmlkeCBPTiB0YmwgVVNJTkcgZ2luKGopOwog KSk7CiAKICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAn c3BhbnNfcmVzdGFydCciKTsKLSRyZWluZGV4X2gtPnF1aXQ7CiskcmVpbmRleF9oLT53YWl0 X2Zvcl9jb21wbGV0aW9uOworJHJlaW5kZXhfaC0+Y2xvc2U7CiAkcmVzdWx0ID0gJG5vZGUt PnBzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeCcsdHJ1ZSkp KTsKIGlzKCRyZXN1bHQsICcwJywgJ2J0X2luZGV4X2NoZWNrIGFmdGVyIDJQQyBhbmQgcmVz dGFydCcpOwogJHJlc3VsdCA9ICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIGdp bl9pbmRleF9jaGVjaygnZ2luaWR4JykpKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20v dC8wMDFfd2FsLnBsIGIvY29udHJpYi9ibG9vbS90LzAwMV93YWwucGwKaW5kZXggNjgzYjE4 NzYwNTUuLmY4NmM0OWQ2MzU3IDEwMDY0NAotLS0gYS9jb250cmliL2Jsb29tL3QvMDAxX3dh bC5wbAorKysgYi9jb250cmliL2Jsb29tL3QvMDAxX3dhbC5wbApAQCAtNSwxMSArNSwxNCBA QAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAogbXkg JG5vZGVfcHJpbWFyeTsKIG15ICRub2RlX3N0YW5kYnk7CitteSAkc2Vzc2lvbl9wcmltYXJ5 OworbXkgJHNlc3Npb25fc3RhbmRieTsKIAogIyBSdW4gZmV3IHF1ZXJpZXMgb24gYm90aCBw cmltYXJ5IGFuZCBzdGFuZGJ5IGFuZCBjaGVjayB0aGVpciByZXN1bHRzIG1hdGNoLgogc3Vi IHRlc3RfaW5kZXhfcmVwbGF5CkBAIC0yMSwyMCArMjQsMTggQEAgc3ViIHRlc3RfaW5kZXhf cmVwbGF5CiAJIyBXYWl0IGZvciBzdGFuZGJ5IHRvIGNhdGNoIHVwCiAJJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5KTsKIAotCW15ICRxdWVyaWVzID0g cXEoU0VUIGVuYWJsZV9zZXFzY2FuPW9mZjsKLVNFVCBlbmFibGVfYml0bWFwc2Nhbj1vbjsK LVNFVCBlbmFibGVfaW5kZXhzY2FuPW9uOwotU0VMRUNUICogRlJPTSB0c3QgV0hFUkUgaSA9 IDA7Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMzsKLVNFTEVDVCAqIEZST00gdHN0 IFdIRVJFIHQgPSAnYic7Ci1TRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSB0ID0gJ2YnOwotU0VM RUNUICogRlJPTSB0c3QgV0hFUkUgaSA9IDMgQU5EIHQgPSAnYyc7Ci1TRUxFQ1QgKiBGUk9N IHRzdCBXSEVSRSBpID0gNyBBTkQgdCA9ICdlJzsKLSk7CisJbXkgQHF1ZXJpZXMgPSAoCisJ CSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSBpID0gMCIsCisJCSJTRUxFQ1QgKiBGUk9NIHRz dCBXSEVSRSBpID0gMyIsCisJCSJTRUxFQ1QgKiBGUk9NIHRzdCBXSEVSRSB0ID0gJ2InIiwK KwkJIlNFTEVDVCAqIEZST00gdHN0IFdIRVJFIHQgPSAnZiciLAorCQkiU0VMRUNUICogRlJP TSB0c3QgV0hFUkUgaSA9IDMgQU5EIHQgPSAnYyciLAorCQkiU0VMRUNUICogRlJPTSB0c3Qg V0hFUkUgaSA9IDcgQU5EIHQgPSAnZSciLAorCSAgICk7CiAKIAkjIFJ1biB0ZXN0IHF1ZXJp ZXMgYW5kIGNvbXBhcmUgdGhlaXIgcmVzdWx0Ci0JbXkgJHByaW1hcnlfcmVzdWx0ID0gJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICRxdWVyaWVzKTsKLQlteSAkc3Rh bmRieV9yZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwgJHF1 ZXJpZXMpOworCW15ICRwcmltYXJ5X3Jlc3VsdCA9ICRzZXNzaW9uX3ByaW1hcnktPnF1ZXJ5 X3R1cGxlcyhAcXVlcmllcyk7CisJbXkgJHN0YW5kYnlfcmVzdWx0ID0gJHNlc3Npb25fc3Rh bmRieS0+cXVlcnlfdHVwbGVzKEBxdWVyaWVzKTsKIAogCWlzKCRwcmltYXJ5X3Jlc3VsdCwg JHN0YW5kYnlfcmVzdWx0LCAiJHRlc3RfbmFtZTogcXVlcnkgcmVzdWx0IG1hdGNoZXMiKTsK IAlyZXR1cm47CkBAIC01NSwxMyArNTYsMjQgQEAgJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9t X2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCiAJaGFzX3N0cmVhbWluZyA9 PiAxKTsKICRub2RlX3N0YW5kYnktPnN0YXJ0OwogCisjIENyZWF0ZSBhbmQgaW5pdGlhbGl6 ZSB0aGUgc2Vzc2lvbnMKKyRzZXNzaW9uX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9wcmltYXJ5KTsKKyRzZXNzaW9uX3N0YW5kYnkg PSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFuZGJ5 KTsKK215ICRpbml0c2V0ID0gcVsKKyAgIFNFVCBlbmFibGVfc2Vxc2Nhbj1vZmY7CisgICBT RVQgZW5hYmxlX2JpdG1hcHNjYW49b247CisgICBTRVQgZW5hYmxlX2luZGV4c2Nhbj1vbjsK K107Ciskc2Vzc2lvbl9wcmltYXJ5LT5kbygkaW5pdHNldCk7Ciskc2Vzc2lvbl9zdGFuZGJ5 LT5kbygkaW5pdHNldCk7CisKICMgQ3JlYXRlIHNvbWUgYmxvb20gaW5kZXggb24gcHJpbWFy eQotJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgRVhURU5T SU9OIGJsb29tOyIpOwotJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJD UkVBVEUgVEFCTEUgdHN0IChpIGludDQsIHQgdGV4dCk7Iik7Ci0kbm9kZV9wcmltYXJ5LT5z YWZlX3BzcWwoInBvc3RncmVzIiwKKyRzZXNzaW9uX3ByaW1hcnktPmRvKCJDUkVBVEUgRVhU RU5TSU9OIGJsb29tOyIpOworJHNlc3Npb25fcHJpbWFyeS0+ZG8oIkNSRUFURSBUQUJMRSB0 c3QgKGkgaW50NCwgdCB0ZXh0KTsiKTsKKyRzZXNzaW9uX3ByaW1hcnktPmRvKAogCSJJTlNF UlQgSU5UTyB0c3QgU0VMRUNUIGklMTAsIHN1YnN0cihlbmNvZGUoc2hhMjU2KGk6OnRleHQ6 OmJ5dGVhKSwgJ2hleCcpLCAxLCAxKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwKSBp OyIKICk7Ci0kbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoInBvc3RncmVzIiwKKyRzZXNzaW9u X3ByaW1hcnktPmRvKAogCSJDUkVBVEUgSU5ERVggYmxvb21pZHggT04gdHN0IFVTSU5HIGJs b29tIChpLCB0KSBXSVRIIChjb2wxID0gMyk7Iik7CiAKICMgVGVzdCB0aGF0IHF1ZXJpZXMg Z2l2ZSBzYW1lIHJlc3VsdApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3Qv MDAxX2NvbmN1cnJlbnRfdHJhbnNhY3Rpb24ucGwgYi9jb250cmliL3BnX3Zpc2liaWxpdHkv dC8wMDFfY29uY3VycmVudF90cmFuc2FjdGlvbi5wbAppbmRleCAzYWE1NTY4OTJhNi4uY2Y2 ZTNiNDUxODIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS90LzAwMV9jb25j dXJyZW50X3RyYW5zYWN0aW9uLnBsCisrKyBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS90LzAw MV9jb25jdXJyZW50X3RyYW5zYWN0aW9uLnBsCkBAIC02LDYgKzYsNyBAQAogdXNlIHN0cmlj dDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMjQsMTAgKzI1LDEw IEBAICRzdGFuZGJ5LT5zdGFydDsKIAogIyBTZXR1cCBhbm90aGVyIGRhdGFiYXNlCiAkbm9k ZS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgREFUQUJBU0Ugb3RoZXJfZGF0YWJh c2U7XG4iKTsKLW15ICRic2Vzc2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ290aGVy X2RhdGFiYXNlJyk7CitteSAkYnNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSwgZGJuYW1lID0+ICdvdGhlcl9kYXRhYmFzZScpOwogCiAj IFJ1biBhIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24KLSRic2Vzc2lvbi0+cXVlcnlfc2FmZSgK KyRic2Vzc2lvbi0+ZG8oCiAJcXFbCiAJQkVHSU47CiAJU0VMRUNUIHR4aWRfY3VycmVudCgp OwpAQCAtNTUsOCArNTYsOCBAQCAkcmVzdWx0ID0gJHN0YW5kYnktPnNhZmVfcHNxbCgicG9z dGdyZXMiLAogb2soJHJlc3VsdCBlcSAiIiwgInBnX2NoZWNrX3Zpc2libGUoKSBkZXRlY3Rz IG5vIGVycm9ycyIpOwogCiAjIFNodXRkb3duCi0kYnNlc3Npb24tPnF1ZXJ5X3NhZmUoIkNP TU1JVDsiKTsKLSRic2Vzc2lvbi0+cXVpdDsKKyRic2Vzc2lvbi0+ZG8oIkNPTU1JVDsiKTsK KyRic2Vzc2lvbi0+Y2xvc2U7CiAkbm9kZS0+c3RvcDsKICRzdGFuZGJ5LT5zdG9wOwogCmRp ZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdC8wMDFfcmVwbF9zdGF0cy5wbCBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy90LzAwMV9yZXBsX3N0YXRzLnBsCmluZGV4IDY4MTRj NzkyZTJiLi43OWI5MTgyMDE0ZiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5n L3QvMDAxX3JlcGxfc3RhdHMucGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3QvMDAx X3JlcGxfc3RhdHMucGwKQEAgLTcsNiArNyw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fybmlu Z3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgRmlsZTo6UGF0aCBxdyhybXRyZWUpOwogdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBA IC0xMjksMTEgKzEzMCwxMSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiApOwog CiAjIExvb2sgYXQgc2xvdCBkYXRhLCB3aXRoIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uLgot bXkgJGJwZ3NxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAxKTsKK215ICRiZ3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZT0+JG5vZGUpOwogCiAjIExhdW5jaCBxdWVyeSBhbmQgbG9vayBhdCBz bG90IGRhdGEsIGluY3JlbWVudGluZyB0aGUgcmVmY291bnQgb2YgdGhlCiAjIHN0YXRzIGVu dHJ5LgotJGJwZ3NxbC0+cXVlcnlfc2FmZSgKKyRiZ3Nlc3Npb24tPmRvX2FzeW5jKAogCSJT RUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfYmluYXJ5X2NoYW5nZXMoJyRzbG90X25hbWVf cmVzdGFydCcsIE5VTEwsIE5VTEwpIgogKTsKIApAQCAtMTUwLDcgKzE1MSw4IEBAICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAogIyBMb29rIGFnYWluIGF0IHRoZSBzbG90IGRh dGEuICBUaGUgbG9jYWwgc3RhdHMgcmVmZXJlbmNlIHNob3VsZCBiZSByZWZyZXNoZWQKICMg dG8gdGhlIHJlaW5pdGlhbGl6ZWQgZW50cnkuCi0kYnBnc3FsLT5xdWVyeV9zYWZlKAorJGJn c2Vzc2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRiZ3Nlc3Npb24tPmRvX2FzeW5jKAog CSJTRUxFQ1QgcGdfbG9naWNhbF9zbG90X3BlZWtfYmluYXJ5X2NoYW5nZXMoJyRzbG90X25h bWVfcmVzdGFydCcsIE5VTEwsIE5VTEwpIgogKTsKICMgRHJvcCBhZ2FpbiB0aGUgc2xvdCwg dGhlIGVudHJ5IGlzIG5vdCBkcm9wcGVkIHlldCBhcyB0aGUgcHJldmlvdXMgc2Vzc2lvbgpA QCAtMTc2LDYgKzE3OCw3IEBAIGNvbW1hbmRfbGlrZSgKIG15ICRzdGF0c19maWxlID0gIiRk YXRhZGlyL3BnX3N0YXQvcGdzdGF0LnN0YXQiOwogb2soLWYgIiRzdGF0c19maWxlIiwgInN0 YXRzIGZpbGUgbXVzdCBleGlzdCBhZnRlciBzaHV0ZG93biIpOwogCi0kYnBnc3FsLT5xdWl0 OworJGJnc2Vzc2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRiZ3Nlc3Npb24tPmNsb3Nl OwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay90 LzAwNF92ZXJpZnlfaGVhcGFtLnBsIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA0X3Zlcmlm eV9oZWFwYW0ucGwKaW5kZXggOTVmMWYzNGM5MGQuLjlhZmFjYmNhYWVhIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbAorKysgYi9zcmMv YmluL3BnX2FtY2hlY2svdC8wMDRfdmVyaWZ5X2hlYXBhbS5wbApAQCAtNSw2ICs1LDcgQEAg dXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIAogdXNlIFRlc3Q6Ok1vcmU7CkBAIC0x OTAsMTYgKzE5MSwxNyBAQCAkbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICdtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zPTEwJyk7CiAkbm9kZS0+c3RhcnQ7CiBteSAk cG9ydCA9ICRub2RlLT5wb3J0OwogbXkgJHBnZGF0YSA9ICRub2RlLT5kYXRhX2RpcjsKLSRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBFWFRFTlNJT04gYW1jaGVjayIp OwotJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIEVYVEVOU0lPTiBwYWdl aW5zcGVjdCIpOworbXkgJHNlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7Ciskc2Vzc2lvbi0+ZG8oIkNSRUFURSBFWFRFTlNJT04gYW1j aGVjayIpOworJHNlc3Npb24tPmRvKCJDUkVBVEUgRVhURU5TSU9OIHBhZ2VpbnNwZWN0Iik7 CiAKICMgR2V0IGEgbm9uLXplcm8gZGF0ZnJvemVueGlkCi0kbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHFxKFZBQ1VVTSBGUkVFWkUpKTsKKyRzZXNzaW9uLT5kbyhxcShWQUNVVU0g RlJFRVpFKSk7CiAKICMgQ3JlYXRlIHRoZSB0ZXN0IHRhYmxlIHdpdGggcHJlY2lzZWx5IHRo ZSBzY2hlbWEgdGhhdCBvdXIgY29ycnVwdGlvbiBmdW5jdGlvbgogIyBleHBlY3RzLgotJG5v ZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlxcSgK IAkJQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0IChhIEJJR0lOVCwgYiBURVhULCBjIFRFWFQp OwogCQlBTFRFUiBUQUJMRSBwdWJsaWMudGVzdCBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZD1m YWxzZSk7CiAJCUFMVEVSIFRBQkxFIHB1YmxpYy50ZXN0IEFMVEVSIENPTFVNTiBjIFNFVCBT VE9SQUdFIEVYVEVSTkFMOwpAQCAtMjA5LDE0ICsyMTEsMTUgQEAgJG5vZGUtPnNhZmVfcHNx bCgKICMgV2Ugd2FudCAoMCA8IGRhdGZyb3plbnhpZCA8IHRlc3QucmVsZnJvemVueGlkKS4g IFRvIGFjaGlldmUgdGhpcywgd2UgZnJlZXplCiAjIGFuIG90aGVyd2lzZSB1bnVzZWQgdGFi bGUsIHB1YmxpYy5qdW5rLCBwcmlvciB0byBpbnNlcnRpbmcgZGF0YSBhbmQgZnJlZXppbmcK ICMgcHVibGljLnRlc3QKLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCisk c2Vzc2lvbi0+ZG8oCisJcXEoCiAJCUNSRUFURSBUQUJMRSBwdWJsaWMuanVuayBBUyBTRUxF Q1QgJ2p1bmsnOjpURVhUIEFTIGp1bmtfY29sdW1uOwogCQlBTFRFUiBUQUJMRSBwdWJsaWMu anVuayBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZD1mYWxzZSk7Ci0JCVZBQ1VVTSBGUkVFWkUg cHVibGljLmp1bmsKLQkpKTsKKwkpLAorCSdWQUNVVU0gRlJFRVpFIHB1YmxpYy5qdW5rJwor KTsKIAotbXkgJHJlbCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKK215ICRyZWwg PSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKAogCXFxKFNFTEVDVCBwZ19yZWxhdGlvbl9maWxl cGF0aCgncHVibGljLnRlc3QnKSkpOwogbXkgJHJlbHBhdGggPSAiJHBnZGF0YS8kcmVsIjsK IApAQCAtMjI5LDIzICsyMzIsMjQgQEAgbXkgJFJPV0NPVU5UX0JBU0lDID0gMTY7CiAKICMg Rmlyc3QgaW5zZXJ0IGRhdGEgbmVlZGVkIGZvciB0ZXN0cyB1bnJlbGF0ZWQgdG8gdXBkYXRl IGNoYWluIHZhbGlkYXRpb24uCiAjIFRoZW4gZnJlZXplIHRoZSBwYWdlLiBUaGVzZSB0dXBs ZXMgYXJlIGF0IG9mZnNldCBudW1iZXJzIDEgdG8gMTYuCi0kbm9kZS0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAorCXFxKAogCUlOU0VSVCBJTlRPIHB1 YmxpYy50ZXN0IChhLCBiLCBjKQogCQlTRUxFQ1QKIAkJCXgnREVBREY5RjlERUFERjlGOSc6 OmJpZ2ludCwKIAkJCSdhYmNkZWZnJywKIAkJCXJlcGVhdCgndycsIDEwMDAwKQogCUZST00g Z2VuZXJhdGVfc2VyaWVzKDEsICRST1dDT1VOVF9CQVNJQyk7Ci0JVkFDVVVNIEZSRUVaRSBw dWJsaWMudGVzdDspCisgICAgKSwKKwknVkFDVVVNIEZSRUVaRSBwdWJsaWMudGVzdCcKICk7 CiAKICMgQ3JlYXRlIHNvbWUgc2ltcGxlIEhPVCB1cGRhdGUgY2hhaW5zIGZvciBsaW5lIHBv aW50ZXIgdmFsaWRhdGlvbi4gQWZ0ZXIKICMgdGhlIHBhZ2UgaXMgSE9UIHBydW5lZCwgd2Un bGwgaGF2ZSB0d28gcmVkaXJlY3RzIGxpbmUgcG9pbnRlcnMgZWFjaCBwb2ludGluZwogIyB0 byBhIHR1cGxlLiBXZSdsbCB0aGVuIGNoYW5nZSB0aGUgc2Vjb25kIHJlZGlyZWN0IHRvIHBv aW50IHRvIHRoZSBzYW1lCiAjIHR1cGxlIGFzIHRoZSBmaXJzdCBvbmUgYW5kIHZlcmlmeSB0 aGF0IHdlIGNhbiBkZXRlY3QgY29ycnVwdGlvbi4KLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAJCUlOU0VSVCBJTlRPIHB1Ymxp Yy50ZXN0IChhLCBiLCBjKQogCQkJVkFMVUVTICggeCdERUFERjlGOURFQURGOUY5Jzo6Ymln aW50LCAnYWJjZGVmZycsCiAJCQkJCSBnZW5lcmF0ZV9zZXJpZXMoMSwyKSk7IC0tIG9mZnNl dCBudW1iZXJzIDE3IGFuZCAxOApAQCAtMjU0LDggKzI1OCw4IEBAICRub2RlLT5zYWZlX3Bz cWwoCiAJKSk7CiAKICMgQ3JlYXRlIHNvbWUgbW9yZSBIT1QgdXBkYXRlIGNoYWlucy4KLSRu b2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEo CiAJCUlOU0VSVCBJTlRPIHB1YmxpYy50ZXN0IChhLCBiLCBjKQogCQkJVkFMVUVTICggeCdE RUFERjlGOURFQURGOUY5Jzo6YmlnaW50LCAnYWJjZGVmZycsCiAJCQkJCSBnZW5lcmF0ZV9z ZXJpZXMoMyw2KSk7IC0tIG9mZnNldCBudW1iZXJzIDIxIHRocm91Z2ggMjQKQEAgLTI2NCwy NSArMjY4LDMwIEBAICRub2RlLT5zYWZlX3BzcWwoCiAJKSk7CiAKICMgTmVnYXRpdmUgdGVz dCBjYXNlIG9mIEhPVC1wcnVuaW5nIHdpdGggYWJvcnRlZCB0dXBsZS4KLSRub2RlLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCiAJCUJFR0lO OwogCQlVUERBVEUgcHVibGljLnRlc3QgU0VUIGMgPSAnYScgV0hFUkUgYyA9ICc1JzsgLS0g b2Zmc2V0IG51bWJlciAyNwogCQlBQk9SVDsKLQkJVkFDVVVNIEZSRUVaRSBwdWJsaWMudGVz dDsKLQkpKTsKKyAgICAgICApLAorCSAgICdWQUNVVU0gRlJFRVpFIHB1YmxpYy50ZXN0Oycs CisJKTsKIAogIyBOZXh0IHVwZGF0ZSBvbiBhbnkgdHVwbGUgd2lsbCBiZSBzdG9yZWQgYXQg dGhlIHNhbWUgcGxhY2Ugb2YgdHVwbGUgaW5zZXJ0ZWQKICMgYnkgYWJvcnRlZCB0cmFuc2Fj dGlvbi4gVGhpcyBzaG91bGQgbm90IGNhdXNlIHRoZSB0YWJsZSB0byBhcHBlYXIgY29ycnVw dC4KLSRub2RlLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8o CisJcXEoCisgICAgICAgIEJFR0lOOwogCQlVUERBVEUgcHVibGljLnRlc3QgU0VUIGMgPSAn YScgV0hFUkUgYyA9ICc2JzsgLS0gb2Zmc2V0IG51bWJlciAyNyBhZ2FpbgotCQlWQUNVVU0g RlJFRVpFIHB1YmxpYy50ZXN0OwotCSkpOworICAgICAgICBDT01NSVQ7CisJKSwKKwknVkFD VVVNIEZSRUVaRSBwdWJsaWMudGVzdDsnLAorICAgKTsKIAogIyBEYXRhIGZvciBIT1QgY2hh aW4gdmFsaWRhdGlvbiwgc28gbm90IGNhbGxpbmcgVkFDVVVNIEZSRUVaRS4KLSRub2RlLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCiskc2Vzc2lvbi0+ZG8oCisJcXEoCisgICAg ICAgIEJFR0lOOwogCQlJTlNFUlQgSU5UTyBwdWJsaWMudGVzdCAoYSwgYiwgYykKIAkJCVZB TFVFUyAoIHgnREVBREY5RjlERUFERjlGOSc6OmJpZ2ludCwgJ2FiY2RlZmcnLAogCQkJCQkg Z2VuZXJhdGVfc2VyaWVzKDcsMTUpKTsgLS0gb2Zmc2V0IG51bWJlcnMgMjggdG8gMzYKQEAg LTI5MywxMSArMzAyLDEyIEBAICRub2RlLT5zYWZlX3BzcWwoCiAJCVVQREFURSBwdWJsaWMu dGVzdCBTRVQgYyA9ICdhJyBXSEVSRSBjID0gJzEzJzsgLS0gb2Zmc2V0IG51bWJlciA0MQog CQlVUERBVEUgcHVibGljLnRlc3QgU0VUIGMgPSAnYScgV0hFUkUgYyA9ICcxNCc7IC0tIG9m ZnNldCBudW1iZXIgNDIKIAkJVVBEQVRFIHB1YmxpYy50ZXN0IFNFVCBjID0gJ2EnIFdIRVJF IGMgPSAnMTUnOyAtLSBvZmZzZXQgbnVtYmVyIDQzCisgICAgICAgIENPTU1JVDsKIAkpKTsK IAogIyBOZWVkIG9uZSBhYm9ydGVkIHRyYW5zYWN0aW9uIHRvIHRlc3QgY29ycnVwdGlvbiBp biBIT1QgY2hhaW5zLgotJG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRz ZXNzaW9uLT5kbygKKwlxcSgKIAkJQkVHSU47CiAJCVVQREFURSBwdWJsaWMudGVzdCBTRVQg YyA9ICdhJyBXSEVSRSBjID0gJzknOyAtLSBvZmZzZXQgbnVtYmVyIDQ0CiAJCUFCT1JUOwpA QCAtMzA2LDE5ICszMTYsMTkgQEAgJG5vZGUtPnNhZmVfcHNxbCgKICMgTmVlZCBvbmUgaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb24gdG8gdGVzdCBmZXcgY29ycnVwdGlvbiBpbiBIT1QgY2hh aW5zLgogIyBXZSBhcmUgY3JlYXRpbmcgUFJFUEFSRSBUUkFOU0FDVElPTiBoZXJlIGFzIHRo ZXNlIHdpbGwgbm90IGJlIGFib3J0ZWQKICMgZXZlbiBpZiB3ZSBzdG9wIHRoZSBub2RlLgot JG5vZGUtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKKyRzZXNzaW9uLT5kbygKKwlx cSgKIAkJQkVHSU47CiAJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ2luX3Byb2dyZXNzX3R4JzsK IAkpKTsKLW15ICRpbl9wcm9ncmVzc194aWQgPSAkbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0 Z3JlcycsIHFxKAorbXkgJGluX3Byb2dyZXNzX3hpZCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2 YWwoCisJcXEoCiAJCVNFTEVDVCB0cmFuc2FjdGlvbiBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OwogCSkpOwogCi1teSAkcmVsZnJvemVueGlkID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorbXkgJHJlbGZyb3plbnhpZCA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJcShz ZWxlY3QgcmVsZnJvemVueGlkIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZSA9ICd0ZXN0 JykpOwotbXkgJGRhdGZyb3plbnhpZCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK K215ICRkYXRmcm96ZW54aWQgPSAkc2Vzc2lvbi0+cXVlcnlfb25ldmFsKAogCXEoc2VsZWN0 IGRhdGZyb3plbnhpZCBmcm9tIHBnX2RhdGFiYXNlIHdoZXJlIGRhdG5hbWUgPSAncG9zdGdy ZXMnKSk7CiAKICMgU2FuaXR5IGNoZWNrIHRoYXQgb3VyICd0ZXN0JyB0YWJsZSBoYXMgYSBy ZWxmcm96ZW54aWQgbmV3ZXIgdGhhbiB0aGUKQEAgLTMyNiw2ICszMzYsNyBAQCBteSAkZGF0 ZnJvemVueGlkID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBmaXJzdCBub3Jt YWwgeGlkLiAgV2UgcmVseSBvbiB0aGVzZSBpbnZhcmlhbnRzIGluIHNvbWUgb2Ygb3VyIHRl c3RzLgogaWYgKCRkYXRmcm96ZW54aWQgPD0gMyB8fCAkZGF0ZnJvemVueGlkID49ICRyZWxm cm96ZW54aWQpCiB7CisJJHNlc3Npb24tPmNsb3NlOwogCSRub2RlLT5jbGVhbl9ub2RlOwog CXBsYW4gc2tpcF9hbGwgPT4KIAkgICJYaWQgdGhyZXNob2xkcyBub3QgYXMgZXhwZWN0ZWQ6 IGdvdCBkYXRmcm96ZW54aWQgPSAkZGF0ZnJvemVueGlkLCByZWxmcm96ZW54aWQgPSAkcmVs ZnJvemVueGlkIjsKQEAgLTMzNCwxNyArMzQ1LDIxIEBAIGlmICgkZGF0ZnJvemVueGlkIDw9 IDMgfHwgJGRhdGZyb3plbnhpZCA+PSAkcmVsZnJvemVueGlkKQogCiAjIEZpbmQgd2hlcmUg ZWFjaCBvZiB0aGUgdHVwbGVzIGlzIGxvY2F0ZWQgb24gdGhlIHBhZ2UuIElmIGEgcGFydGlj dWxhcgogIyBsaW5lIHBvaW50ZXIgaXMgYSByZWRpcmVjdCByYXRoZXIgdGhhbiBhIHR1cGxl LCB3ZSByZWNvcmQgdGhlIG9mZnNldCBhcyAtMS4KLW15IEBscF9vZmYgPSBzcGxpdCAnXG4n LCAkbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAorbXkgJGxwX29mZl9yZXMg PSAkc2Vzc2lvbi0+cXVlcnkoCisJcXEoCiAJICAgIFNFTEVDVCBDQVNFIFdIRU4gbHBfZmxh Z3MgPSAyIFRIRU4gLTEgRUxTRSBscF9vZmYgRU5ECiAJICAgIEZST00gaGVhcF9wYWdlX2l0 ZW1zKGdldF9yYXdfcGFnZSgndGVzdCcsICdtYWluJywgMCkpCiAgICAgKQotKTsKKyAgICk7 CitteSBAbHBfb2ZmOworcHVzaChAbHBfb2ZmLCAkXy0+WzBdKSBmb3JlYWNoIEB7JGxwX29m Zl9yZXMtPntyb3dzfX07CisKIHNjYWxhciBAbHBfb2ZmID09ICRST1dDT1VOVCBvciBCQUlM X09VVCgicm93IG9mZnNldCBjb3VudHMgbWlzbWF0Y2giKTsKIAogIyBTYW5pdHkgY2hlY2sg dGhhdCBvdXIgJ3Rlc3QnIHRhYmxlIG9uIGRpc2sgbGF5b3V0IG1hdGNoZXMgZXhwZWN0YXRp b25zLiAgSWYKICMgdGhpcyBpcyBub3Qgc28sIHdlIHdpbGwgaGF2ZSB0byBza2lwIHRoZSB0 ZXN0IHVudGlsIHNvbWVib2R5IHVwZGF0ZXMgdGhlIHRlc3QKICMgdG8gd29yayBvbiB0aGlz IHBsYXRmb3JtLgorJHNlc3Npb24tPmNsb3NlOwogJG5vZGUtPnN0b3A7CiBteSAkZmlsZTsK IG9wZW4oJGZpbGUsICcrPCcsICRyZWxwYXRoKQpAQCAtNzUxLDE3ICs3NjYsMTkgQEAgZm9y IChteSAkdHVwaWR4ID0gMDsgJHR1cGlkeCA8ICRST1dDT1VOVDsgJHR1cGlkeCsrKQogY2xv c2UoJGZpbGUpCiAgIG9yIEJBSUxfT1VUKCJjbG9zZSBmYWlsZWQ6ICQhIik7CiAkbm9kZS0+ c3RhcnQ7Ciskc2Vzc2lvbi0+cmVjb25uZWN0OwogCiAjIFJ1biBwZ19hbWNoZWNrIGFnYWlu c3QgdGhlIGNvcnJ1cHQgdGFibGUgd2l0aCBlcG9jaD0wLCBjb21wYXJpbmcgYWN0dWFsCiAj IGNvcnJ1cHRpb24gbWVzc2FnZXMgYWdhaW5zdCB0aGUgZXhwZWN0ZWQgbWVzc2FnZXMKICRu b2RlLT5jb21tYW5kX2NoZWNrc19hbGwoCiAJWyAncGdfYW1jaGVjaycsICctLW5vLWRlcGVu ZGVudC1pbmRleGVzJywgJy0tcG9ydCcgPT4gJHBvcnQsICdwb3N0Z3JlcycgXSwKIAkyLCBb QGV4cGVjdGVkXSwgW10sICdFeHBlY3RlZCBjb3JydXB0aW9uIG1lc3NhZ2Ugb3V0cHV0Jyk7 Ci0kbm9kZS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAorJHNlc3Npb24tPmRvKAor CXFxKAogICAgICAgICAgICAgICAgICAgICAgICAgQ09NTUlUIFBSRVBBUkVEICdpbl9wcm9n cmVzc190eCc7CiAgICAgICAgICkpOwogCiskc2Vzc2lvbi0+Y2xvc2U7CiAkbm9kZS0+dGVh cmRvd25fbm9kZTsKICRub2RlLT5jbGVhbl9ub2RlOwogCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3VwZ3JhZGUvdC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwgYi9zcmMvYmluL3Bn X3VwZ3JhZGUvdC8wMDdfbXVsdGl4YWN0X2NvbnZlcnNpb24ucGwKaW5kZXggODY3YTA2MjMx NTMuLjY3ZThmOTMzNGE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDdf bXVsdGl4YWN0X2NvbnZlcnNpb24ucGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA3 X211bHRpeGFjdF9jb252ZXJzaW9uLnBsCkBAIC0xNSw2ICsxNSw3IEBAIHVzZSB3YXJuaW5n cyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIE1hdGg6OkJpZ0ludDsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAtMzgsMTAg KzM5LDggQEAgbXkgJHRlbXBkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRp cjsKICMgdmVyc2lvbnMuCiAjCiAjIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY2x1c3Rl ciB0byBjb25uZWN0IHRvLCB0aGUgc2Vjb25kIGFyZ3VtZW50Ci0jIGlzIGEgY2x1c3RlciB1 c2luZyB0aGUgbmV3IHZlcnNpb24uICBXZSBuZWVkIHRoZSAncHNxbCcgYmluYXJ5IGZyb20K LSMgdGhlIG5ldyB2ZXJzaW9uLCB0aGUgbmV3IGNsdXN0ZXIgaXMgb3RoZXJ3aXNlIHVudXNl ZC4gIChXZSBuZWVkIHRvCi0jIHVzZSB0aGUgbmV3ICdwc3FsJyBiZWNhdXNlIHNvbWUgb2Yg dGhlIG1vcmUgYWR2YW5jZWQgYmFja2dyb3VuZCBwc3FsCi0jIHBlcmwgbW9kdWxlIGZlYXR1 cmVzIGRlcGVuZCBvbiBhIGZhaXJseSByZWNlbnQgcHNxbCB2ZXJzaW9uLikKKyMgaXMgYSBj bHVzdGVyIHVzaW5nIHRoZSBuZXcgdmVyc2lvbi4gIFdlIG5lZWQgdGhlIGxpYnBxIGxpYnJh cnkgZnJvbQorIyB0aGUgbmV3IHZlcnNpb24gKGZvciBTZXNzaW9uKSwgdGhlIG5ldyBjbHVz dGVyIGlzIG90aGVyd2lzZSB1bnVzZWQuCiBzdWIgbXhhY3Rfd29ya2xvYWQKIHsKIAlteSAk bm9kZSA9IHNoaWZ0OyAgICAgICAjIENsdXN0ZXIgdG8gY29ubmVjdCB0bwpAQCAtNzksMTgg Kzc4LDE1IEBAIHN1YiBteGFjdF93b3JrbG9hZAogCSMgaW4gZWFjaCBjb25uZWN0aW9uLgog CWZvciAoMCAuLiAkbmNsaWVudHMpCiAJewotCQkjIFVzZSB0aGUgcHNxbCBiaW5hcnkgZnJv bSB0aGUgbmV3IGluc3RhbGxhdGlvbi4gIFRoZQotCQkjIEJhY2tncm91bmRQc3FsIGZ1bmN0 aW9uYWxpdHkgZG9lc24ndCB3b3JrIHdpdGggb2xkZXIgcHNxbAotCQkjIHZlcnNpb25zLgot CQlteSAkY29ubiA9ICRiaW5ub2RlLT5iYWNrZ3JvdW5kX3BzcWwoCi0JCQknJywKKwkJIyBV c2UgdGhlIGxpYnBxL1Nlc3Npb24gaW5mcmFzdHJ1Y3R1cmUgZnJvbSB0aGUgbmV3IGluc3Rh bGxhdGlvbi4KKwkJbXkgJGNvbm4gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXco CiAJCQljb25uc3RyID0+ICRub2RlLT5jb25uc3RyKCdwb3N0Z3JlcycpLAotCQkJdGltZW91 dCA9PiAkY29ubmVjdGlvbl90aW1lb3V0X3NlY3MpOworCQkJbGliZGlyID0+ICRiaW5ub2Rl LT5jb25maWdfZGF0YSgnLS1saWJkaXInKSk7CiAKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIlNF VCBsb2dfc3RhdGVtZW50PW5vbmUiLCB2ZXJib3NlID0+ICR2ZXJib3NlKQorCQkkY29ubi0+ ZG8oIlNFVCBsb2dfc3RhdGVtZW50PW5vbmUiKQogCQkgIHVubGVzcyAkdmVyYm9zZTsKLQkJ JGNvbm4tPnF1ZXJ5X3NhZmUoIlNFVCBlbmFibGVfc2Vxc2Nhbj1vZmYiLCB2ZXJib3NlID0+ ICR2ZXJib3NlKTsKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIiwgdmVyYm9zZSA9PiAk dmVyYm9zZSk7CisJCSRjb25uLT5kbygiU0VUIGVuYWJsZV9zZXFzY2FuPW9mZiIpOworCQkk Y29ubi0+ZG8oIkJFR0lOIik7CiAKIAkJcHVzaChAY29ubmVjdGlvbnMsICRjb25uKTsKIAl9 CkBAIC0xMDgsOSArMTA0LDkgQEAgc3ViIG14YWN0X3dvcmtsb2FkCiAJCW15ICRjb25uID0g JGNvbm5lY3Rpb25zWyAkaSAlICRuY2xpZW50cyBdOwogCiAJCW15ICRzcWwgPSAoJGkgJSAk YWJvcnRfZXZlcnkgPT0gMCkgPyAiQUJPUlQiIDogIkNPTU1JVCI7Ci0JCSRjb25uLT5xdWVy eV9zYWZlKCRzcWwsIHZlcmJvc2UgPT4gJHZlcmJvc2UpOworCQkkY29ubi0+ZG8oJHNxbCk7 CiAKLQkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIiwgdmVyYm9zZSA9PiAkdmVyYm9zZSk7 CisJCSRjb25uLT5kbygiQkVHSU4iKTsKIAkJaWYgKCRpICUgJHVwZGF0ZV9ldmVyeSA9PSAw KQogCQl7CiAJCQkkc3FsID0gcXFbCkBAIC0xMjYsMTIgKzEyMiwxMiBAQCBzdWIgbXhhY3Rf d29ya2xvYWQKIAkJCSAgKSBhcyB4CiAJCQldOwogCQl9Ci0JCSRjb25uLT5xdWVyeV9zYWZl KCRzcWwsIHZlcmJvc2UgPT4gJHZlcmJvc2UpOworCQkkY29ubi0+ZG8oJHNxbCk7CiAJfQog CiAJZm9yIG15ICRjb25uIChAY29ubmVjdGlvbnMpCiAJewotCQkkY29ubi0+cXVpdCgpOwor CQkkY29ubi0+Y2xvc2U7CiAJfQogCiAJJG5vZGUtPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9hdXRoZW50aWNhdGlvbi90LzAwMV9wYXNzd29yZC5wbCBiL3NyYy90ZXN0L2F1dGhl bnRpY2F0aW9uL3QvMDAxX3Bhc3N3b3JkLnBsCmluZGV4IDY5ZWQ0OTE5YjE2Li5hYzJhYTNj ZTIzZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dv cmQucGwKKysrIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDFfcGFzc3dvcmQucGwK QEAgLTEzLDYgKzEzLDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiBpZiAoISR1c2VfdW5peF9zb2NrZXRzKQpAQCAtMTg1LDM2ICsxODYsMTgg QEAgbXkgJHJlcyA9ICRub2RlLT5zYWZlX3BzcWwoCiAJIFdIRVJFIHJvbG5hbWUgPSAnc2Ny YW1fcm9sZV9pdGVyJyIpOwogaXMoJHJlcywgJ1NDUkFNLVNIQS0yNTYkMTAyNDonLCAnc2Ny YW1faXRlcmF0aW9ucyBpbiBzZXJ2ZXIgc2lkZSBST0xFJyk7CiAKLSMgSWYgd2UgZG9uJ3Qg aGF2ZSBJTzo6UHR5LCBmb3JnZXQgaXQsIGJlY2F1c2UgSVBDOjpSdW4gZGVwZW5kcyBvbiB0 aGF0Ci0jIHRvIHN1cHBvcnQgcHR5IGNvbm5lY3Rpb25zLiBBbHNvIHNraXAgaWYgSVBDOjpS dW4gaXNuJ3QgYXQgbGVhc3QgMC45OAotIyBhcyBlYXJsaWVyIHZlcnNpb24gY2F1c2UgdGhl IHNlc3Npb24gdG8gdGltZSBvdXQuCi1TS0lQOgotewotCXNraXAgIklPOjpQdHkgYW5kIElQ Qzo6UnVuID49IDAuOTggcmVxdWlyZWQiLCAxCi0JICB1bmxlc3MgZXZhbCB7IHJlcXVpcmUg SU86OlB0eTsgSVBDOjpSdW4tPlZFUlNJT04oJzAuOTgnKTsgfTsKKyMgc2V0IHBhc3N3b3Jk IHVzaW5nIFBRY2hhbmdlUGFzc3dvcmQKK215ICRzZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3IChub2RlID0+ICRub2RlKTsKIAotCSMgQWx0ZXIgdGhlIHBhc3N3 b3JkIG9uIHRoZSBjcmVhdGVkIHJvbGUgdXNpbmcgXHBhc3N3b3JkIGluIHBzcWwgdG8gZW5z dXJlCi0JIyB0aGF0IGNsaWVudHNpZGUgcGFzc3dvcmQgY2hhbmdlcyB1c2UgdGhlIHNjcmFt X2l0ZXJhdGlvbnMgdmFsdWUgd2hlbgotCSMgY2FsY3VsYXRpbmcgU0NSQU0gc2VjcmV0cy4K LQlteSAkc2Vzc2lvbiA9ICRub2RlLT5pbnRlcmFjdGl2ZV9wc3FsKCdwb3N0Z3JlcycpOwot Ci0JJHNlc3Npb24tPnNldF9xdWVyeV90aW1lcl9yZXN0YXJ0KCk7Ci0JJHNlc3Npb24tPnF1 ZXJ5KCJTRVQgcGFzc3dvcmRfZW5jcnlwdGlvbj0nc2NyYW0tc2hhLTI1Nic7Iik7Ci0JJHNl c3Npb24tPnF1ZXJ5KCJTRVQgc2NyYW1faXRlcmF0aW9ucz00MjsiKTsKLQkkc2Vzc2lvbi0+ cXVlcnlfdW50aWwocXIvRW50ZXIgbmV3IHBhc3N3b3JkLywKLQkJIlxccGFzc3dvcmQgc2Ny YW1fcm9sZV9pdGVyXG4iKTsKLQkkc2Vzc2lvbi0+cXVlcnlfdW50aWwocXIvRW50ZXIgaXQg YWdhaW4vLCAicGFzc1xuIik7Ci0JJHNlc3Npb24tPnF1ZXJ5X3VudGlsKHFyL3Bvc3RncmVz PSMgLywgInBhc3NcbiIpOwotCSRzZXNzaW9uLT5xdWl0OwotCi0JJHJlcyA9ICRub2RlLT5z YWZlX3BzcWwoCi0JCSdwb3N0Z3JlcycsCiskc2Vzc2lvbi0+ZG8oIlNFVCBwYXNzd29yZF9l bmNyeXB0aW9uPSdzY3JhbS1zaGEtMjU2JzsiLAorCQkJICJTRVQgc2NyYW1faXRlcmF0aW9u cz00MjsiKTsKKyRyZXMgPSAkc2Vzc2lvbi0+c2V0X3Bhc3N3b3JkKCJzY3JhbV9yb2xlX2l0 ZXIiLCJwYXNzIik7CitpcygkcmVzLT57c3RhdHVzfSwgMSwgInNldCBwYXNzd29yZCBvayIp OworJHJlcyA9ICRzZXNzaW9uLT5xdWVyeV9vbmV2YWwoCiAJCSJTRUxFQ1Qgc3Vic3RyKHJv bHBhc3N3b3JkLDEsMTcpCiAJCSBGUk9NIHBnX2F1dGhpZAogCQkgV0hFUkUgcm9sbmFtZSA9 ICdzY3JhbV9yb2xlX2l0ZXInIik7Ci0JaXMoJHJlcywgJ1NDUkFNLVNIQS0yNTYkNDI6JywK LQkJJ3NjcmFtX2l0ZXJhdGlvbnMgaW4gcHNxbCBccGFzc3dvcmQgY29tbWFuZCcpOwotfQor aXMoJHJlcywgJ1NDUkFNLVNIQS0yNTYkNDI6JywgJ3NjcmFtX2l0ZXJhdGlvbnMgY29ycmVj dCcpOwogCiAjIENyZWF0ZSBhIGRhdGFiYXNlIHRvIHRlc3QgcmVndWxhciBleHByZXNzaW9u LgogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIGRhdGFiYXNlIHJlZ2V4 X3Rlc3RkYjsiKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2F1dGhlbnRpY2F0aW9uL3QvMDA3 X3ByZV9hdXRoLnBsIGIvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDdfcHJlX2F1dGgu cGwKaW5kZXggMDQwNjNmNDcyMWQuLjE3ZGU5MmJjNDFhIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9hdXRoZW50aWNhdGlvbi90LzAwN19wcmVfYXV0aC5wbAorKysgYi9zcmMvdGVzdC9hdXRo ZW50aWNhdGlvbi90LzAwN19wcmVfYXV0aC5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIHN0cmlj dDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIAogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNl IFRlc3Q6Ok1vcmU7CkBAIC0zNiwyNCArMzcsMjcgQEAgaWYgKCEkbm9kZS0+Y2hlY2tfZXh0 ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHMnKTsKIAogIyBDb25uZWN0 IHRvIHRoZSBzZXJ2ZXIgYW5kIGluamVjdCBhIHdhaXRwb2ludC4KLW15ICRwc3FsID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3FsLT5xdWVyeV9zYWZlKCJT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2luaXQtcHJlLWF1dGgnLCAnd2FpdCcp Iik7CitteSAkc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKKyRzZXNzaW9uLT5kbygiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoKCdpbml0LXByZS1hdXRoJywgJ3dhaXQnKSIpOwogCiAjIEZyb20gdGhpcyBwb2ludCBv biwgYWxsIG5ldyBjb25uZWN0aW9ucyB3aWxsIGhhbmcgZHVyaW5nIHN0YXJ0dXAsIGp1c3Qg YmVmb3JlCi0jIGF1dGhlbnRpY2F0aW9uLiBVc2UgdGhlICRwc3FsIGNvbm5lY3Rpb24gaGFu ZGxlIGZvciBzZXJ2ZXIgaW50ZXJhY3Rpb24uCi1teSAkY29ubiA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgd2FpdCA9PiAwKTsKKyMgYXV0aGVudGljYXRpb24uIFVz ZSB0aGUgJHNlc3Npb24gY29ubmVjdGlvbiBoYW5kbGUgZm9yIHNlcnZlciBpbnRlcmFjdGlv bi4KK215ICRjb25uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JG5vZGUsIHdhaXQgPT4gMCk7CiAKICMgV2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gc2hv dyB1cCBpbiBwZ19zdGF0X2FjdGl2aXR5LCB3aXRoIHRoZSB3YWl0X2V2ZW50Ci0jIG9mIHRo ZSBpbmplY3Rpb24gcG9pbnQuCisjIG9mIHRoZSBpbmplY3Rpb24gcG9pbnQuIFdlIG5lZWQg dG8gcG9sbCB0aGUgYXN5bmMgY29ubmVjdGlvbiB0byBkcml2ZSBpdCBmb3J3YXJkLgogbXkg JHBpZDsKIHdoaWxlICgxKQogewotCSRwaWQgPSAkcHNxbC0+cXVlcnkoCisJIyBEcml2ZSB0 aGUgYXN5bmMgY29ubmVjdGlvbiBmb3J3YXJkIC0gaXQgd29uJ3QgcHJvZ3Jlc3Mgd2l0aG91 dCBwb2xsaW5nCisJJGNvbm4tPnBvbGxfY29ubmVjdCgpOworCisJJHBpZCA9ICRzZXNzaW9u LT5xdWVyeV9vbmV2YWwoCiAJCXFxe1NFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5 CiAgIFdIRVJFIGJhY2tlbmRfdHlwZSA9ICdjbGllbnQgYmFja2VuZCcKICAgICBBTkQgc3Rh dGUgPSAnc3RhcnRpbmcnCi0gICAgQU5EIHdhaXRfZXZlbnQgPSAnaW5pdC1wcmUtYXV0aCc7 fSk7Ci0JbGFzdCBpZiAkcGlkIG5lICIiOworICAgIEFORCB3YWl0X2V2ZW50ID0gJ2luaXQt cHJlLWF1dGgnO30sIDEpOworCWxhc3QgaWYgZGVmaW5lZCAkcGlkICYmICRwaWQgbmUgIiI7 CiAKIAl1c2xlZXAoMTAwXzAwMCk7CiB9CkBAIC02MiwyNCArNjYsMjQgQEAgbm90ZSAiYmFj a2VuZCAkcGlkIGlzIGF1dGhlbnRpY2F0aW5nIjsKIG9rKDEsICdhdXRoZW50aWNhdGluZyBj b25uZWN0aW9ucyBhcmUgcmVjb3JkZWQgaW4gcGdfc3RhdF9hY3Rpdml0eScpOwogCiAjIERl dGFjaCB0aGUgd2FpdHBvaW50IGFuZCB3YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBjb21w bGV0ZS4KLSRwc3FsLT5xdWVyeV9zYWZlKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtl dXAoJ2luaXQtcHJlLWF1dGgnKTsiKTsKKyRzZXNzaW9uLT5kbygiU0VMRUNUIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdpbml0LXByZS1hdXRoJykiKTsKICRjb25uLT53YWl0X2Nvbm5l Y3QoKTsKIAogIyBNYWtlIHN1cmUgdGhlIHBnc3RhdCBlbnRyeSBpcyB1cGRhdGVkIGV2ZW50 dWFsbHkuCiB3aGlsZSAoMSkKIHsKIAlteSAkc3RhdGUgPQotCSAgJHBzcWwtPnF1ZXJ5KCJT RUxFQ1Qgc3RhdGUgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHBpZCA9ICRwaWQ7Iik7 Ci0JbGFzdCBpZiAkc3RhdGUgZXEgImlkbGUiOworCSAgJHNlc3Npb24tPnF1ZXJ5X29uZXZh bCgiU0VMRUNUIHN0YXRlIEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBwaWQgPSAkcGlk Iik7CisJbGFzdCBpZiBkZWZpbmVkICRzdGF0ZSAmJiAkc3RhdGUgZXEgImlkbGUiOwogCi0J bm90ZSAic3RhdGUgZm9yIGJhY2tlbmQgJHBpZCBpcyAnJHN0YXRlJzsgd2FpdGluZyBmb3Ig J2lkbGUnLi4uIjsKKwlub3RlICJzdGF0ZSBmb3IgYmFja2VuZCAkcGlkIGlzICciIC4gKCRz dGF0ZSAvLyAndW5kZWYnKSAuICInOyB3YWl0aW5nIGZvciAnaWRsZScuLi4iOwogCXVzbGVl cCgxMDBfMDAwKTsKIH0KIAogb2soMSwgJ2F1dGhlbnRpY2F0ZWQgY29ubmVjdGlvbnMgcmVh Y2ggaWRsZSBzdGF0ZSBpbiBwZ19zdGF0X2FjdGl2aXR5Jyk7CiAKLSRwc3FsLT5xdWVyeV9z YWZlKCJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2luaXQtcHJlLWF1dGgnKTsi KTsKLSRwc3FsLT5xdWl0KCk7Ci0kY29ubi0+cXVpdCgpOworJHNlc3Npb24tPmRvKCJTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2luaXQtcHJlLWF1dGgnKSIpOworJHNlc3Np b24tPmNsb3NlKCk7CiskY29ubi0+Y2xvc2UoKTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIu cGwgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwK aW5kZXggMTYxOWZiZmZkNDUuLjNkNGViMWJmZTMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL29hdXRoX3ZhbGlkYXRvci90LzAwMV9zZXJ2ZXIucGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDFfc2VydmVyLnBsCkBAIC0xMiw2ICsxMiw3 IEBAIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBKU09OOjpQUCAgICAgcXco ZW5jb2RlX2pzb24pOwogdXNlIE1JTUU6OkJhc2U2NCBxdyhlbmNvZGVfYmFzZTY0KTsKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsK IApAQCAtNTcsNyArNTgsNyBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVB VEUgVVNFUiB0ZXN0YWx0OycpOwogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JF QVRFIFVTRVIgdGVzdHBhcmFtOycpOwogCiAjIFNhdmUgYSBiYWNrZ3JvdW5kIGNvbm5lY3Rp b24gZm9yIGxhdGVyIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KLW15ICRiZ2Nvbm4gPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworbXkgJGJnY29ubiA9IFBvc3RncmVT UUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogbXkgJHdlYnNlcnZl ciA9IE9BdXRoOjpTZXJ2ZXItPm5ldygpOwogJHdlYnNlcnZlci0+cnVuKCk7CkBAIC0xMjQs MTEgKzEyNSwxMSBAQCAkbG9nX3N0YXJ0ID0KICAgJG5vZGUtPndhaXRfZm9yX2xvZyhxci9y ZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlcy8sICRsb2dfc3RhcnQpOwogCiAjIENoZWNr IHBnX2hiYV9maWxlX3J1bGVzKCkgc3VwcG9ydC4KLW15ICRjb250ZW50cyA9ICRiZ2Nvbm4t PnF1ZXJ5X3NhZmUoCitteSAkY29udGVudHMgPSAkYmdjb25uLT5xdWVyeSgKIAlxcShTRUxF Q1QgcnVsZV9udW1iZXIsIGF1dGhfbWV0aG9kLCBvcHRpb25zCiAJCSBGUk9NIHBnX2hiYV9m aWxlX3J1bGVzCiAJCSBPUkRFUiBCWSBydWxlX251bWJlcjspKTsKLWlzKCAkY29udGVudHMs CitpcyggJGNvbnRlbnRzLT57cHNxbG91dH0sCiAJcXF7MXxvYXV0aHxce2lzc3Vlcj0kaXNz dWVyLCJzY29wZT1vcGVuaWQgcG9zdGdyZXMiLHZhbGlkYXRvcj12YWxpZGF0b3JcfQogMnxv YXV0aHxce2lzc3Vlcj0kaXNzdWVyLy53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24t c2VydmVyL2FsdGVybmF0ZSwic2NvcGU9b3BlbmlkIHBvc3RncmVzIGFsdCIsdmFsaWRhdG9y PXZhbGlkYXRvclx9CiAzfG9hdXRofFx7aXNzdWVyPSRpc3N1ZXIvcGFyYW0sInNjb3BlPW9w ZW5pZCBwb3N0Z3JlcyIsdmFsaWRhdG9yPXZhbGlkYXRvclx9fSwKQEAgLTU1MSw3ICs1NTIs NyBAQCAkY29tbW9uX2Nvbm5zdHIgPQogICAiZGJuYW1lPXBvc3RncmVzIG9hdXRoX2lzc3Vl cj0kaXNzdWVyLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIG9hdXRoX3Njb3Bl PScnIG9hdXRoX2NsaWVudF9pZD1mMDJjNjM2MS0wNjM1IjsKIAogIyBNaXNiZWhhdmluZyB2 YWxpZGF0b3JzIG11c3QgZmFpbCBzaHV0LgotJGJnY29ubi0+cXVlcnlfc2FmZSgiQUxURVIg U1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQgVE8gJyciKTsKKyRiZ2Nvbm4t PmRvKCJBTFRFUiBTWVNURU0gU0VUIG9hdXRoX3ZhbGlkYXRvci5hdXRobl9pZCBUTyAnJyIp OwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQogICAkbm9kZS0+d2FpdF9mb3JfbG9n KHFyL3JlbG9hZGluZyBjb25maWd1cmF0aW9uIGZpbGVzLywgJGxvZ19zdGFydCk7CkBAIC01 NjIsMTUgKzU2MywxNSBAQCAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAlleHBlY3RlZF9zdGRl cnIgPT4gcXIvT0F1dGggYmVhcmVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZC8sCiAJbG9nX2xp a2UgPT4gWwogCQlxci9jb25uZWN0aW9uIGF1dGhlbnRpY2F0ZWQ6IGlkZW50aXR5PSIiLywK LQkJcXIvRkFUQUw6XHMrT0F1dGggYmVhcmVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZC8sCisJ CXFyL0ZBVEFMOiAoIFtBLVowLTldKzopPyBPQXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24g ZmFpbGVkLywKIAkJcXIvREVUQUlMOlxzK1ZhbGlkYXRvciBwcm92aWRlZCBubyBpZGVudGl0 eS8sCiAJXSk7CiAKICMgRXZlbiBpZiBhIHZhbGlkYXRvciBhdXRoZW50aWNhdGVzIHRoZSB1 c2VyLCBpZiB0aGUgdG9rZW4gaXNuJ3QgY29uc2lkZXJlZAogIyB2YWxpZCwgdGhlIGNvbm5l Y3Rpb24gZmFpbHMuCi0kYmdjb25uLT5xdWVyeV9zYWZlKAorJGJnY29ubi0+ZG8oCiAJIkFM VEVSIFNZU1RFTSBTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhuX2lkIFRPICd0ZXN0XEBleGFt cGxlLm9yZyciKTsKLSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoCiskYmdjb25uLT5kbygKIAkiQUxU RVIgU1lTVEVNIFNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG9yaXplX3Rva2VucyBUTyBmYWxz ZSIpOwogJG5vZGUtPnJlbG9hZDsKICRsb2dfc3RhcnQgPQpAQCAtNTgyLDcgKzU4Myw3IEBA ICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9PQXV0aCBi ZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLywKIAlsb2dfbGlrZSA9PiBbCiAJCXFyL2Nv bm5lY3Rpb24gYXV0aGVudGljYXRlZDogaWRlbnRpdHk9InRlc3RcQGV4YW1wbGVcLm9yZyIv LAotCQlxci9GQVRBTDpccytPQXV0aCBiZWFyZXIgYXV0aGVudGljYXRpb24gZmFpbGVkLywK KwkJcXIvRkFUQUw6ICggW0EtWjAtOV0rOik/IE9BdXRoIGJlYXJlciBhdXRoZW50aWNhdGlv biBmYWlsZWQvLAogCQlxci9ERVRBSUw6XHMrVmFsaWRhdG9yIGZhaWxlZCB0byBhdXRob3Jp emUgdGhlIHByb3ZpZGVkIHRva2VuLywKIAldKTsKIApAQCAtNjY0LDggKzY2NSw4IEBAIGxv Y2FsIGFsbCB0ZXN0cGFyYW0gb2F1dGggaXNzdWVyPSIkaXNzdWVyIiBzY29wZT0iIiBkZWxl Z2F0ZV9pZGVudF9tYXBwaW5nPTEKIH0pOwogCiAjIFRvIHN0YXJ0LCBoYXZlIHRoZSB2YWxp ZGF0b3IgdXNlIHRoZSByb2xlIG5hbWVzIGFzIGF1dGhuIElEcy4KLSRiZ2Nvbm4tPnF1ZXJ5 X3NhZmUoIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsK LSRiZ2Nvbm4tPnF1ZXJ5X3NhZmUoIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0 b3IuYXV0aG9yaXplX3Rva2VucyIpOworJGJnY29ubi0+ZG8oIkFMVEVSIFNZU1RFTSBSRVNF VCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsKKyRiZ2Nvbm4tPmRvKCJBTFRFUiBTWVNU RU0gUkVTRVQgb2F1dGhfdmFsaWRhdG9yLmF1dGhvcml6ZV90b2tlbnMiKTsKIAogJG5vZGUt PnJlbG9hZDsKICRsb2dfc3RhcnQgPQpAQCAtNjgyLDcgKzY4Myw3IEBAICRub2RlLT5jb25u ZWN0X2ZhaWxzKAogCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9PQXV0aCBiZWFyZXIgYXV0aGVu dGljYXRpb24gZmFpbGVkLyk7CiAKICMgSGF2ZSB0aGUgdmFsaWRhdG9yIGlkZW50aWZ5IHRo ZSBlbmQgdXNlciBhcyB1c2VyQGV4YW1wbGUuY29tLgotJGJnY29ubi0+cXVlcnlfc2FmZSgK KyRiZ2Nvbm4tPmRvKAogCSJBTFRFUiBTWVNURU0gU0VUIG9hdXRoX3ZhbGlkYXRvci5hdXRo bl9pZCBUTyAndXNlclxAZXhhbXBsZS5jb20nIik7CiAkbm9kZS0+cmVsb2FkOwogJGxvZ19z dGFydCA9CkBAIC03MDYsNyArNzA3LDcgQEAgJG5vZGUtPmNvbm5lY3Rfb2soCiAJZXhwZWN0 ZWRfc3RkZXJyID0+CiAJICBxckBWaXNpdCBodHRwczovL2V4YW1wbGVcLmNvbS8gYW5kIGVu dGVyIHRoZSBjb2RlOiBwb3N0Z3Jlc3VzZXJAKTsKIAotJGJnY29ubi0+cXVlcnlfc2FmZSgi QUxURVIgU1lTVEVNIFJFU0VUIG9hdXRoX3ZhbGlkYXRvci5hdXRobl9pZCIpOworJGJnY29u bi0+ZG8oIkFMVEVSIFNZU1RFTSBSRVNFVCBvYXV0aF92YWxpZGF0b3IuYXV0aG5faWQiKTsK ICRub2RlLT5yZWxvYWQ7CiAkbG9nX3N0YXJ0ID0KICAgJG5vZGUtPndhaXRfZm9yX2xvZyhx ci9yZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmaWxlcy8sICRsb2dfc3RhcnQpOwpAQCAtODI5 LDcgKzgzMCw3IEBAICR1c2VyID0gInRlc3RhbHQiOwogJG5vZGUtPmNvbm5lY3RfZmFpbHMo CiAJInVzZXI9JHVzZXIgZGJuYW1lPXBvc3RncmVzIG9hdXRoX2lzc3Vlcj0kaXNzdWVyLy53 ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyL2FsdGVybmF0ZSBvYXV0aF9j bGllbnRfaWQ9ZjAyYzYzNjEtMDYzNiIsCiAJImZhaWxfdmFsaWRhdG9yIGlzIHVzZWQgZm9y ICR1c2VyIiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvRkFUQUw6XHMrZmFpbF92YWxpZGF0 b3I6IHNlbnRpbmVsIGVycm9yLyk7CisJZXhwZWN0ZWRfc3RkZXJyID0+IHFyL0ZBVEFMOiAo IFtBLVowLTldKzopPyBmYWlsX3ZhbGlkYXRvcjogc2VudGluZWwgZXJyb3IvKTsKIAogIwog IyBUZXN0IEFCSSBjb21wYXRpYmlsaXR5IG1hZ2ljIG1hcmtlcgpAQCAtODQ5LDcgKzg1MCw3 IEBAICRub2RlLT5jb25uZWN0X2ZhaWxzKAogCSJ1c2VyPXRlc3QgZGJuYW1lPXBvc3RncmVz IG9hdXRoX2lzc3Vlcj0kaXNzdWVyLy53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24t c2VydmVyL2FsdGVybmF0ZSBvYXV0aF9jbGllbnRfaWQ9ZjAyYzYzNjEtMDYzNiIsCiAJIm1h Z2ljX3ZhbGlkYXRvciBpcyB1c2VkIGZvciAkdXNlciIsCiAJZXhwZWN0ZWRfc3RkZXJyID0+ Ci0JICBxci9GQVRBTDpccytPQXV0aCB2YWxpZGF0b3IgbW9kdWxlICJtYWdpY192YWxpZGF0 b3IiOiBtYWdpYyBudW1iZXIgbWlzbWF0Y2gvCisJICBxci9GQVRBTDogKCBbQS1aMC05XSs6 KT8gT0F1dGggdmFsaWRhdG9yIG1vZHVsZSAibWFnaWNfdmFsaWRhdG9yIjogbWFnaWMgbnVt YmVyIG1pc21hdGNoLwogKTsKICRub2RlLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fpby5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9haW8vdC8wMDFfYWlvLnBsCmluZGV4IDYzY2FkZDY0YzE1Li5iZjk0NjgwMTYwMSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90LzAwMV9haW8ucGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90LzAwMV9haW8ucGwKQEAgLTQsNiArNCw3IEBA IHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIApAQCAt NjIsMTkgKzYzLDE5IEBAIHN1YiBwc3FsX2xpa2UKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRl cjo6TGV2ZWwgPSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAxOwogCW15ICRpb19tZXRob2Qg PSBzaGlmdDsKLQlteSAkcHNxbCA9IHNoaWZ0OworCW15ICRzZXNzaW9uID0gc2hpZnQ7CiAJ bXkgJG5hbWUgPSBzaGlmdDsKIAlteSAkc3FsID0gc2hpZnQ7CiAJbXkgJGV4cGVjdGVkX3N0 ZG91dCA9IHNoaWZ0OwogCW15ICRleHBlY3RlZF9zdGRlcnIgPSBzaGlmdDsKLQlteSAoJGNt ZHJldCwgJG91dHB1dCk7CiAKLQkoJG91dHB1dCwgJGNtZHJldCkgPSAkcHNxbC0+cXVlcnko JHNxbCk7CisJbXkgJHJlcyA9ICRzZXNzaW9uLT5xdWVyeSgkc3FsKTsKKwlteSAkb3V0cHV0 ID0gJHJlcy0+e3BzcWxvdXR9OwogCiAJbGlrZSgkb3V0cHV0LCAkZXhwZWN0ZWRfc3Rkb3V0 LCAiJGlvX21ldGhvZDogJG5hbWU6IGV4cGVjdGVkIHN0ZG91dCIpOwotCWxpa2UoJHBzcWwt PntzdGRlcnJ9LCAkZXhwZWN0ZWRfc3RkZXJyLAorCWxpa2UoJHNlc3Npb24tPmdldF9zdGRl cnIoKSwgJGV4cGVjdGVkX3N0ZGVyciwKIAkJIiRpb19tZXRob2Q6ICRuYW1lOiBleHBlY3Rl ZCBzdGRlcnIiKTsKLQkkcHNxbC0+e3N0ZGVycn0gPSAnJzsKKwkkc2Vzc2lvbi0+Y2xlYXJf c3RkZXJyKCk7CiAKIAlyZXR1cm4gJG91dHB1dDsKIH0KQEAgLTg3LDE3ICs4OCwxNSBAQCBz dWIgcXVlcnlfd2FpdF9ibG9jawogCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRU ZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7CiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15 ICRub2RlID0gc2hpZnQ7Ci0JbXkgJHBzcWwgPSBzaGlmdDsKKwlteSAkc2Vzc2lvbiA9IHNo aWZ0OwogCW15ICRuYW1lID0gc2hpZnQ7CiAJbXkgJHNxbCA9IHNoaWZ0OwogCW15ICR3YWl0 Zm9yID0gc2hpZnQ7CiAJbXkgJHdhaXRfY3VycmVudF9zZXNzaW9uID0gc2hpZnQ7CiAKLQlt eSAkcGlkID0gJHBzcWwtPnF1ZXJ5X3NhZmUoJ1NFTEVDVCBwZ19iYWNrZW5kX3BpZCgpJyk7 CisJbXkgJHBpZCA9ICRzZXNzaW9uLT5iYWNrZW5kX3BpZCgpOwogCi0JJHBzcWwtPntzdGRp bn0gLj0gcXEoJHNxbDtcbik7Ci0JJHBzcWwtPntydW59LT5wdW1wX25iKCk7Ci0Jbm90ZSAi aXNzdWVkIHNxbDogJHNxbDtcbiI7CisJJHNlc3Npb24tPmRvX2FzeW5jKCRzcWwpOwogCW9r KDEsICIkaW9fbWV0aG9kOiAkbmFtZTogaXNzdWVkIHNxbCIpOwogCiAJbXkgJHdhaXRxdWVy eTsKQEAgLTE2Myw3ICsxNjIsNyBAQCBzdWIgdGVzdF9oYW5kbGUKIAlteSAkaW9fbWV0aG9k ID0gc2hpZnQ7CiAJbXkgJG5vZGUgPSBzaGlmdDsKIAotCW15ICRwc3FsID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRw c3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwog CiAJIyBsZWFrIHdhcm5pbmc6IGltcGxpY2l0IHhhY3QKIAlwc3FsX2xpa2UoCkBAIC0yNjks NyArMjY4LDcgQEAgc3ViIHRlc3RfYmF0Y2htb2RlCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0 OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5k X3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBv c3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCSMgSW4g YSBidWlsZCB3aXRoIFJFTENBQ0hFX0ZPUkNFX1JFTEVBU0UgYW5kIENBVENBQ0hFX0ZPUkNF X1JFTEVBU0UsIGp1c3QKIAkjIHVzaW5nIFNFTEVDVCBiYXRjaF9zdGFydCgpIGNhdXNlcyBz cHVyaW91cyB0ZXN0IGZhaWx1cmVzLCBiZWNhdXNlIHRoZQpAQCAtMzI5LDcgKzMyOCw3IEBA IHN1YiB0ZXN0X2lvX2Vycm9yCiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91 dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCSRwc3FsLT5xdWVyeV9zYWZlKAog CQlxcSgKQEAgLTM4MSw4ICszODAsOCBAQCBzdWIgdGVzdF9zdGFydHdhaXRfaW8KIAlteSAk bm9kZSA9IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0cHV0KTsKIAotCW15ICRwc3FsX2EgPSAk bm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7 Ci0JbXkgJHBzcWxfYiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25f ZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9hID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworCW15ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAogCSMjIyBWZXJpZnkgYmVo YXZpb3IgZm9yIG5vcm1hbCB0YWJsZXMKQEAgLTQ0MSw3ICs0NDAsNyBAQCBzdWIgdGVzdF9z dGFydHdhaXRfaW8KIAogCiAJIyBCZWNhdXNlIHRoZSBJTyB3YXMgdGVybWluYXRlZCwgYnV0 IG5vdCBtYXJrZWQgYXMgdmFsaWQsIHNlY29uZCBzZXNzaW9uIHNob3VsZCBnZXQgdGhlIHJp Z2h0IHRvIHN0YXJ0IGlvCi0JcHVtcF91bnRpbCgkcHNxbF9iLT57cnVufSwgJHBzcWxfYi0+ e3RpbWVvdXR9LCBcJHBzcWxfYi0+e3N0ZG91dH0sIHFyL3QvKTsKKwkkcHNxbF9iLT53YWl0 X2Zvcl9hc3luY19wYXR0ZXJuKHFyL3QvKTsKIAlvaygxLCAiJGlvX21ldGhvZDogYmxvY2tp bmcgc3RhcnQgYnVmZmVyIGlvLCBjYW4gc3RhcnQgaW8iKTsKIAogCSMgdGVybWluYXRlIHRo ZSBJTyBhZ2FpbgpAQCAtNDc5LDcgKzQ3OCw3IEBAIHN1YiB0ZXN0X3N0YXJ0d2FpdF9pbwog CQlxci9eJC8pOwogCiAJIyBCZWNhdXNlIHRoZSBJTyB3YXMgdGVybWluYXRlZCwgYW5kIG1h cmtlZCBhcyB2YWxpZCwgc2Vjb25kIHNlc3Npb24gc2hvdWxkIGNvbXBsZXRlIGJ1dCBub3Qg bmVlZCBpbwotCXB1bXBfdW50aWwoJHBzcWxfYi0+e3J1bn0sICRwc3FsX2ItPnt0aW1lb3V0 fSwgXCRwc3FsX2ItPntzdGRvdXR9LCBxci9mLyk7CisJJHBzcWxfYi0+d2FpdF9mb3JfYXN5 bmNfcGF0dGVybihxci9mLyk7CiAJb2soMSwgIiRpb19tZXRob2Q6IGJsb2NraW5nIHN0YXJ0 IGJ1ZmZlciBpbywgbm8gbmVlZCB0byBzdGFydCBpbyIpOwogCiAJIyBidWZmZXIgaXMgdmFs aWQgbm93LCBtYWtlIGl0IGludmFsaWQgYWdhaW4KQEAgLTU1OCw4ICs1NTcsOCBAQCBzdWIg dGVzdF9jb21wbGV0ZV9mb3JlaWduCiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwg JG91dHB1dCk7CiAKLQlteSAkcHNxbF9hID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7CisJbXkgJHBz cWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsK KwlteSAkcHNxbF9iID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4g JG5vZGUpOwogCiAJIyBJc3N1ZSBJTyB3aXRob3V0IHdhaXRpbmcgZm9yIGNvbXBsZXRpb24s IHRoZW4gc2xlZXAKIAkkcHNxbF9hLT5xdWVyeV9zYWZlKApAQCAtNjI4LDcgKzYyNyw3IEBA IHN1YiB0ZXN0X2Nsb3NlX2ZkCiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlteSAoJHJldCwgJG91 dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCXBzcWxfbGlrZSgKIAkJJGlvX21l dGhvZCwKQEAgLTY3OCw3ICs2NzcsNyBAQCBzdWIgdGVzdF9pbmplY3QKIAlteSAkbm9kZSA9 IHNoaWZ0OwogCW15ICgkcmV0LCAkb3V0cHV0KTsKIAotCW15ICRwc3FsID0gJG5vZGUtPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRw c3FsID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwog CiAJIyBpbmplY3RlZCB3aGF0IHdlJ2QgZXhwZWN0CiAJJHBzcWwtPnF1ZXJ5X3NhZmUocXEo U0VMRUNUIGlual9pb19zaG9ydF9yZWFkX2F0dGFjaCg4MTkyKTspKTsKQEAgLTgxMiw3ICs4 MTEsNyBAQCBzdWIgdGVzdF9pbmplY3Rfd29ya2VyCiAJbXkgJG5vZGUgPSBzaGlmdDsKIAlt eSAoJHJldCwgJG91dHB1dCk7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3Bz cWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCSMgdHJpZ2dl ciBhIGZhaWx1cmUgdG8gcmVvcGVuLCBzaG91bGQgZXJyb3Igb3V0LCBidXQgc2hvdWxkIHJl Y292ZXIKIAkkcHNxbC0+cXVlcnlfc2FmZSgKQEAgLTg0OSw3ICs4NDgsNyBAQCBzdWIgdGVz dF9pbnZhbGlkYXRlCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hp ZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywg b25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCWZvcmVhY2ggbXkgJHBlcnNpc3RlbmN5 IChxdyhub3JtYWwgdW5sb2dnZWQgdGVtcG9yYXJ5KSkKIAl7CkBAIC05MDcsOCArOTA2LDgg QEAgc3ViIHRlc3RfemVybwogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9 IHNoaWZ0OwogCi0JbXkgJHBzcWxfYSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQlteSAkcHNxbF9iID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3Fs X2EgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisJ bXkgJHBzcWxfYiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRu b2RlKTsKIAogCWZvcmVhY2ggbXkgJHBlcnNpc3RlbmN5IChxdyhub3JtYWwgdGVtcG9yYXJ5 KSkKIAl7CkBAIC05MzMsNyArOTMyLDcgQEAgU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3Ri bF96ZXJvJywgMCwgY29ycnVwdF9oZWFkZXI9PnRydWUpOwogCQkJcXEoCiBTRUxFQ1QgcmVh ZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwgemVyb19vbl9lcnJvcj0+ZmFsc2UpKSwK IAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFsaWQg cGFnZSBpbiBibG9jayAwIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLworCQkJcXIvXig/ OnBzcWw6PHN0ZGluPjpcZCs6ICk/RVJST1I6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMCBv ZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qJC8KIAkJKTsKIAogCQkjIENoZWNrIHRoYXQgcGFn ZSB2YWxpZGl0eSBlcnJvcnMgYXJlIHplcm9lZApAQCAtOTQ0LDcgKzk0Myw3IEBAIFNFTEVD VCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3plcm8nLCAwLCB6ZXJvX29uX2Vycm9yPT5mYWxz ZSkpLAogCQkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJvJywgMCwg emVyb19vbl9lcnJvcj0+dHJ1ZSkpLAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6PHN0ZGlu PjpcZCs6IFdBUk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMCBvZiByZWxhdGlvbiAi YmFzZVwvLipcLy4qIjsgemVyb2luZyBvdXQgcGFnZSQvCisJCQlxci9eKD86cHNxbDo8c3Rk aW4+OlxkKzogKT9XQVJOSU5HOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDAgb2YgcmVsYXRp b24gImJhc2VcLy4qXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2UkLwogCQkpOwogCiAJCSMgQW5k IHRoYXQgb25jZSB0aGUgY29ycnVwdGlvbiBpcyBmaXhlZCwgd2UgY2FuIHJlYWQgYWdhaW4K QEAgLTk1Miw3ICs5NTEsNyBAQCBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF96ZXJv JywgMCwgemVyb19vbl9lcnJvcj0+dHJ1ZSkpLAogCQkJcXEoCiBTRUxFQ1QgbW9kaWZ5X3Jl bF9ibG9jaygndGJsX3plcm8nLCAwLCB6ZXJvPT50cnVlKTsKICkpOwotCQkkcHNxbF9hLT57 c3RkZXJyfSA9ICcnOworCQkkcHNxbF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCQlwc3FsX2xp a2UoCiAJCQkkaW9fbWV0aG9kLApAQCAtOTc1LDcgKzk3NCw3IEBAIFNFTEVDVCBtb2RpZnlf cmVsX2Jsb2NrKCd0YmxfemVybycsIDMsIGNvcnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJCSIk cGVyc2lzdGVuY3k6IHRlc3QgemVyb2luZyBvZiBpbnZhbGlkIGJsb2NrIDMiLAogCQkJcXEo U0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVybycsIDMsIHplcm9fb25fZXJyb3I9 PnRydWUpOyksCiAJCQlxci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklO RzogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLioi OyB6ZXJvaW5nIG91dCBwYWdlJC8KKwkJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dB Uk5JTkc6ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiYmFzZVwvLipc Ly4qIjsgemVyb2luZyBvdXQgcGFnZSQvCiAJCSk7CiAKIApAQCAtOTkyLDcgKzk5MSw3IEBA IFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfemVybycsIDMsIGNvcnJ1cHRfaGVhZGVy PT50cnVlKTsKIAkJCSIkcGVyc2lzdGVuY3k6IHRlc3QgcmVhZGluZyBvZiBpbnZhbGlkIGJs b2NrIDIsMyBpbiBsYXJnZXIgcmVhZCIsCiAJCQlxcShTRUxFQ1QgcmVhZF9yZWxfYmxvY2tf bGwoJ3RibF96ZXJvJywgMSwgbmJsb2Nrcz0+NCwgemVyb19vbl9lcnJvcj0+ZmFsc2UpKSwK IAkJCXFyL14kLywKLQkJCXFyL15wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIDIgaW52YWxp ZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5E RVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlte XG5dKyQvCisJCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxp ZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5E RVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlte XG5dKyQvCiAJCSk7CiAKIAkJIyBUaGVuIHRlc3QgemVyb2luZyB2aWEgWkVST19PTl9FUlJP UiBmbGFnCkBAIC0xMDAyLDcgKzEwMDEsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygn dGJsX3plcm8nLCAzLCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7CiAJCQkiJHBlcnNpc3RlbmN5 OiB0ZXN0IHplcm9pbmcgb2YgaW52YWxpZCBibG9jayAyLDMgaW4gbGFyZ2VyIHJlYWQsIFpF Uk9fT05fRVJST1IiLAogCQkJcXEoU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfemVy bycsIDEsIG5ibG9ja3M9PjQsIHplcm9fb25fZXJyb3I9PnRydWUpKSwKIAkJCXFyL14kLywK LQkJCXFyL15wc3FsOjxzdGRpbj46XGQrOiBXQVJOSU5HOiAgemVyb2luZyBvdXQgMiBpbnZh bGlkIHBhZ2VzIGFtb25nIGJsb2NrcyAxLi40IG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLipc bkRFVEFJTDogIEJsb2NrIDIgaGVsZCB0aGUgZmlyc3QgemVyb2VkIHBhZ2VcLlxuSElOVDpb XlxuXSskLworCQkJcXIvXig/OnBzcWw6PHN0ZGluPjpcZCs6ICk/V0FSTklORzogIHplcm9p bmcgb3V0IDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9ja3MgMS4uNCBvZiByZWxhdGlvbiAi YmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IHplcm9lZCBw YWdlXC5cbkhJTlQ6W15cbl0rJC8KIAkJKTsKIAogCQkjIFRoZW4gdGVzdCB6ZXJvaW5nIHZp YSB6ZXJvX2RhbWFnZWRfcGFnZXMKQEAgLTEwMTcsNyArMTAxNiw3IEBAIFNFTEVDVCByZWFk X3JlbF9ibG9ja19sbCgndGJsX3plcm8nLCAxLCBuYmxvY2tzPT40LCB6ZXJvX29uX2Vycm9y PT5mYWxzZSkKIENPTU1JVDsKICksCiAJCQlxci9eJC8sCi0JCQlxci9ecHNxbDo8c3RkaW4+ OlxkKzogV0FSTklORzogIHplcm9pbmcgb3V0IDIgaW52YWxpZCBwYWdlcyBhbW9uZyBibG9j a3MgMS4uNCBvZiByZWxhdGlvbiAiYmFzZVwvLipcLy4qXG5ERVRBSUw6ICBCbG9jayAyIGhl bGQgdGhlIGZpcnN0IHplcm9lZCBwYWdlXC5cbkhJTlQ6W15cbl0rJC8KKwkJCXFyL14oPzpw c3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICB6ZXJvaW5nIG91dCAyIGludmFsaWQgcGFn ZXMgYW1vbmcgYmxvY2tzIDEuLjQgb2YgcmVsYXRpb24gImJhc2VcLy4qXC8uKlxuREVUQUlM OiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCB6ZXJvZWQgcGFnZVwuXG5ISU5UOlteXG5dKyQv CiAJCSk7CiAKIAkJJHBzcWxfYS0+cXVlcnlfc2FmZShxcShDT01NSVQpKTsKQEAgLTEwMzAs NyArMTAyOSw3IEBAIFNFTEVDVCBpbnZhbGlkYXRlX3JlbF9ibG9jaygndGJsX3plcm8nLCBn LmkpCiBGUk9NIGdlbmVyYXRlX3NlcmllcygwLCAxNSkgZyhpKTsKIFNFTEVDVCBtb2RpZnlf cmVsX2Jsb2NrKCd0YmxfemVybycsIDMsIHplcm89PnRydWUpOwogKSk7Ci0JCSRwc3FsX2Et PntzdGRlcnJ9ID0gJyc7CisJCSRwc3FsX2EtPmNsZWFyX3N0ZGVycigpOwogCiAJCXBzcWxf bGlrZSgKIAkJCSRpb19tZXRob2QsCkBAIC0xMDM5LDcgKzEwMzgsNyBAQCBTRUxFQ1QgbW9k aWZ5X3JlbF9ibG9jaygndGJsX3plcm8nLCAzLCB6ZXJvPT50cnVlKTsKIAkJCXFxKAogU0VM RUNUIGNvdW50KCopIEZST00gdGJsX3plcm8pLAogCQkJcXIvXiQvLAotCQkJcXIvXnBzcWw6 PHN0ZGluPjpcZCs6IEVSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJsb2NrIDIgb2YgcmVsYXRp b24gImJhc2VcLy4qXC8uKiQvCisJCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJP UjogIGludmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiok LwogCQkpOwogCiAJCSMgVmVyaWZ5IHRoYXQgYnVmbWdyLmMgSU8gemVyb2VzIG91dCBwYWdl cyB3aXRoIHBhZ2UgdmFsaWRpdHkgZXJyb3JzCkBAIC0xMDU0LDcgKzEwNTMsNyBAQCBTRUxF Q1QgY291bnQoKikgRlJPTSB0YmxfemVybzsKIENPTU1JVDsKICksCiAJCQlxci9eXGQrJC8s Ci0JCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIGludmFsaWQgcGFnZSBpbiBi bG9jayAyIG9mIHJlbGF0aW9uICJiYXNlXC8uKlwvLiokLworCQkJcXIvXig/OnBzcWw6PHN0 ZGluPjpcZCs6ICk/V0FSTklORzogIGludmFsaWQgcGFnZSBpbiBibG9jayAyIG9mIHJlbGF0 aW9uICJiYXNlXC8uKlwvLiokLwogCQkpOwogCiAJCSMgQ2hlY2sgdGhhdCB3YXJuaW5ncy9l cnJvcnMgYWJvdXQgcGFnZSB2YWxpZGl0eSBpbiBhbiBJTyBzdGFydGVkIGJ5CkBAIC0xMDkz LDcgKzEwOTIsNyBAQCBEUk9QIFRBQkxFIHRibF96ZXJvOwogKSk7CiAJfQogCi0JJHBzcWxf YS0+e3N0ZGVycn0gPSAnJzsKKwkkcHNxbF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRwc3Fs X2EtPnF1aXQoKTsKIAkkcHNxbF9iLT5xdWl0KCk7CkBAIC0xMTA1LDE5ICsxMTA0LDE3IEBA IHN1YiB0ZXN0X2NoZWNrc3VtCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2Rl ID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9hID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsX2EgPSBQb3N0Z3JlU1FM OjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKLQkkcHNxbF9hLT5xdWVy eV9zYWZlKAotCQlxcSgKLUNSRUFURSBUQUJMRSB0Ymxfbm9ybWFsKGlkIGludCkgV0lUSCAo QVVUT1ZBQ1VVTV9FTkFCTEVEID0gZmFsc2UpOwotSU5TRVJUIElOVE8gdGJsX25vcm1hbCBT RUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApOwotU0VMRUNUIG1vZGlmeV9yZWxfYmxv Y2soJ3RibF9ub3JtYWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKTsKLQotQ1JFQVRF IFRFTVBPUkFSWSBUQUJMRSB0YmxfdGVtcChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1fRU5B QkxFRCA9IGZhbHNlKTsKLUlOU0VSVCBJTlRPIHRibF90ZW1wIFNFTEVDVCBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCk7Ci1TRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygndGJsX3RlbXAnLCAz LCBjb3JydXB0X2NoZWNrc3VtPT50cnVlKTsKLVNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0 YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hlY2tzdW09PnRydWUpOwotKSk7CisJIyBTcGxpdCBt dWx0aS1zdGF0ZW1lbnQgcXVlcnkgaW50byBzZXBhcmF0ZSBjYWxscyB0byBtYXRjaCBwc3Fs IGJlaGF2aW9yCisJIyB3aGVyZSBlcnJvcnMgaW4gb25lIHN0YXRlbWVudCBkb24ndCBwcmV2 ZW50IHN1YnNlcXVlbnQgc3RhdGVtZW50cworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JF QVRFIFRBQkxFIHRibF9ub3JtYWwoaWQgaW50KSBXSVRIIChBVVRPVkFDVVVNX0VOQUJMRUQg PSBmYWxzZSkpKTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFxKElOU0VSVCBJTlRPIHRibF9u b3JtYWwgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSkpOworCSRwc3FsX2EtPnF1 ZXJ5X3NhZmUocXEoU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9ub3JtYWwnLCAzLCBj b3JydXB0X2NoZWNrc3VtPT50cnVlKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoQ1JF QVRFIFRFTVBPUkFSWSBUQUJMRSB0YmxfdGVtcChpZCBpbnQpIFdJVEggKEFVVE9WQUNVVU1f RU5BQkxFRCA9IGZhbHNlKSkpOworCSRwc3FsX2EtPnF1ZXJ5X3NhZmUocXEoSU5TRVJUIElO VE8gdGJsX3RlbXAgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSkpOworCSRwc3Fs X2EtPnF1ZXJ5X3NhZmUocXEoU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF90ZW1wJywg MywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSkpKTsKKwkkcHNxbF9hLT5xdWVyeV9zYWZlKHFx KFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfdGVtcCcsIDQsIGNvcnJ1cHRfY2hlY2tz dW09PnRydWUpKSk7CiAKIAkjIFRvIGJlIGFibGUgdG8gdGVzdCBjaGVja3N1bSBmYWlsdXJl cyBvbiBzaGFyZWQgcmVscyB3ZSBuZWVkIGEgc2hhcmVkIHJlbAogCSMgd2l0aCBpbnZhbGlk IHBhZ2VzIC0gd2hpY2ggaXMgYSBiaXQgc2NhcnkuIHBnX3Noc2VjbGFiZWwgc2VlbXMgbGlr ZSBhCkBAIC0xMTQwLDcgKzExMzcsNyBAQCBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygncGdf c2hzZWNsYWJlbCcsIDMsIGNvcnJ1cHRfY2hlY2tzdW09PnRydWUpOwogCQlxcSgKIFNFTEVD VCByZWFkX3JlbF9ibG9ja19sbCgndGJsX25vcm1hbCcsIDMsIG5ibG9ja3M9PjEsIHplcm9f b25fZXJyb3I9PmZhbHNlKTspLAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRpbj46XGQr OiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC9c ZCtcL1xkKyIkLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFs aWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7 CiAKIAlteSAoJGNzX2NvdW50X2FmdGVyLCAkY3NfdHNfYWZ0ZXIpID0KQEAgLTExNjIsNyAr MTE1OSw3IEBAIFNFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgndGJsX25vcm1hbCcsIDMsIG5i bG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAogCQlxcSgKIFNFTEVDVCByZWFk X3JlbF9ibG9ja19sbCgndGJsX3RlbXAnLCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9y PT5mYWxzZSk7KSwKIAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6 ICBpbnZhbGlkIHBhZ2UgaW4gYmxvY2sgNCBvZiByZWxhdGlvbiAiYmFzZVwvXGQrXC90XGQr X1xkKyIkLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQg cGFnZSBpbiBibG9jayA0IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL3RcZCtfXGQrIiQvCiAJ KTsKIAogCSgkY3NfY291bnRfYWZ0ZXIsICRjc190c19hZnRlcikgPSBjaGVja3N1bV9mYWls dXJlcygkcHNxbF9hLCAncG9zdGdyZXMnKTsKQEAgLTExODMsNyArMTE4MCw3IEBAIFNFTEVD VCByZWFkX3JlbF9ibG9ja19sbCgndGJsX3RlbXAnLCA0LCBuYmxvY2tzPT4yLCB6ZXJvX29u X2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3Bn X3Noc2VjbGFiZWwnLCAyLCBuYmxvY2tzPT4yLCB6ZXJvX29uX2Vycm9yPT5mYWxzZSk7KSwK IAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogRVJST1I6ICAyIGludmFsaWQg cGFnZXMgYW1vbmcgYmxvY2tzIDIuLjMgb2YgcmVsYXRpb24gImdsb2JhbFwvXGQrIlxuREVU QUlMOiAgQmxvY2sgMiBoZWxkIHRoZSBmaXJzdCBpbnZhbGlkIHBhZ2VcLlxuSElOVDpbXlxu XSskLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIDIgaW52YWxpZCBw YWdlcyBhbW9uZyBibG9ja3MgMi4uMyBvZiByZWxhdGlvbiAiZ2xvYmFsXC9cZCsiXG5ERVRB SUw6ICBCbG9jayAyIGhlbGQgdGhlIGZpcnN0IGludmFsaWQgcGFnZVwuXG5ISU5UOlteXG5d KyQvCiAJKTsKIAogCSgkY3NfY291bnRfYWZ0ZXIsICRjc190c19hZnRlcikgPSBjaGVja3N1 bV9mYWlsdXJlcygkcHNxbF9hKTsKQEAgLTEyMDEsNyArMTE5OCw3IEBAIFNFTEVDVCByZWFk X3JlbF9ibG9ja19sbCgncGdfc2hzZWNsYWJlbCcsIDIsIG5ibG9ja3M9PjIsIHplcm9fb25f ZXJyb3I9PmZhbHNlKTspCiBTRUxFQ1QgbW9kaWZ5X3JlbF9ibG9jaygncGdfc2hzZWNsYWJl bCcsIDEsIHplcm89PnRydWUpOwogRFJPUCBUQUJMRSB0Ymxfbm9ybWFsOwogKSk7Ci0JJHBz cWxfYS0+e3N0ZGVycn0gPSAnJzsKKwkkcHNxbF9hLT5jbGVhcl9zdGRlcnIoKTsKIAogCSRw c3FsX2EtPnF1aXQoKTsKIH0KQEAgLTEyMTQsNyArMTIxMSw3IEBAIHN1YiB0ZXN0X2NoZWNr c3VtX2NyZWF0ZWRiCiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2RlID0gc2hp ZnQ7CiAKLQlteSAkcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywg b25fZXJyb3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNl c3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJJ0NSRUFURSBEQVRBQkFTRSByZWdyZXNzaW9uX2NyZWF0ZWRiX3NvdXJjZScp OwpAQCAtMTI0OCw3ICsxMjQ1LDcgQEAgU1RSQVRFR1kgd2FsX2xvZzsKIAkJImNyZWF0ZSBk YXRhYmFzZSB3LyB3YWwgc3RyYXRlZ3ksIGludmFsaWQgc291cmNlIiwKIAkJJGNyZWF0ZWRi X3NxbCwKIAkJcXIvXiQvLAotCQlxci9wc3FsOjxzdGRpbj46XGQrOiBFUlJPUjogIGludmFs aWQgcGFnZSBpbiBibG9jayAxIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLworCQlx ci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9j ayAxIG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIkLwogCSk7CiAJbXkgKCRjc19jb3Vu dF9hZnRlciwgJGNzX3RzX2FmdGVyKSA9CiAJICBjaGVja3N1bV9mYWlsdXJlcygkcHNxbCwg J3JlZ3Jlc3Npb25fY3JlYXRlZGJfc291cmNlJyk7CkBAIC0xMjc3LDcgKzEyNzQsNyBAQCBz dWIgdGVzdF9pZ25vcmVfY2hlY2tzdW0KIAlteSAkaW9fbWV0aG9kID0gc2hpZnQ7CiAJbXkg JG5vZGUgPSBzaGlmdDsKIAotCW15ICRwc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworCW15ICRwc3FsID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAJIyBUZXN0IHNldHVw CiAJJHBzcWwtPnF1ZXJ5X3NhZmUoCkBAIC0xMzQyLDcgKzEzMzksNyBAQCBTRUxFQ1QgbW9k aWZ5X3JlbF9ibG9jaygndGJsX2NzX2ZhaWwnLCA0LCBjb3JydXB0X2hlYWRlcj0+dHJ1ZSk7 CiAJCXFxKAogU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDMsIG5i bG9ja3M9PjEsIHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAogCQlxci9eJC8sCi0JCXFyL15w c3FsOjxzdGRpbj46XGQrOiBXQVJOSU5HOiAgaWdub3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBp biBibG9jayAzLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9XQVJOSU5HOiAgaWdu b3JpbmcgY2hlY2tzdW0gZmFpbHVyZSBpbiBibG9jayAzLwogCSk7CiAKIAkjIENoZWNrIHRo YXQgdGhlIGxvZyBjb250YWlucyBhIExPRyBtZXNzYWdlIGFib3V0IHRoZSBmYWlsdXJlCkBA IC0xMzU3LDcgKzEzNTQsNyBAQCBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19m YWlsJywgMywgbmJsb2Nrcz0+MSwgemVyb19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFxKAog U0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0YmxfY3NfZmFpbCcsIDIsIG5ibG9ja3M9PjMs IHplcm9fb25fZXJyb3I9PmZhbHNlKTspLAogCQlxci9eJC8sCi0JCXFyL15wc3FsOjxzdGRp bj46XGQrOiBFUlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayA0IG9mIHJlbGF0aW9uICJi YXNlXC9cZCtcL1xkKyIkLworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9FUlJPUjog IGludmFsaWQgcGFnZSBpbiBibG9jayA0IG9mIHJlbGF0aW9uICJiYXNlXC9cZCtcL1xkKyIk LwogCSk7CiAKIAkjIFRlc3QgbXVsdGktYmxvY2sgcmVhZCB3aXRoIGRpZmZlcmVudCBwcm9i bGVtcyBpbiBkaWZmZXJlbnQgYmxvY2tzCkBAIC0xMzY5LDcgKzEzNjYsNyBAQCBTRUxFQ1Qg bW9kaWZ5X3JlbF9ibG9jaygndGJsX2NzX2ZhaWwnLCAzLCBjb3JydXB0X2NoZWNrc3VtPT50 cnVlLCBjb3JydXB0X2hlYWRlcgogU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19m YWlsJywgNCwgY29ycnVwdF9oZWFkZXI9PnRydWUpOwogU0VMRUNUIG1vZGlmeV9yZWxfYmxv Y2soJ3RibF9jc19mYWlsJywgNSwgY29ycnVwdF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBz cWwtPntzdGRlcnJ9ID0gJyc7CisJJHBzcWwtPmNsZWFyX3N0ZGVycigpOwogCiAJJGxvZ19s b2NhdGlvbiA9IC1zICRub2RlLT5sb2dmaWxlOwogCXBzcWxfbGlrZSgKQEAgLTEzNzksNyAr MTM3Niw3IEBAIFNFTEVDVCBtb2RpZnlfcmVsX2Jsb2NrKCd0YmxfY3NfZmFpbCcsIDUsIGNv cnJ1cHRfaGVhZGVyPT50cnVlKTsKIAkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwo J3RibF9jc19mYWlsJywgMSwgbmJsb2Nrcz0+NSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwK IAkJcXIvXiQvLAotCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIHplcm9pbmcg MyBwYWdlXChzXCkgYW5kIGlnbm9yaW5nIDIgY2hlY2tzdW0gZmFpbHVyZVwoc1wpIGFtb25n IGJsb2NrcyAxLi41IG9mIHJlbGF0aW9uICIvCisJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQr OiApP1dBUk5JTkc6ICB6ZXJvaW5nIDMgcGFnZVwoc1wpIGFuZCBpZ25vcmluZyAyIGNoZWNr c3VtIGZhaWx1cmVcKHNcKSBhbW9uZyBibG9ja3MgMS4uNSBvZiByZWxhdGlvbiAiLwogCSk7 CiAKIApAQCAtMTQxMiw3ICsxNDA5LDcgQEAgU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xsKCd0 YmxfY3NfZmFpbCcsIDEsIG5ibG9ja3M9PjUsIHplcm9fb25fZXJyb3I9PnRydWUpOyksCiAJ CXFxKAogU0VMRUNUIG1vZGlmeV9yZWxfYmxvY2soJ3RibF9jc19mYWlsJywgMywgY29ycnVw dF9jaGVja3N1bT0+dHJ1ZSwgY29ycnVwdF9oZWFkZXI9PnRydWUpOwogKSk7Ci0JJHBzcWwt PntzdGRlcnJ9ID0gJyc7CisJJHBzcWwtPmNsZWFyX3N0ZGVycigpOwogCiAJcHNxbF9saWtl KAogCQkkaW9fbWV0aG9kLApAQCAtMTQyMSw3ICsxNDE4LDcgQEAgU0VMRUNUIG1vZGlmeV9y ZWxfYmxvY2soJ3RibF9jc19mYWlsJywgMywgY29ycnVwdF9jaGVja3N1bT0+dHJ1ZSwgY29y cnVwdF9oZWFkZXIKIAkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19m YWlsJywgMywgbmJsb2Nrcz0+MSwgemVyb19vbl9lcnJvcj0+ZmFsc2UpOyksCiAJCXFyL14k LywKLQkJcXIvXnBzcWw6PHN0ZGluPjpcZCs6IEVSUk9SOiAgaW52YWxpZCBwYWdlIGluIGJs b2NrIDMgb2YgcmVsYXRpb24gIi8pOworCQlxci9eKD86cHNxbDo8c3RkaW4+OlxkKzogKT9F UlJPUjogIGludmFsaWQgcGFnZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICIvKTsKIAogCXBz cWxfbGlrZSgKIAkJJGlvX21ldGhvZCwKQEAgLTE0MzAsNyArMTQyNyw3IEBAIFNFTEVDVCBy ZWFkX3JlbF9ibG9ja19sbCgndGJsX2NzX2ZhaWwnLCAzLCBuYmxvY2tzPT4xLCB6ZXJvX29u X2Vycm9yPT5mYWxzZSk7KSwKIAkJcXEoCiBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3Ri bF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwgemVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkJ cXIvXiQvLAotCQlxci9ecHNxbDo8c3RkaW4+OlxkKzogV0FSTklORzogIGludmFsaWQgcGFn ZSBpbiBibG9jayAzIG9mIHJlbGF0aW9uICJiYXNlXC8uKiI7IHplcm9pbmcgb3V0IHBhZ2Uv CisJCXFyL14oPzpwc3FsOjxzdGRpbj46XGQrOiApP1dBUk5JTkc6ICBpbnZhbGlkIHBhZ2Ug aW4gYmxvY2sgMyBvZiByZWxhdGlvbiAiYmFzZVwvLioiOyB6ZXJvaW5nIG91dCBwYWdlLwog CSk7CiAKIApAQCAtMTQ0Niw4ICsxNDQzLDggQEAgc3ViIHRlc3RfcmVhZF9idWZmZXJzCiAJ bXkgKCRyZXQsICRvdXRwdXQpOwogCW15ICR0YWJsZTsKIAotCW15ICRwc3FsX2EgPSAkbm9k ZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0J bXkgJHBzcWxfYiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJy b3Jfc3RvcCA9PiAwKTsKKwlteSAkcHNxbF9hID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOworCW15ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkkcHNxbF9hLT5xdWVyeV9zYWZl KAogCQlxcSgKQEAgLTE2MzEsNyArMTYyOCw3IEBAIElOU0VSVCBJTlRPIHRtcF9vayBTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApOwogCQkkcHNxbF9hLT5xdWVyeV9zYWZlKHFx fFNFTEVDVCBldmljdF9yZWwoJyR0YWJsZScpfCk7CiAKIAkJbXkgJGJ1Zl9pZCA9Ci0JCSAg JHBzcWxfYi0+cXVlcnlfc2FmZShxcXxTRUxFQ1QgYnVmZmVyX2NyZWF0ZV90b3koJyR0YWJs ZScsIDMpfCk7CisJCSAgJHBzcWxfYi0+cXVlcnlfb25ldmFsKHFxfFNFTEVDVCBidWZmZXJf Y3JlYXRlX3RveSgnJHRhYmxlJywgMyl8KTsKIAkJJHBzcWxfYi0+cXVlcnlfc2FmZSgKIAkJ CXFxfFNFTEVDVCBidWZmZXJfY2FsbF9zdGFydF9pbygkYnVmX2lkLCBmb3JfaW5wdXQ9PnRy dWUsIHdhaXQ9PnRydWUpfAogCQkpOwpAQCAtMTY0OCwxNiArMTY0NSwxNiBAQCBJTlNFUlQg SU5UTyB0bXBfb2sgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKTsKIAkJCXFxfFNF TEVDVCBidWZmZXJfY2FsbF90ZXJtaW5hdGVfaW8oJGJ1Zl9pZCwgZm9yX2lucHV0PT50cnVl LCBzdWNjZWVkPT5mYWxzZSwgaW9fZXJyb3I9PmZhbHNlLCByZWxlYXNlX2Fpbz0+ZmFsc2Up fAogCQkpOwogCQkjIEJlY2F1c2Ugbm8gSU8gd3JlZiB3YXMgYXNzaWduZWQsIGJsb2NrIDMg c2hvdWxkIG5vdCByZXBvcnQgZm9yZWlnbiBJTwotCQlwdW1wX3VudGlsKCRwc3FsX2EtPnty dW59LCAkcHNxbF9hLT57dGltZW91dH0sIFwkcHNxbF9hLT57c3Rkb3V0fSwKLQkJCXFyLzBc fDFcfHRcfGZcfDJcbjJcfDNcfHRcfGZcfDMvKTsKLQkJb2soMSwKKwkJbGlrZSgKKwkJCSRw c3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRlcm4ocXIvMFx8MVx8dFx8Zlx8MlxuMlx8M1x8 dFx8Zlx8My8pLAorCQkJcXIvMFx8MVx8dFx8Zlx8MlxuMlx8M1x8dFx8Zlx8My8sCiAJCQki JGlvX21ldGhvZDogJHBlcnNpc3RlbmN5OiBJTyB3YXMgc3BsaXQgZHVlIHRvIGNvbmN1cnJl bnQgZmFpbGVkIElPIgogCQkpOwogCiAJCSMgU2FtZSBhcyBiZWZvcmUsIGV4Y2VwdCB0aGUg Y29uY3VycmVudCBJTyBzdWNjZWVkcyB0aGlzIHRpbWUKIAkJJHBzcWxfYS0+cXVlcnlfc2Fm ZShxcXxTRUxFQ1QgZXZpY3RfcmVsKCckdGFibGUnKXwpOwogCQkkYnVmX2lkID0KLQkJICAk cHNxbF9iLT5xdWVyeV9zYWZlKHFxfFNFTEVDVCBidWZmZXJfY3JlYXRlX3RveSgnJHRhYmxl JywgMyl8KTsKKwkJICAkcHNxbF9iLT5xdWVyeV9vbmV2YWwocXF8U0VMRUNUIGJ1ZmZlcl9j cmVhdGVfdG95KCckdGFibGUnLCAzKXwpOwogCQkkcHNxbF9iLT5xdWVyeV9zYWZlKAogCQkJ cXF8U0VMRUNUIGJ1ZmZlcl9jYWxsX3N0YXJ0X2lvKCRidWZfaWQsIGZvcl9pbnB1dD0+dHJ1 ZSwgd2FpdD0+dHJ1ZSl8CiAJCSk7CkBAIC0xNjc0LDkgKzE2NzEsMTAgQEAgSU5TRVJUIElO VE8gdG1wX29rIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCk7CiAJCQlxcXxTRUxF Q1QgYnVmZmVyX2NhbGxfdGVybWluYXRlX2lvKCRidWZfaWQsIGZvcl9pbnB1dD0+dHJ1ZSwg c3VjY2VlZD0+dHJ1ZSwgaW9fZXJyb3I9PmZhbHNlLCByZWxlYXNlX2Fpbz0+ZmFsc2UpfAog CQkpOwogCQkjIEJlY2F1c2Ugbm8gSU8gd3JlZiB3YXMgYXNzaWduZWQsIGJsb2NrIDMgc2hv dWxkIG5vdCByZXBvcnQgZm9yZWlnbiBJTwotCQlwdW1wX3VudGlsKCRwc3FsX2EtPntydW59 LCAkcHNxbF9hLT57dGltZW91dH0sIFwkcHNxbF9hLT57c3Rkb3V0fSwKLQkJCXFyLzBcfDFc fHRcfGZcfDJcbjJcfDNcfGZcfGZcfDFcbjNcfDRcfHRcfGZcfDIvKTsKLQkJb2soMSwKKwkJ bGlrZSgKKwkJCSRwc3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRlcm4oCisJCQkJcXIvMFx8 MVx8dFx8Zlx8MlxuMlx8M1x8Zlx8Zlx8MVxuM1x8NFx8dFx8Zlx8Mi8pLAorCQkJcXIvMFx8 MVx8dFx8Zlx8MlxuMlx8M1x8Zlx8Zlx8MVxuM1x8NFx8dFx8Zlx8Mi8sCiAJCQkiJGlvX21l dGhvZDogJHBlcnNpc3RlbmN5OiBJTyB3YXMgc3BsaXQgZHVlIHRvIGNvbmN1cnJlbnQgc3Vj Y2Vzc2Z1bCBJTyIKIAkJKTsKIAl9CkBAIC0xNjkyLDkgKzE2OTAsOSBAQCBzdWIgdGVzdF9y ZWFkX2J1ZmZlcnNfaW5qZWN0CiAJbXkgJGlvX21ldGhvZCA9IHNoaWZ0OwogCW15ICRub2Rl ID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9hID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotCW15ICRwc3FsX2IgPSAkbm9kZS0+YmFj a2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0JbXkgJHBz cWxfYyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3Rv cCA9PiAwKTsKKwlteSAkcHNxbF9hID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOworCW15ICRwc3FsX2IgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNz aW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CisJbXkgJHBzcWxfYyA9IFBvc3RncmVTUUw6OlRl c3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAogCW15ICRleHBlY3RlZDsKIApA QCAtMTc2MywxMiArMTc2MSwxMyBAQCBzdWIgdGVzdF9yZWFkX2J1ZmZlcnNfaW5qZWN0CiAJ CSMgcmV0dXJuIGZvciBzb21ldGhpbmcgd2l0aCBtaXNzZXMgaW4gc3luYyBtb2RlLgogCQkk ZXhwZWN0ZWQgPSBxci8wXHwxXHx0XHxmXHw0LzsKIAl9Ci0JcHVtcF91bnRpbCgkcHNxbF9h LT57cnVufSwgJHBzcWxfYS0+e3RpbWVvdXR9LCBcJHBzcWxfYS0+e3N0ZG91dH0sCi0JCSRl eHBlY3RlZCk7Ci0Jb2soMSwKKwlsaWtlKCRwc3FsX2EtPndhaXRfZm9yX2FzeW5jX3BhdHRl cm4oJGV4cGVjdGVkKSwgJGV4cGVjdGVkLAogCQkiJGlvX21ldGhvZDogJHBlcnNpc3RlbmN5 OiByZWFkIDEtMywgYmxvY2tlZCBvbiBpbi1wcm9ncmVzcyAxLCBzZWUgZXhwZWN0ZWQgcmVz dWx0IgogCSk7Ci0JJHBzcWxfYS0+e3N0ZG91dH0gPSAnJzsKKworCSMgQidzIGxvdy1sZXZl bCByZWFkIGhhcyBjb21wbGV0ZWQgbm93IHRoYXQgQyByZWxlYXNlZCBpdDsgZHJhaW4gaXRz CisJIyByZXN1bHQgYmVmb3JlIEIgaXMgcmV1c2VkIGJlbG93LgorCSRwc3FsX2ItPndhaXRf Zm9yX2NvbXBsZXRpb247CiAKIAogCSMjIwpAQCAtMTgyOSwxMiArMTgyOCwxMiBAQCByZWFk X2J1ZmZlcnMoJyR0YWJsZScsIDAsIDQpfCwKIAkJIyByZXR1cm4gZm9yIHNvbWV0aGluZyB3 aXRoIG1pc3NlcyBpbiBzeW5jIG1vZGUuCiAJCSRleHBlY3RlZCA9IHFyLzBcfDBcfHRcfGZc fDQvOwogCX0KLQlwdW1wX3VudGlsKCRwc3FsX2EtPntydW59LCAkcHNxbF9hLT57dGltZW91 dH0sIFwkcHNxbF9hLT57c3Rkb3V0fSwKLQkJJGV4cGVjdGVkKTsKLQlvaygxLAorCWxpa2Uo JHBzcWxfYS0+d2FpdF9mb3JfYXN5bmNfcGF0dGVybigkZXhwZWN0ZWQpLCAkZXhwZWN0ZWQs CiAJCSIkaW9fbWV0aG9kOiAkcGVyc2lzdGVuY3k6IHJlYWQgMC0zLCBibG9ja2VkIG9uIGlu LXByb2dyZXNzIDIrMywgc2VlIGV4cGVjdGVkIHJlc3VsdCIKIAkpOwotCSRwc3FsX2EtPntz dGRvdXR9ID0gJyc7CisKKwkjIERyYWluIEIncyBub3ctY29tcGxldGVkIGxvdy1sZXZlbCBy ZWFkIGJlZm9yZSBjbG9zaW5nLgorCSRwc3FsX2ItPndhaXRfZm9yX2NvbXBsZXRpb247CiAK IAogCSRwc3FsX2EtPnF1aXQoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9haW8vdC8wMDRfcmVhZF9zdHJlYW0ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlv L3QvMDA0X3JlYWRfc3RyZWFtLnBsCmluZGV4IDMyMzExYzA3YWMwLi43ODJiNjJjNDUyZiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90LzAwNF9yZWFkX3N0cmVh bS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDA0X3JlYWRfc3RyZWFt LnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGVzdDo6TW9yZTsK IAogdXNlIEZpbmRCaW47CkBAIC02MCw3ICs2MSw3IEBAIHN1YiB0ZXN0X3JlcGVhdGVkX2Js b2NrcwogCW15ICRpb19tZXRob2QgPSBzaGlmdDsKIAlteSAkbm9kZSA9IHNoaWZ0OwogCi0J bXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9y X3N0b3AgPT4gMCk7CisJbXkgJHBzcWwgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5u ZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkjIFByZXZlbnRpbmcgbGFyZ2VyIHJlYWRzIG1ha2Vz IHRlc3RpbmcgZWFzaWVyCiAJJHBzcWwtPnF1ZXJ5X3NhZmUocXEvU0VUIGlvX2NvbWJpbmVf bGltaXQgPSAxLyk7CkBAIC0xMTEsNyArMTEyLDcgQEAgc3ViIHRlc3RfcmVwZWF0ZWRfYmxv Y2tzCiAJCSAgIEFSUkFZWzAsIDIsIDIsIDQsIDRdKTsvKTsKIAlvaygxLCAiJGlvX21ldGhv ZDogdGVtcCBzdHJlYW0gaGl0dGluZyB0aGUgc2FtZSBibG9jayByZXBlYXRlZGx5Iik7CiAK LQkkcHNxbC0+cXVpdCgpOworCSRwc3FsLT5jbG9zZSgpOwogfQogCiAKQEAgLTEyMCwxMCAr MTIxLDEwIEBAIHN1YiB0ZXN0X2luamVjdF9mb3JlaWduCiAJbXkgJGlvX21ldGhvZCA9IHNo aWZ0OwogCW15ICRub2RlID0gc2hpZnQ7CiAKLQlteSAkcHNxbF9hID0gJG5vZGUtPmJhY2tn cm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotCW15ICRwc3Fs X2IgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIG9uX2Vycm9yX3N0b3Ag PT4gMCk7CisJbXkgJHBzcWxfYSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhu b2RlID0+ICRub2RlKTsKKwlteSAkcHNxbF9iID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lv bi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0JbXkgJHBpZF9hID0gJHBzcWxfYS0+cXVlcnlf c2FmZShxcS9TRUxFQ1QgcGdfYmFja2VuZF9waWQoKTsvKTsKKwlteSAkcGlkX2EgPSAkcHNx bF9hLT5xdWVyeV9vbmV2YWwocXEvU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCk7Lyk7CiAKIAog CSMjIwpAQCAtMTM2LDkgKzEzNyw4IEBAIHN1YiB0ZXN0X2luamVjdF9mb3JlaWduCiAJCXFx L1NFTEVDVCBpbmpfaW9fY29tcGxldGlvbl93YWl0KHBpZD0+cGdfYmFja2VuZF9waWQoKSwK IAkJICAgcmVsZmlsZW5vZGU9PnBnX3JlbGF0aW9uX2ZpbGVub2RlKCdsYXJnZWlzaCcpKTsv KTsKIAotCSRwc3FsX2ItPntzdGRpbn0gLj0gcXEvU0VMRUNUIHJlYWRfcmVsX2Jsb2NrX2xs KCdsYXJnZWlzaCcsCi0JCWJsb2Nrbm89PjUsIG5ibG9ja3M9PjEpO1xuLzsKLQkkcHNxbF9i LT57cnVufS0+cHVtcF9uYigpOworCSRwc3FsX2ItPmRvX2FzeW5jKHFxL1NFTEVDVCByZWFk X3JlbF9ibG9ja19sbCgnbGFyZ2Vpc2gnLAorCQlibG9ja25vPT41LCBuYmxvY2tzPT4xKTsv KTsKIAogCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAogCQkncG9zdGdyZXMnLCBxcS9TRUxF Q1Qgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkKQEAgLTE0Nyw5ICsxNDcsOCBA QCBzdWIgdGVzdF9pbmplY3RfZm9yZWlnbgogCiAJIyBCbG9jayA1IGlzIHVuZGVyZ29pbmcg SU8gaW4gc2Vzc2lvbiBiLCBzbyBzZXNzaW9uIGEgd2lsbCBtb3ZlIG9uIHRvIHN0YXJ0CiAJ IyBhIG5ldyBJTyBmb3IgYmxvY2sgNy4KLQkkcHNxbF9hLT57c3RkaW59IC49IHFxL1NFTEVD VCBhcnJheV9hZ2coYmxvY2tudW0pIEZST00KLQkJcmVhZF9zdHJlYW1fZm9yX2Jsb2Nrcygn bGFyZ2Vpc2gnLCBBUlJBWVswLCAyLCA1LCA3XSk7XG4vOwotCSRwc3FsX2EtPntydW59LT5w dW1wX25iKCk7CisJJHBzcWxfYS0+ZG9fYXN5bmMocXEvU0VMRUNUIGFycmF5X2FnZyhibG9j a251bSkgRlJPTQorCQlyZWFkX3N0cmVhbV9mb3JfYmxvY2tzKCdsYXJnZWlzaCcsIEFSUkFZ WzAsIDIsIDUsIDddKTsvKTsKIAogCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jl cycsCiAJCXFxKFNFTEVDVCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSBwaWQgPSAkcGlkX2EpLApAQCAtMTU3LDEwICsxNTYsMTAgQEAgc3ViIHRlc3RfaW5qZWN0 X2ZvcmVpZ24KIAogCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEvU0VMRUNUIGlu al9pb19jb21wbGV0aW9uX2NvbnRpbnVlKCkvKTsKIAotCXB1bXBfdW50aWwoCi0JCSRwc3Fs X2EtPntydW59LCAkcHNxbF9hLT57dGltZW91dH0sCi0JCVwkcHNxbF9hLT57c3Rkb3V0fSwg cXIvXHswLDIsNSw3XH0vKTsKLQkkcHNxbF9hLT57c3Rkb3V0fSA9ICcnOworCSRwc3FsX2Et PndhaXRfZm9yX2FzeW5jX3BhdHRlcm4ocXIvXHswLDIsNSw3XH0vKTsKKworCSMgRHJhaW4g c2Vzc2lvbiBiJ3Mgbm93LWNvbXBsZXRlZCBsb3ctbGV2ZWwgcmVhZCBiZWZvcmUgcmV1c2lu ZyBpdC4KKwkkcHNxbF9iLT53YWl0X2Zvcl9jb21wbGV0aW9uOwogCiAJb2soMSwKIAkJcXEv JGlvX21ldGhvZDogcmVhZCBzdHJlYW0gZW5jb3VudGVycyBzdWNjZWVkaW5nIElPIGJ5IGFu b3RoZXIgYmFja2VuZC8KQEAgLTE4MSw5ICsxODAsOCBAQCBzdWIgdGVzdF9pbmplY3RfZm9y ZWlnbgogCQkgICBwaWQ9PnBnX2JhY2tlbmRfcGlkKCksCiAJCSAgIHJlbGZpbGVub2RlPT5w Z19yZWxhdGlvbl9maWxlbm9kZSgnbGFyZ2Vpc2gnKSk7Lyk7CiAKLQkkcHNxbF9iLT57c3Rk aW59IC49IHFxL1NFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgnbGFyZ2Vpc2gnLAotCQlibG9j a25vPT41LCBuYmxvY2tzPT4xKTtcbi87Ci0JJHBzcWxfYi0+e3J1bn0tPnB1bXBfbmIoKTsK KwkkcHNxbF9iLT5kb19hc3luYyhxcS9TRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ2xhcmdl aXNoJywKKwkJYmxvY2tubz0+NSwgbmJsb2Nrcz0+MSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9x dWVyeV91bnRpbCgKIAkJJ3Bvc3RncmVzJywKQEAgLTE5MSw5ICsxODksOCBAQCBzdWIgdGVz dF9pbmplY3RfZm9yZWlnbgogCQkgICBXSEVSRSB3YWl0X2V2ZW50ID0gJ2NvbXBsZXRpb25f d2FpdCc7LywKIAkJJ2NvbXBsZXRpb25fd2FpdCcpOwogCi0JJHBzcWxfYS0+e3N0ZGlufSAu PSBxcS9TRUxFQ1QgYXJyYXlfYWdnKGJsb2NrbnVtKSBGUk9NCi0JCXJlYWRfc3RyZWFtX2Zv cl9ibG9ja3MoJ2xhcmdlaXNoJywgQVJSQVlbMCwgMiwgNSwgN10pO1xuLzsKLQkkcHNxbF9h LT57cnVufS0+cHVtcF9uYigpOworCSRwc3FsX2EtPmRvX2FzeW5jKHFxL1NFTEVDVCBhcnJh eV9hZ2coYmxvY2tudW0pIEZST00KKwkJcmVhZF9zdHJlYW1fZm9yX2Jsb2NrcygnbGFyZ2Vp c2gnLCBBUlJBWVswLCAyLCA1LCA3XSk7Lyk7CiAKIAkkbm9kZS0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAogCQlxcShTRUxFQ1Qgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0 aXZpdHkgV0hFUkUgcGlkID0gJHBpZF9hKSwKQEAgLTIwMSwxNSArMTk4LDEzIEBAIHN1YiB0 ZXN0X2luamVjdF9mb3JlaWduCiAKIAkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx L1NFTEVDVCBpbmpfaW9fY29tcGxldGlvbl9jb250aW51ZSgpLyk7CiAKLQlwdW1wX3VudGls KAotCQkkcHNxbF9hLT57cnVufSwgJHBzcWxfYS0+e3RpbWVvdXR9LAotCQlcJHBzcWxfYS0+ e3N0ZG91dH0sIHFyL1x7MCwyLDUsN1x9Lyk7Ci0JJHBzcWxfYS0+e3N0ZG91dH0gPSAnJzsK KwkkcHNxbF9hLT53YWl0X2Zvcl9hc3luY19wYXR0ZXJuKHFyL1x7MCwyLDUsN1x9Lyk7CiAK LQlwdW1wX3VudGlsKCRwc3FsX2ItPntydW59LCAkcHNxbF9iLT57dGltZW91dH0sIFwkcHNx bF9iLT57c3RkZXJyfSwKLQkJcXIvRVJST1IuKmNvdWxkIG5vdCByZWFkIGJsb2NrcyA1XC5c LjUvKTsKLQlvaygxLCAiJGlvX21ldGhvZDogaW5qZWN0ZWQgZXJyb3Igb2NjdXJyZWQiKTsK LQkkcHNxbF9iLT57c3RkZXJyfSA9ICcnOworCSMgU2Vzc2lvbiBiJ3MgbG93LWxldmVsIHJl YWQgaGl0cyB0aGUgaW5qZWN0ZWQgZXJyb3IuCisJbXkgJHJlc19iID0gJHBzcWxfYi0+Z2V0 X2FzeW5jX3Jlc3VsdCgpOworCWxpa2UoJHJlc19iLT57ZXJyb3JfbWVzc2FnZX0sIHFyL0VS Uk9SLipjb3VsZCBub3QgcmVhZCBibG9ja3MgNVwuXC41LywKKwkJIiRpb19tZXRob2Q6IGlu amVjdGVkIGVycm9yIG9jY3VycmVkIik7CisJJHBzcWxfYi0+Y2xlYXJfc3RkZXJyKCk7CiAJ JHBzcWxfYi0+cXVlcnlfc2FmZShxcS9TRUxFQ1QgaW5qX2lvX3Nob3J0X3JlYWRfZGV0YWNo KCk7Lyk7CiAKIAlvaygxLApAQCAtMjI2LDkgKzIyMSw4IEBAIHN1YiB0ZXN0X2luamVjdF9m b3JlaWduCiAJCXFxL1NFTEVDVCBpbmpfaW9fY29tcGxldGlvbl93YWl0KHBpZD0+cGdfYmFj a2VuZF9waWQoKSwKIAkJICAgcmVsZmlsZW5vZGU9PnBnX3JlbGF0aW9uX2ZpbGVub2RlKCds YXJnZWlzaCcpKTsvKTsKIAotCSRwc3FsX2ItPntzdGRpbn0gLj0gcXEvU0VMRUNUIHJlYWRf cmVsX2Jsb2NrX2xsKCdsYXJnZWlzaCcsCi0JCWJsb2Nrbm89PjIsIG5ibG9ja3M9PjMpO1xu LzsKLQkkcHNxbF9iLT57cnVufS0+cHVtcF9uYigpOworCSRwc3FsX2ItPmRvX2FzeW5jKHFx L1NFTEVDVCByZWFkX3JlbF9ibG9ja19sbCgnbGFyZ2Vpc2gnLAorCQlibG9ja25vPT4yLCBu YmxvY2tzPT4zKTsvKTsKIAogCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAogCQkncG9zdGdy ZXMnLApAQCAtMjM3LDkgKzIzMSw4IEBAIHN1YiB0ZXN0X2luamVjdF9mb3JlaWduCiAJCSdj b21wbGV0aW9uX3dhaXQnKTsKIAogCSMgQmxvY2tzIDIgYW5kIDQgYXJlIHVuZGVyZ29pbmcg SU8gaW5pdGlhdGVkIGJ5IHNlc3Npb24gYgotCSRwc3FsX2EtPntzdGRpbn0gLj0gcXEvU0VM RUNUIGFycmF5X2FnZyhibG9ja251bSkgRlJPTQotCQlyZWFkX3N0cmVhbV9mb3JfYmxvY2tz KCdsYXJnZWlzaCcsIEFSUkFZWzAsIDIsIDRdKTtcbi87Ci0JJHBzcWxfYS0+e3J1bn0tPnB1 bXBfbmIoKTsKKwkkcHNxbF9hLT5kb19hc3luYyhxcS9TRUxFQ1QgYXJyYXlfYWdnKGJsb2Nr bnVtKSBGUk9NCisJCXJlYWRfc3RyZWFtX2Zvcl9ibG9ja3MoJ2xhcmdlaXNoJywgQVJSQVlb MCwgMiwgNF0pOy8pOwogCiAJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywK IAkJcXEoU0VMRUNUIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHBp ZCA9ICRwaWRfYSksCkBAIC0yNDcsMTUgKzI0MCwxNSBAQCBzdWIgdGVzdF9pbmplY3RfZm9y ZWlnbgogCiAJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcS9TRUxFQ1QgaW5qX2lv X2NvbXBsZXRpb25fY29udGludWUoKS8pOwogCi0JcHVtcF91bnRpbCgKLQkJJHBzcWxfYS0+ e3J1bn0sICRwc3FsX2EtPnt0aW1lb3V0fSwKLQkJXCRwc3FsX2EtPntzdGRvdXR9LCBxci9c ezAsMiw0XH0vKTsKLQkkcHNxbF9hLT57c3Rkb3V0fSA9ICcnOworCSRwc3FsX2EtPndhaXRf Zm9yX2FzeW5jX3BhdHRlcm4ocXIvXHswLDIsNFx9Lyk7CisKKwkjIERyYWluIHNlc3Npb24g YidzIG5vdy1jb21wbGV0ZWQgbG93LWxldmVsIHJlYWQuCisJJHBzcWxfYi0+d2FpdF9mb3Jf Y29tcGxldGlvbjsKIAogCW9rKDEsIHFxLyRpb19tZXRob2Q6IHJlYWQgc3RyZWFtIGVuY291 bnRlcnMgdHdvIGJ1ZmZlciByZWFkIGluIG9uZSBJTy8pOwogCi0JJHBzcWxfYS0+cXVpdCgp OwotCSRwc3FsX2ItPnF1aXQoKTsKKwkkcHNxbF9hLT5jbG9zZSgpOworCSRwc3FsX2ItPmNs b3NlKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNr c3Vtcy90LzAwMl9yZXN0YXJ0cy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1 bXMvdC8wMDJfcmVzdGFydHMucGwKaW5kZXggMWFhMmMwYzY1ZTUuLmNkOWE3MzE0YzhhIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDAyX3Jlc3Rh cnRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMDJfcmVz dGFydHMucGwKQEAgLTgsNiArOCw3IEBAIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK IAogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBUZXN0OjpN b3JlOwogCiB1c2UgRmluZEJpbjsKQEAgLTQ0LDggKzQ1LDggQEAgU0tJUDoKIAkjCiAJIyBU aGlzIGlzIGEgc2ltaWxhciB0ZXN0IHRvIHRoZSBzeW50aGV0aWMgdmFyaWFudCBpbiAwMDVf aW5qZWN0aW9uLnBsCiAJIyB3aGljaCBmYWtlcyB0aGlzIHNjZW5hcmlvLgotCW15ICRic2Vz c2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJGJzZXNzaW9u LT5xdWVyeV9zYWZlKCdDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHR0IChhIGludGVnZXIpOycp OworCW15ICRic2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKKwkkYnNlc3Npb24tPmRvKCdDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHR0 IChhIGludGVnZXIpOycpOwogCiAJIyBJbiBhbm90aGVyIHNlc3Npb24sIG1ha2Ugc3VyZSB3 ZSBjYW4gc2VlIHRoZSBibG9ja2luZyB0ZW1wIHRhYmxlIGJ1dAogCSMgc3RhcnQgcHJvY2Vz c2luZyBhbnl3YXlzIGFuZCBjaGVjayB0aGF0IHdlIGFyZSBibG9ja2VkIHdpdGggYSBwcm9w ZXIKQEAgLTg1LDcgKzg2LDcgQEAgU0tJUDoKIAkjIHNlc3Npb24gZmlyc3Qgc2luY2UgdGhl IGJyaWVmIHBlcmlvZCBiZXR3ZWVuIGNsb3NpbmcgYW5kIHN0b3BwaW5nIG1pZ2h0CiAJIyBi ZSBlbm91Z2ggZm9yIGNoZWNrc3VtcyB0byBnZXQgZW5hYmxlZC4KIAkkbm9kZS0+c3RvcDsK LQkkYnNlc3Npb24tPnF1aXQ7CisJJGJzZXNzaW9uLT5jbG9zZTsKIAkkbm9kZS0+c3RhcnQ7 CiAKIAkjIEVuc3VyZSB0aGUgY2hlY2tzdW1zIGFyZW4ndCBlbmFibGVkIGFjcm9zcyB0aGUg cmVzdGFydC4gIFRoaXMgbGVhdmVzIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2NoZWNrc3Vtcy90LzAwM19zdGFuZGJ5X3Jlc3RhcnRzLnBsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwM19zdGFuZGJ5X3Jlc3RhcnRzLnBsCmluZGV4 IGJiMzVlZDBiMzI1Li42N2Q0ZTc2ZTdiNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2NoZWNrc3Vtcy90LzAwM19zdGFuZGJ5X3Jlc3RhcnRzLnBsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMDNfc3RhbmRieV9yZXN0YXJ0cy5wbApA QCAtNyw2ICs3LDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgVGVzdDo6 TW9yZTsKIAogdXNlIEZpbmRCaW47CkBAIC0yNTUsMTEgKzI1NiwxMSBAQCAkbm9kZV9wcmlt YXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknKTsKIAogIyBP cGVuIGEgYmFja2dyb3VuZCBwc3FsIGNvbm5lY3Rpb24gb24gdGhlIHByaW1hcnkgYW5kIGlu amVjdCBhIGJhcnJpZXIgdG8KICMgYmxvY2sgcHJvZ3Jlc3Mgb24gdG8ga2VlcCB0aGUgc3Rh dGUgZnJvbSBhZHZhbmNpbmcgcGFzdCBpbnByb2dyZXNzLW9uCi1teSAkbm9kZV9wcmltYXJ5 X2Jwc3FsID0gJG5vZGVfcHJpbWFyeS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwot JG5vZGVfcHJpbWFyeV9icHNxbC0+cXVlcnlfc2FmZSgnQ1JFQVRFIFRFTVBPUkFSWSBUQUJM RSB0dCAoYSBpbnRlZ2VyKTsnKTsKK215ICRub2RlX3ByaW1hcnlfYnBzcWwgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9wcmltYXJ5KTsKKyRub2Rl X3ByaW1hcnlfYnBzcWwtPmRvKCdDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHR0IChhIGludGVn ZXIpOycpOwogIyBBbHNvIG9wZW4gYSBiYWNrZ3JvdW5kIHBzcWwgY29ubmVjdGlvbiB0byB0 aGUgc3RhbmRieSB0byBtYWtlIHN1cmUgd2UgaGF2ZQogIyBhbiBhY3RpdmUgYmFja2VuZCBk dXJpbmcgcHJvbW90aW9uLgotbXkgJG5vZGVfc3RhbmRieV9icHNxbCA9ICRub2RlX3N0YW5k YnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKK215ICRub2RlX3N0YW5kYnlfYnBz cWwgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9zdGFu ZGJ5KTsKIAogIyBTdGFydCB0byBlbmFibGUgY2hlY2tzdW1zIGFuZCB3YWl0IHVudGlsIGJv dGggcHJpbWFyeSBhbmQgc3RhbmRieSBoYXZlIG1vdmVkCiAjIHRvIHRoZSBpbnByb2dyZXNz LW9uIHN0YXRlLiAgUHJvY2Vzc2luZyB3aWxsIGJsb2NrIGhlcmUgYXMgdGhlIHRlbXBvcmFy eSByZWwKQEAgLTI4MSw3ICsyODIsMTEgQEAgJHJlc3VsdCA9ICRub2RlX3N0YW5kYnlfYnBz cWwtPnF1ZXJ5X3NhZmUoIlNIT1cgZGF0YV9jaGVja3N1bXM7Iik7CiBpcygkcmVzdWx0LCAn b2ZmJywKIAknZW5zdXJlIGNoZWNrc3VtcyBhcmUgc2V0IHRvIG9mZiBhZnRlciBwcm9tb3Rp b24gZHVyaW5nIGlucHJvZ3Jlc3Mtb24nKTsKIAotJG5vZGVfc3RhbmRieV9icHNxbC0+cXVp dDsKKyMgVGhlIHByaW1hcnkncyBzZXNzaW9uIHdhcyBrZXB0IG9wZW4gb25seSB0byBob2xk IHRoZSBibG9ja2luZyB0ZW1wIHRhYmxlOworIyBjbG9zZSBpdCBleHBsaWNpdGx5IChpdHMg YmFja2VuZCBpcyBhbHJlYWR5IGdvbmUgYWZ0ZXIgdGhlIGNyYXNoKSBzbyBpdCBpcworIyBu b3QgbGVmdCB0byBiZSB0b3JuIGRvd24gYXQgZ2xvYmFsIGRlc3RydWN0aW9uLgorJG5vZGVf cHJpbWFyeV9icHNxbC0+Y2xvc2U7Ciskbm9kZV9zdGFuZGJ5X2Jwc3FsLT5jbG9zZTsKICRu b2RlX3N0YW5kYnktPnN0b3A7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwNF9vZmZsaW5lLnBsIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2NoZWNrc3Vtcy90LzAwNF9vZmZsaW5lLnBsCmluZGV4IDczYzI3 OWU3NWUwLi5iZTZiNmI2ZTRjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2NoZWNrc3Vtcy90LzAwNF9vZmZsaW5lLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9jaGVja3N1bXMvdC8wMDRfb2ZmbGluZS5wbApAQCAtOCw2ICs4LDcgQEAgdXNlIHdhcm5p bmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpT ZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAKIHVzZSBGaW5kQmluOwpAQCAtNTMsOCArNTQs OCBAQCB0ZXN0X2NoZWNrc3VtX3N0YXRlKCRub2RlLCAnb2ZmJyk7CiAjIGNhbiBhY2NvbXBs aXNoIHRoaXMgYnkgc2V0dGluZyB1cCBhbiBpbnRlcmFjdGl2ZSBwc3FsIHByb2Nlc3Mgd2hp Y2gga2VlcHMgdGhlCiAjIHRlbXBvcmFyeSB0YWJsZSBjcmVhdGVkIGFzIHdlIGVuYWJsZSBj aGVja3N1bXMgaW4gYW5vdGhlciBwc3FsIHByb2Nlc3MuCiAKLW15ICRic2Vzc2lvbiA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kYnNlc3Npb24tPnF1ZXJ5X3Nh ZmUoJ0NSRUFURSBURU1QT1JBUlkgVEFCTEUgdHQgKGEgaW50ZWdlcik7Jyk7CitteSAkYnNl c3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7 CiskYnNlc3Npb24tPmRvKCdDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHR0IChhIGludGVnZXIp OycpOwogCiAjIEluIGFub3RoZXIgc2Vzc2lvbiwgbWFrZSBzdXJlIHdlIGNhbiBzZWUgdGhl IGJsb2NraW5nIHRlbXAgdGFibGUgYnV0IHN0YXJ0CiAjIHByb2Nlc3NpbmcgYW55d2F5cyBh bmQgY2hlY2sgdGhhdCB3ZSBhcmUgYmxvY2tlZCB3aXRoIGEgcHJvcGVyIHdhaXQgZXZlbnQu CkBAIC03MCw3ICs3MSw3IEBAIGVuYWJsZV9kYXRhX2NoZWNrc3Vtcygkbm9kZSwgd2FpdCA9 PiAnaW5wcm9ncmVzcy1vbicpOwogIyBTdG9wIHRoZSBjbHVzdGVyIGJlZm9yZSBleGl0aW5n IHRoZSBiYWNrZ3JvdW5kIHNlc3Npb24gc2luY2Ugb3RoZXJ3aXNlCiAjIGNoZWNrc3VtcyBt aWdodCBoYXZlIHRpbWUgdG8gZ2V0IGVuYWJsZWQgYmVmb3JlIHNodXR0aW5nIGRvd24gdGhl IGNsdXN0ZXIuCiAkbm9kZS0+c3RvcCgnZmFzdCcpOwotJGJzZXNzaW9uLT5xdWl0OworJGJz ZXNzaW9uLT5jbG9zZTsKICRub2RlLT5jaGVja3N1bV9lbmFibGVfb2ZmbGluZTsKICRub2Rl LT5zdGFydDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MDVfdGltZW91dHMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwNV90aW1l b3V0cy5wbAppbmRleCBjMTZiN2RiZjVlNi4uZDY0YTc4N2E5YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1X3RpbWVvdXRzLnBsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDA1X3RpbWVvdXRzLnBsCkBAIC02LDYgKzYsNyBA QCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgbG9jYWxlOwogCiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRpbWU6OkhpUmVzIHF3KHVz bGVlcCk7CiB1c2UgVGVzdDo6TW9yZTsKQEAgLTQyLDI0ICs0MywxNiBAQCAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7 Jyk7CiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgndHJhbnNhY3Rpb24tdGltZW91dCcsICd3YWl0Jyk7Iik7CiAKLW15 ICRwc3FsX3Nlc3Npb24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwor bXkgJHBzcWxfc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2Rl ID0+ICRub2RlKTsKIAotIyBUaGUgZm9sbG93aW5nIHF1ZXJ5IHdpbGwgZ2VuZXJhdGUgYSBz dHJlYW0gb2YgU0VMRUNUIDEgcXVlcmllcy4gVGhpcyBpcyBkb25lCi0jIHNvIHRvIGV4ZXJj aXNlIHRyYW5zYWN0aW9uIHRpbWVvdXQgaW4gdGhlIHByZXNlbmNlIG9mIHNob3J0IHF1ZXJp ZXMuCi0jIE5vdGU6IHRoZSBpbnRlcnZhbCB2YWx1ZSBpcyBwYXJzZWQgd2l0aCBsb2NhbGUt YXdhcmUgc3RydG9kKCkKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0 aW5nX2JnX3BzcWwvLAotCXNwcmludGYoCi0JCXEoXGVjaG8gc3RhcnRpbmdfYmdfcHNxbAot CQlTRVQgdHJhbnNhY3Rpb25fdGltZW91dCB0byAnMTBtcyc7Ci0JCUJFR0lOOwotCQlTRUxF Q1QgMSBcd2F0Y2ggJWcKLQkJXHEKLSksIDAuMDAxKSk7CiskcHNxbF9zZXNzaW9uLT5kbygi U0VUIHRyYW5zYWN0aW9uX3RpbWVvdXQgdG8gJzEwbXMnOyIpOworCiskcHNxbF9zZXNzaW9u LT5kb19hc3luYygiQkVHSU47IERPICcgYmVnaW4gbG9vcCBQRVJGT1JNIHBnX3NsZWVwKDAu MDAxKTsgZW5kIGxvb3A7IGVuZCAnOyIpOwogCiAjIFdhaXQgdW50aWwgdGhlIGJhY2tlbmQg ZW50ZXJzIHRoZSB0aW1lb3V0IGluamVjdGlvbiBwb2ludC4gV2lsbCBnZXQgYW4gZXJyb3IK ICMgaGVyZSBpZiBhbnl0aGluZyBnb2VzIHdyb25nLgogJG5vZGUtPndhaXRfZm9yX2V2ZW50 KCdjbGllbnQgYmFja2VuZCcsICd0cmFuc2FjdGlvbi10aW1lb3V0Jyk7CitwYXNzKCJnb3Qg dHJhbnNhY3Rpb24gdGltZW91dCBldmVudCIpOwogCiBteSAkbG9nX29mZnNldCA9IC1zICRu b2RlLT5sb2dmaWxlOwogCkBAIC03MCwxMSArNjMsOSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiAjIENoZWNrIHRoYXQgdGhlIHRpbWVvdXQgd2FzIGxvZ2dlZC4KICRub2Rl LT53YWl0X2Zvcl9sb2coJ3Rlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIHRyYW5zYWN0 aW9uIHRpbWVvdXQnLAogCSRsb2dfb2Zmc2V0KTsKK3Bhc3MoImdvdCB0cmFuc2FjdGlvbiB0 aW1lb3V0IGxvZyIpOwogCi0jIElmIHdlIHNlbmQgXHEgd2l0aCAkcHNxbF9zZXNzaW9uLT5x dWl0IHRoZSBjb21tYW5kIGNhbiBiZSBzZW50IHRvIHRoZSBzZXNzaW9uCi0jIGFscmVhZHkg Y2xvc2VkLiBTbyBccSBpcyBpbiBpbml0aWFsIHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlz aCBJUEM6OlJ1bi4KLSRwc3FsX3Nlc3Npb24tPntydW59LT5maW5pc2g7Ci0KKyRwc3FsX3Nl c3Npb24tPmNsb3NlOwogCiAjCiAjIDIuIFRlc3Qgb2YgdGhlIGlkbGUgaW4gdHJhbnNhY3Rp b24gdGltZW91dApAQCAtODUsMTAgKzc2LDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogKTsKIAogIyBXZSBiZWdpbiBhIHRyYW5zYWN0aW9uIGFuZCB0aGUgaGFuZCBvbiB0 aGUgbGluZQotJHBzcWxfc2Vzc2lvbiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJyk7Ci0kcHNxbF9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19iZ19w c3FsLywgcSgKLSAgIFxlY2hvIHN0YXJ0aW5nX2JnX3BzcWwKKyRwc3FsX3Nlc3Npb24tPnJl Y29ubmVjdDsKKyRwc3FsX3Nlc3Npb24tPmRvKHEoCiAgICBTRVQgaWRsZV9pbl90cmFuc2Fj dGlvbl9zZXNzaW9uX3RpbWVvdXQgdG8gJzEwbXMnOwogICAgQkVHSU47CiApKTsKQEAgLTk2 LDYgKzg1LDcgQEAgJHBzcWxfc2Vzc2lvbi0+cXVlcnlfdW50aWwoCiAjIFdhaXQgdW50aWwg dGhlIGJhY2tlbmQgZW50ZXJzIHRoZSB0aW1lb3V0IGluamVjdGlvbiBwb2ludC4KICRub2Rl LT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLAogCSdpZGxlLWluLXRyYW5zYWN0 aW9uLXNlc3Npb24tdGltZW91dCcpOworcGFzcygiZ290IGlkbGUgaW4gdHJhbnNhY3Rpb24g dGltZW91dCBldmVudCIpOwogCiAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwog CkBAIC0xMDYsOCArOTYsOSBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENo ZWNrIHRoYXQgdGhlIHRpbWVvdXQgd2FzIGxvZ2dlZC4KICRub2RlLT53YWl0X2Zvcl9sb2co CiAJJ3Rlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIGlkbGUtaW4tdHJhbnNhY3Rpb24g dGltZW91dCcsICRsb2dfb2Zmc2V0KTsKK3Bhc3MoImdvdCBpZGxlIGluIHRyYW5zYWN0aW9u IHRpbWVvdXQgbG9nIik7CiAKLW9rKCRwc3FsX3Nlc3Npb24tPnF1aXQpOworJHBzcWxfc2Vz c2lvbi0+Y2xvc2U7CiAKIAogIwpAQCAtMTE3LDE1ICsxMDgsMTQgQEAgJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2lk bGUtc2Vzc2lvbi10aW1lb3V0JywgJ3dhaXQnKTsiKTsKIAogIyBXZSBqdXN0IGluaXRpYWxp emUgdGhlIEdVQyBhbmQgd2FpdC4gTm8gdHJhbnNhY3Rpb24gaXMgcmVxdWlyZWQuCi0kcHNx bF9zZXNzaW9uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3Fs X3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2JnX3BzcWwvLCBxKAotICAg XGVjaG8gc3RhcnRpbmdfYmdfcHNxbAorJHBzcWxfc2Vzc2lvbi0+cmVjb25uZWN0OworJHBz cWxfc2Vzc2lvbi0+ZG8ocSgKICAgIFNFVCBpZGxlX3Nlc3Npb25fdGltZW91dCB0byAnMTBt cyc7CiApKTsKIAogIyBXYWl0IHVudGlsIHRoZSBiYWNrZW5kIGVudGVycyB0aGUgdGltZW91 dCBpbmplY3Rpb24gcG9pbnQuCiAkbm9kZS0+d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNr ZW5kJywgJ2lkbGUtc2Vzc2lvbi10aW1lb3V0Jyk7CitwYXNzKCJnb3QgaWRsZSBzZXNzaW9u IHRpbWVvdXQgZXZlbnQiKTsKIAogJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsK IApAQCAtMTM2LDcgKzEyNiw4IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICMg Q2hlY2sgdGhhdCB0aGUgdGltZW91dCB3YXMgbG9nZ2VkLgogJG5vZGUtPndhaXRfZm9yX2xv ZygndGVybWluYXRpbmcgY29ubmVjdGlvbiBkdWUgdG8gaWRsZS1zZXNzaW9uIHRpbWVvdXQn LAogCSRsb2dfb2Zmc2V0KTsKK3Bhc3MoImdvdCBpZGxlIHNlc2lvbiB0aWVtb3V0IGxvZyIp OwogCi1vaygkcHNxbF9zZXNzaW9uLT5xdWl0KTsKKyRwc3FsX3Nlc3Npb24tPmNsb3NlOwog CiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9t aXNjL3QvMDA3X2NhdGNhY2hlX2ludmFsLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21p c2MvdC8wMDdfY2F0Y2FjaGVfaW52YWwucGwKaW5kZXggNDI0NTU2MjYxYzkuLmUzYjNmZDhi YWU5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwN19jYXRj YWNoZV9pbnZhbC5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAwN19j YXRjYWNoZV9pbnZhbC5wbApAQCAtNDYsMTIgKzQ2LDEyIEBAICRub2RlLT5zYWZlX3BzcWwo CiAgICAgQ1JFQVRFIEZVTkNUSU9OIGZvb2Z1bmMoZHVtbXkgaW50ZWdlcikgUkVUVVJOUyBp bnRlZ2VyIEFTIFwkXCQgU0VMRUNUIDE7IC8qICRsb25ndGV4dCAqLyBcJFwkIExBTkdVQUdF IFNRTAogXSk7CiAKLW15ICRwc3FsX3Nlc3Npb24gPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOwotbXkgJHBzcWxfc2Vzc2lvbjIgPSAkbm9kZS0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycpOworbXkgJHBzcWxfc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6 OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKK215ICRwc3FsX3Nlc3Npb24yID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAjIFNldCBp bmplY3Rpb24gcG9pbnQgaW4gdGhlIHNlc3Npb24sIHRvIHBhdXNlIHdoaWxlIHBvcHVsYXRp bmcgdGhlCiAjIGNhdGNhY2hlIGxpc3QKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoCisk cHNxbF9zZXNzaW9uLT5kbygKIAlxcVsKICAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19z ZXRfbG9jYWwoKTsKICAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NhdGNh Y2hlLWxpc3QtbWlzcy1zeXN0YWJsZS1zY2FuLXN0YXJ0ZWQnLCAnd2FpdCcpOwpAQCAtNTks MTAgKzU5LDkgQEAgJHBzcWxfc2Vzc2lvbi0+cXVlcnlfc2FmZSgKIAogIyBUaGlzIHBhdXNl cyBvbiB0aGUgaW5qZWN0aW9uIHBvaW50IHdoaWxlIHBvcHVsYXRpbmcgY2F0Y2FjaGUgbGlz dAogIyBmb3IgZnVuY3Rpb25zIHdpdGggbmFtZSAiZm9vZnVuYyIKLSRwc3FsX3Nlc3Npb24t PnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2JnX3BzcWwvLCBxKAotICAgXGVjaG8gc3Rh cnRpbmdfYmdfcHNxbAotICAgU0VMRUNUIGZvb2Z1bmMoMSk7CiskcHNxbF9zZXNzaW9uLT5k b19hc3luYygKKyAgIHEoCisgICAgICBTRUxFQ1QgZm9vZnVuYygxKTsKICkpOwogCiAjIFdo aWxlIHRoZSBmaXJzdCBzZXNzaW9uIGlzIGJ1aWxkaW5nIHRoZSBjYXRjYWNoZSBsaXN0LCBj cmVhdGUgYSBuZXcKQEAgLTgzLDE2ICs4MiwxOSBAQCAkbm9kZS0+c2FmZV9wc3FsKAogIyB0 cnlpbmcgdG8gZXhlcmNpc2UgaGVyZS4pCiAjCiAjIFRoZSAiU0VMRUNUIGZvb2Z1bmMoMSki IHF1ZXJ5IHdpbGwgbm93IGZpbmlzaC4KLSRwc3FsX3Nlc3Npb24yLT5xdWVyeV9zYWZlKAor JHBzcWxfc2Vzc2lvbjItPmRvKAogCXFxWwogICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3dha2V1cCgnY2F0Y2FjaGUtbGlzdC1taXNzLXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwog ICAgIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnY2F0Y2FjaGUtbGlzdC1taXNz LXN5c3RhYmxlLXNjYW4tc3RhcnRlZCcpOwogXSk7CiAKICMgVGVzdCB0aGF0IHRoZSBuZXcg ZnVuY3Rpb24gaXMgdmlzaWJsZSB0byB0aGUgc2Vzc2lvbi4KLSRwc3FsX3Nlc3Npb24tPnF1 ZXJ5X3NhZmUoIlNFTEVDVCBmb29mdW5jKCk7Iik7CiskcHNxbF9zZXNzaW9uLT53YWl0X2Zv cl9jb21wbGV0aW9uOworbXkgJHJlcyA9ICRwc3FsX3Nlc3Npb24tPnF1ZXJ5KCJTRUxFQ1Qg Zm9vZnVuYygpOyIpOwogCi1vaygkcHNxbF9zZXNzaW9uLT5xdWl0KTsKLW9rKCRwc3FsX3Nl c3Npb24yLT5xdWl0KTsKK2lzKCRyZXMtPntzdGF0dXN9LCAyLCAiZ290IFRVUExFU19PSyIp OworCiskcHNxbF9zZXNzaW9uLT5jbG9zZTsKKyRwc3FsX3Nlc3Npb24yLT5jbG9zZTsKIAog ZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlz Yy90LzAxMF9pbmRleF9jb25jdXJyZW50bHlfdXBzZXJ0LnBsIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X21pc2MvdC8wMTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2VydC5wbAppbmRleCA1 MGEwZTdkYjhmNy4uYTczNTljYjA2MjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9taXNjL3QvMDEwX2luZGV4X2NvbmN1cnJlbnRseV91cHNlcnQucGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfaW5kZXhfY29uY3VycmVudGx5X3Vwc2Vy dC5wbApAQCAtMTMsNiArMTMsNyBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFM ID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiB1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKQEAgLTUxLDQ3 ICs1MiwzOCBAQCBBTFRFUiBUQUJMRSB0ZXN0LnRibGV4cHIgU0VUIChwYXJhbGxlbF93b3Jr ZXJzPTApOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBD T05DVVJSRU5UTFkgKyBVUFNFUlQgKHdha2V1cCBhdCBzZXQtZGVhZCBwaGFzZSknKTsKIAot IyBDcmVhdGUgc2Vzc2lvbnMgd2l0aCBvbl9lcnJvcl9zdG9wID0+IDAgc28gcHNxbCBkb2Vz bid0IGV4aXQgb24gU1FMIGVycm9ycy4KLSMgVGhpcyBhbGxvd3MgdXMgdG8gY29sbGVjdCBz dGRlcnIgYW5kIGRldGVjdCBlcnJvcnMgYWZ0ZXIgdGhlIHRlc3QgY29tcGxldGVzLgotbXkg JHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9w ID0+IDApOwotbXkgJHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDApOwotbXkgJHMzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworIyBDcmVhdGUgc2Vzc2lvbnMgZm9y IGNvbmN1cnJlbnQgb3BlcmF0aW9ucworbXkgJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworbXkgJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6 U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworbXkgJHMzID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAjIFNldHVwIGluamVjdGlvbiBw b2ludHMgZm9yIGVhY2ggc2Vzc2lvbgotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlx WwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWlu dC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMy LT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQt c3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNU IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRs eS1iZWZvcmUtc2V0LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKICMgczMgc3RhcnRzIFJFSU5E RVggKHdpbGwgYmxvY2sgb24gcmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3Jl LXNldC1kZWFkKQotJHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19yZWluZGV4Lywg cVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IHRlc3QudGJscGtfcGtleTsKLV0pOworJHMzLT5kb19hc3luYyhxW1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHRlc3QudGJscGtfcGtleTtdKTsKIAogIyBXYWl0IGZvciBzMyB0byBo aXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4 LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAogIyBzMSBzdGFy dHMgVVBTRVJUICh3aWxsIGJsb2NrIG9uIGNoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29u c3RyYWludC1uby1jb25mbGljdCkKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdf dXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8g dGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQg SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogIyBXYWl0IGZvciBzMSB0byBo aXQgaW5qZWN0aW9uIHBvaW50CiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1l eGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKQEAgLTEwMSwx MSArOTMsNyBAQCB3YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLAogCSdyZWluZGV4LXJl bGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAogIyBzMiBzdGFydHMg VVBTRVJUICh3aWxsIGJsb2NrIG9uIGV4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3Vs YXRpdmUpCi0kczItPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMi8sIHFb Ci1cZWNobyBzdGFydGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFM VUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxw ayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7XSk7CiAKICMgV2FpdCBmb3IgczIgdG8gaGl0IGluamVjdGlvbiBw b2ludAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWlu c2VydC1zcGVjdWxhdGl2ZScpOwpAQCAtMTI1LDUxICsxMTMsMzkgQEAgJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBV UFNFUlQgKHdha2V1cCBhdCBzd2FwIHBoYXNlKScpOwogCi0kczEgPSAkbm9kZS0+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 QUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRi bHBrIFZBTFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVw ZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnY2hl Y2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0Jyk7CiAKIHdh a2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJl bnRseS1iZWZvcmUtc3dhcCcpOwogCi0kczItPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5n X3Vwc2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRP IHRlc3QudGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFU RSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJU IElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8g VVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2lu dCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsKIApA QCAtMTg0LDUwICsxNjAsMzggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnVFJV TkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbm90 ZSgnVGVzdDogUkVJTkRFWCBDT05DVVJSRU5UTFkgKyBVUFNFUlQgKHMxIHdha2VzIGJlZm9y ZSByZWluZGV4KScpOwogCi0kczEgPSAkbm9kZS0+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 bm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVT ICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNp b24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogIyBTdGFydCBzMiBC RUZPUkUgd2FraW5nIHJlaW5kZXggKGtleSBkaWZmZXJlbmNlIGZyb20gcGVybXV0YXRpb24g MSkKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxl Y2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMg KDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZB TFVFUyAoMTMsbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRf YXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNl cnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC0yNDUsNTIgKzIwOSw0MCBA QCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRi bHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlOREVYICsg VVBTRVJUIE9OIENPTlNUUkFJTlQgKHNldC1kZWFkIHBoYXNlKScpOwogCi0kczEgPSAkbm9k 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 SU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05T VFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1d KTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMs IG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9k ZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcp OwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLAogCSdyZWluZGV4LXJlbGF0aW9u LWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAotJHMyLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3My Ci1JTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElD VCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZB TFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCBPTiBDT05TVFJBSU5UIHRibHBrX3BrZXkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9w b2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnKTsK IApAQCAtMzA1LDUxICsyNTcsMzkgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn VFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwaycpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog bm90ZSgnVGVzdDogUkVJTkRFWCArIFVQU0VSVCBPTiBDT05TVFJBSU5UIChzd2FwIHBoYXNl 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 MQotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJ Q1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9 IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwayBW QUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5 IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25f cG9pbnQoJG5vZGUsICdjaGVjay1leGNsdXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8t Y29uZmxpY3QnKTsKIAogd2FrZXVwX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5kZXgt cmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJyk7CiAKLSRzMi0+cXVlcnlfdW50 aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2Vy dF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09O RkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19wa2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpOwotXSk7CiskczItPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50Ymxw ayBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgT04gQ09OU1RSQUlOVCB0Ymxwa19w a2V5IERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rp b25fcG9pbnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZl Jyk7CiAKQEAgLTM2NCw1MCArMzA0LDM4IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ1RSVU5DQVRFIFRBQkxFIHRlc3QudGJscGsnKTsKICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKIG5vdGUoJ1Rlc3Q6IFJFSU5ERVggKyBVUFNFUlQgT04gQ09OU1RSQUlOVCAoczEgd2Fr ZXMgYmVmb3JlIHJlaW5kZXgpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRz MSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRz MiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRz MyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAot JHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNr LWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7 CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVj dGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwog XSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnLCAnd2Fp dCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfcmVpbmRleC8s IHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSB0ZXN0LnRibHBrX3BrZXk7Ci1dKTsKKyRzMy0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSB0ZXN0LnRibHBrX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2lu dCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVh ZCcpOwogCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFb Ci1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFM VUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBE TyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhx W0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNU IE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBu b3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9u LW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0Jyk7CiAKICMgU3RhcnQgczIgQkVG T1JFIHdha2luZyByZWluZGV4Ci0kczItPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vw c2VydF9zMi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRl c3QudGJscGsgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQg dGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMy LT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJscGsgVkFMVUVTICgxMywgbm93KCkp IE9OIENPTkZMSUNUIE9OIENPTlNUUkFJTlQgdGJscGtfcGtleSBETyBVUERBVEUgU0VUIHVw ZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhl Yy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC00MjUsNTIgKzM1 Myw0MCBAQCAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0 ZXN0LnRibHBrJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBub3RlKCdUZXN0OiBSRUlO REVYIG9uIHBhcnRpdGlvbmVkIHRhYmxlIChzZXQtZGVhZCBwaGFzZSknKTsKIAotJHMxID0g JG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDAp OwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9z dG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+ bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0kczEtPnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFb CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50 LW5vLWNvbmZsaWN0JywgJ3dhaXQnKTsKIF0pOwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczIt PmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1z cGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5k bygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5 LWJlZm9yZS1zZXQtZGVhZCcsICd3YWl0Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0YXJ0aW5nX3JlaW5kZXgKLVJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9wa2V5OwotXSk7 CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxf cGFydGl0aW9uX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ3JlaW5k ZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zZXQtZGVhZCcpOwogCi0kczEtPnF1 ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9zMS8sIHFbCi1cZWNobyBzdGFydGlu Z191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5v dygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7 Ci1dKTsKKyRzMS0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxV RVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9h dCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdjaGVjay1leGNs dXNpb24tb3ItdW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnKTsKIAogd2FrZXVwX2lu amVjdGlvbl9wb2ludCgkbm9kZSwKIAkncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHkt YmVmb3JlLXNldC1kZWFkJyk7CiAKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdf dXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8g dGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lO U0VSVCBJTlRPIHRlc3QudGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElD VCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVj dGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRp dmUnKTsKIApAQCAtNDg1LDUxICs0MDEsMzkgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnVFJVTkNBVEUgVEFCTEUgdGVzdC50YmxwYXJ0ZWQnKTsKICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKIG5vdGUoJ1Rlc3Q6IFJFSU5ERVggb24gcGFydGl0aW9uZWQgdGFibGUgKHN3 YXAgcGhhc2UpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwo J3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMyA9ICRub2RlLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKKyRzMSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRzMyA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKIAotJHMxLT5xdWVy eV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xv Y2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2NoZWNrLWV4Y2x1c2lv bi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3YWl0Jyk7CiBdKTsKIAot JHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2V4ZWMt aW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUnLCAnd2FpdCcpOwogXSk7CiAKLSRz My0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4 LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc3dhcCcsICd3YWl0Jyk7CiBdKTsKIAot JHMzLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ19yZWluZGV4LywgcVsKLVxlY2hvIHN0 YXJ0aW5nX3JlaW5kZXgKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3Bh cnRpdGlvbl9wa2V5OwotXSk7CiskczMtPmRvX2FzeW5jKHFbUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgdGVzdC50YmxfcGFydGl0aW9uX3BrZXk7XSk7CiAKIG9rX2luamVjdGlvbl9w b2ludCgkbm9kZSwgJ3JlaW5kZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2Fw Jyk7CiAKLSRzMS0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsK LVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQotSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQg VkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0 ZWRfYXQgPSBub3coKTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3Qu dGJscGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9k ZSwgJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcp OwogCiB3YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1j b25jdXJyZW50bHktYmVmb3JlLXN3YXAnKTsKIAotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9z dGFydGluZ191cHNlcnRfczIvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MyCi1JTlNF UlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1Qg KGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczItPmRvX2Fz eW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9O IENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAog b2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1z cGVjdWxhdGl2ZScpOwogCkBAIC01NDQsNTAgKzQ0OCwzOCBAQCAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBhcnRlZCcpOwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogbm90ZSgnVGVzdDogUkVJTkRFWCBvbiBwYXJ0aXRpb25lZCB0 YWJsZSAoczEgd2FrZXMgYmVmb3JlIHJlaW5kZXgpJyk7CiAKLSRzMSA9ICRub2RlLT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLSRzMiA9ICRu b2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsK LSRzMyA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3Rv cCA9PiAwKTsKKyRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlKTsKKyRzMiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlKTsKKyRzMyA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlKTsKIAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGlj dCcsICd3YWl0Jyk7CiBdKTsKIAotJHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3VsYXRpdmUn LCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfc2FmZSgKKyRzMy0+ZG8oCiAJcVsKIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfYXR0YWNoKCdyZWluZGV4LXJlbGF0aW9uLWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0 LWRlYWQnLCAnd2FpdCcpOwogXSk7CiAKLSRzMy0+cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRp bmdfcmVpbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19yZWluZGV4Ci1SRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0aXRpb25fcGtleTsKLV0pOworJHMzLT5kb19h c3luYyhxW1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHRlc3QudGJsX3BhcnRpdGlvbl9w a2V5O10pOwogCiBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdyZWluZGV4LXJlbGF0aW9u LWNvbmN1cnJlbnRseS1iZWZvcmUtc2V0LWRlYWQnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgK LQlxci9zdGFydGluZ191cHNlcnRfczEvLCBxWwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3Mx Ci1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09O RkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEt PmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVzdC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93 KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtd KTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnY2hlY2stZXhjbHVzaW9uLW9yLXVu aXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0Jyk7CiAKICMgU3RhcnQgczIgQkVGT1JFIHdh a2luZyByZWluZGV4Ci0kczItPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2VydF9z Mi8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczIKLUlOU0VSVCBJTlRPIHRlc3QudGJs cGFydGVkIFZBTFVFUyAoMTMsIG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNF VCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5U TyB0ZXN0LnRibHBhcnRlZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERP IFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpO10pOwogCiBva19pbmplY3Rpb25fcG9p bnQoJG5vZGUsICdleGVjLWluc2VydC1iZWZvcmUtaW5zZXJ0LXNwZWN1bGF0aXZlJyk7CiAK QEAgLTYwNywzNSArNDk5LDI3IEBAIG5vdGUoCiAJJ1Rlc3Q6IFJFSU5ERVggb24gcGFydGl0 aW9uZWQgdGFibGUsIGNhY2hlIGludmFsIGJldHdlZW4gdHdvIGdldF9wYXJ0aXRpb25fYW5j ZXN0b3JzJwogKTsKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJhY2tncm91 bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMxID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi0kczEtPnF1ZXJ5 X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9j YWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZXhlYy1pbml0LXBhcnRp dGlvbi1hZnRlci1nZXQtcGFydGl0aW9uLWFuY2VzdG9ycycsICd3YWl0Jyk7CiBdKTsKIAot JHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5k ZXgtcmVsYXRpb24tY29uY3VycmVudGx5LWJlZm9yZS1zd2FwJywgJ3dhaXQnKTsKIF0pOwog Ci0kczItPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3JlaW5kZXgvLCBxWwotXGVjaG8g c3RhcnRpbmdfcmVpbmRleAotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdGVzdC50Ymxf cGFydGl0aW9uX3BrZXk7Ci1dKTsKKyRzMi0+ZG9fYXN5bmMocVtSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSB0ZXN0LnRibF9wYXJ0aXRpb25fcGtleTtdKTsKIAogb2tfaW5qZWN0aW9u X3BvaW50KCRub2RlLCAncmVpbmRleC1yZWxhdGlvbi1jb25jdXJyZW50bHktYmVmb3JlLXN3 YXAnKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydGluZ191cHNlcnRfczEvLCBx WwotXGVjaG8gc3RhcnRpbmdfdXBzZXJ0X3MxCi1JTlNFUlQgSU5UTyB0ZXN0LnRibHBhcnRl ZCBWQUxVRVMgKDEzLCBub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQgdXBk YXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8gdGVz dC50YmxwYXJ0ZWQgVkFMVUVTICgxMywgbm93KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERB VEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRu b2RlLAogCSdleGVjLWluaXQtcGFydGl0aW9uLWFmdGVyLWdldC1wYXJ0aXRpb24tYW5jZXN0 b3JzJyk7CkBAIC02NTQsMjYgKzUzOCwyNCBAQCBub3RlKCdUZXN0OiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZICsgVVBTRVJUJyk7CiAjIFVzZXMgaW52YWxpZGF0ZS1jYXRhbG9nLXNu YXBzaG90LWVuZCB0byB0ZXN0IGNhdGFsb2cgaW52YWxpZGF0aW9uCiAjIGR1cmluZyBVUFNF UlQKIAotJHMxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJv cl9zdG9wID0+IDApOwotJHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHMzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCi1teSAkczFfcGlkID0gJHMxLT5x dWVyeV9zYWZlKCdTRUxFQ1QgcGdfYmFja2VuZF9waWQoKScpOworIyBHZXQgdGhlIHNlc3Np b24ncyBiYWNrZW5kIFBJRCBiZWZvcmUgYXR0YWNoaW5nIGluamVjdGlvbiBwb2ludHMKK215 ICRzMV9waWQgPSAkczEtPnF1ZXJ5X29uZXZhbCgnU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCkn KTsKIAogIyBzMSBhdHRhY2hlcyBCT1RIIGluamVjdGlvbiBwb2ludHMgLSB0aGUgdW5pcXVl IGNvbnN0cmFpbnQgY2hlY2sgQU5EIGNhdGFsb2cgc25hcHNob3QKLSRzMS0+cXVlcnlfc2Fm ZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgp OwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVjay1leGNsdXNpb24tb3It dW5pcXVlLWNvbnN0cmFpbnQtbm8tY29uZmxpY3QnLCAnd2FpdCcpOwogXSk7CiAKLSRzMS0+ cXVlcnlfdW50aWwoCi0JcXIvYXR0YWNoaW5nX2luamVjdGlvbl9wb2ludC8sIHFbCi1cZWNo byBhdHRhY2hpbmdfaW5qZWN0aW9uX3BvaW50Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ2ludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnLCAnd2FpdCcpOwotXSk7 Ci0KICMgSW4gY2FzZXMgb2YgY2FjaGUgY2xvYmJlcmluZywgczEgbWF5IGhpdCB0aGUgaW5q ZWN0aW9uIHBvaW50IGR1cmluZyBhdHRhY2guCisjIFN0YXJ0IGF0dGFjaCBhc3luY2hyb25v dXNseSBzbyB3ZSBjYW4gY2hlY2sgaWYgaXQgYmxvY2tzLgorJHMxLT5kb19hc3luYyhxW1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBz aG90LWVuZCcsICd3YWl0Jyk7XSk7CisKICMgV2FpdCBmb3IgdGhhdCBzZXNzaW9uIHRvIGJl Y29tZSBpZGxlIChhdHRhY2ggY29tcGxldGVkKSwgb3Igd2FrZSBpdCB1cCBpZgogIyBpdCBi ZWNvbWVzIHN0dWNrIG9uIGluamVjdGlvbiBwb2ludC4KIGlmICghd2FpdF9mb3JfaWRsZSgk bm9kZSwgJHMxX3BpZCkpCkBAIC02ODcsMzQgKzU2OSwyOCBAQCBpZiAoIXdhaXRfZm9yX2lk bGUoJG5vZGUsICRzMV9waWQpKQogCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAo J2ludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKIAldKTsKIH0KKyMgV2FpdCBm b3IgYXN5bmMgY29tbWFuZCB0byBjb21wbGV0ZQorJHMxLT53YWl0X2Zvcl9jb21wbGV0aW9u OwogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn ZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0Jyk7CiBdKTsK IAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2Rl ZmluZS1pbmRleC1iZWZvcmUtc2V0LXZhbGlkJywgJ3dhaXQnKTsKIF0pOwogCiAjIHMzOiBT dGFydCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIChibG9ja3Mgb24gZGVmaW5lLWluZGV4 LWJlZm9yZS1zZXQtdmFsaWQpCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2Ny ZWF0ZV9pbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19jcmVhdGVfaW5kZXgKLUNSRUFURSBV TklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIHRibF9wa2V5X2R1cGxpY2F0ZSBPTiB0ZXN0LnRi bHBrKGkpOwotXSk7CiskczMtPmRvX2FzeW5jKHFbQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05D VVJSRU5UTFkgdGJsX3BrZXlfZHVwbGljYXRlIE9OIHRlc3QudGJscGsoaSk7XSk7CiAKIG9r X2luamVjdGlvbl9wb2ludCgkbm9kZSwgJ2RlZmluZS1pbmRleC1iZWZvcmUtc2V0LXZhbGlk Jyk7CiAKICMgczE6IFN0YXJ0IFVQU0VSVCAoYmxvY2tzIG9uIGludmFsaWRhdGUtY2F0YWxv Zy1zbmFwc2hvdC1lbmQpCi0kczEtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX3Vwc2Vy dF9zMS8sIHFbCi1cZWNobyBzdGFydGluZ191cHNlcnRfczEKLUlOU0VSVCBJTlRPIHRlc3Qu dGJscGsgVkFMVUVTICgxMyxub3coKSkgT04gQ09ORkxJQ1QgKGkpIERPIFVQREFURSBTRVQg dXBkYXRlZF9hdCA9IG5vdygpOwotXSk7CiskczEtPmRvX2FzeW5jKHFbSU5TRVJUIElOVE8g dGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBPTiBDT05GTElDVCAoaSkgRE8gVVBEQVRF IFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgkbm9k ZSwgJ2ludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKIApAQCAtNzIyLDExICs1 OTgsNyBAQCBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdpbnZhbGlkYXRlLWNhdGFsb2ct c25hcHNob3QtZW5kJyk7CiB3YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5l LWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnKTsKIAogIyBzMjogU3RhcnQgVVBTRVJUIChibG9j a3Mgb24gZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZSkKLSRzMi0+cXVl cnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0aW5n X3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxwayBWQUxVRVMgKDEzLG5vdygpKSBP TiBDT05GTElDVCAoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7Ci1dKTsK KyRzMi0+ZG9fYXN5bmMocVtJTlNFUlQgSU5UTyB0ZXN0LnRibHBrIFZBTFVFUyAoMTMsbm93 KCkpIE9OIENPTkZMSUNUIChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTtd KTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZXhlYy1pbnNlcnQtYmVmb3JlLWlu c2VydC1zcGVjdWxhdGl2ZScpOwogCkBAIC03NDcsMjQgKzYxOSwyMCBAQCAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdUUlVOQ0FURSBUQUJMRSB0ZXN0LnRibHBhcnRlZCcpOwog bm90ZSgnVGVzdDogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBvbiBwYXJ0aWFsIGluZGV4 ICsgVVBTRVJUJyk7CiAjIFVzZXMgaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCB0 byB0ZXN0IGNhdGFsb2cgaW52YWxpZGF0aW9uIGR1cmluZyBVUFNFUlQKIAotJHMxID0gJG5v ZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwot JHMyID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9w ID0+IDApOwotJHMzID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9l cnJvcl9zdG9wID0+IDApOworJHMxID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOworJHMyID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOworJHMzID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3 KG5vZGUgPT4gJG5vZGUpOwogCi0kczFfcGlkID0gJHMxLT5xdWVyeV9zYWZlKCdTRUxFQ1Qg cGdfYmFja2VuZF9waWQoKScpOworJHMxX3BpZCA9ICRzMS0+cXVlcnlfb25ldmFsKCdTRUxF Q1QgcGdfYmFja2VuZF9waWQoKScpOwogCiAjIHMxIGF0dGFjaGVzIEJPVEggaW5qZWN0aW9u IHBvaW50cyAtIHRoZSB1bmlxdWUgY29uc3RyYWludCBjaGVjayBBTkQgY2F0YWxvZyBzbmFw c2hvdAotJHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J2NoZWNrLWV4Y2x1c2lvbi1vci11bmlxdWUtY29uc3RyYWludC1uby1jb25mbGljdCcsICd3 YWl0Jyk7CiBdKTsKIAotJHMxLT5xdWVyeV91bnRpbCgKLQlxci9hdHRhY2hpbmdfaW5qZWN0 aW9uX3BvaW50LywgcVsKLVxlY2hvIGF0dGFjaGluZ19pbmplY3Rpb25fcG9pbnQKLVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90 LWVuZCcsICd3YWl0Jyk7Ci1dKTsKKyRzMS0+ZG8ocVtTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2ludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnLCAnd2FpdCcpO10p OwogCiAjIEluIGNhc2VzIG9mIGNhY2hlIGNsb2JiZXJpbmcsIHMxIG1heSBoaXQgdGhlIGlu amVjdGlvbiBwb2ludCBkdXJpbmcgYXR0YWNoLgogIyBXYWl0IGZvciB0aGF0IHNlc3Npb24g dG8gYmVjb21lIGlkbGUgKGF0dGFjaCBjb21wbGV0ZWQpLCBvciB3YWtlIGl0IHVwIGlmCkBA IC03ODEsMzMgKzY0OSwyNSBAQCBpZiAoIXdhaXRfZm9yX2lkbGUoJG5vZGUsICRzMV9waWQp KQogCV0pOwogfQogCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRz X2F0dGFjaCgnZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZScsICd3YWl0 Jyk7CiBdKTsKIAotJHMzLT5xdWVyeV9zYWZlKAorJHMzLT5kbygKIAlxWwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ2RlZmluZS1pbmRleC1iZWZvcmUtc2V0LXZhbGlkJywgJ3dhaXQnKTsKIF0pOwog CiAjIHMzOiBTdGFydCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIChibG9ja3Mgb24gZGVm aW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQpCi0kczMtPnF1ZXJ5X3VudGlsKAotCXFyL3N0 YXJ0aW5nX2NyZWF0ZV9pbmRleC8sIHFbCi1cZWNobyBzdGFydGluZ19jcmVhdGVfaW5kZXgK LUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIHRibF9wa2V5X3NwZWNpYWxfZHVw bGljYXRlIE9OIHRlc3QudGJsZXhwcihhYnMoaSkpIFdIRVJFIGkgPCAxMDAwMDsKLV0pOwor JHMzLT5kb19hc3luYyhxW0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIHRibF9w a2V5X3NwZWNpYWxfZHVwbGljYXRlIE9OIHRlc3QudGJsZXhwcihhYnMoaSkpIFdIRVJFIGkg PCAxMDAwMDtdKTsKIAogb2tfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVmaW5lLWluZGV4 LWJlZm9yZS1zZXQtdmFsaWQnKTsKIAogIyBzMTogU3RhcnQgVVBTRVJUIChibG9ja3Mgb24g aW52YWxpZGF0ZS1jYXRhbG9nLXNuYXBzaG90LWVuZCkKLSRzMS0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnRpbmdfdXBzZXJ0X3MxLywgcVsKLVxlY2hvIHN0YXJ0aW5nX3Vwc2VydF9zMQot SU5TRVJUIElOVE8gdGVzdC50YmxleHByIFZBTFVFUygxMyxub3coKSkgT04gQ09ORkxJQ1Qg KGFicyhpKSkgV0hFUkUgaSA8IDEwMCBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKLV0pOworJHMxLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRlc3QudGJsZXhwciBWQUxV RVMoMTMsbm93KCkpIE9OIENPTkZMSUNUIChhYnMoaSkpIFdIRVJFIGkgPCAxMDAgRE8gVVBE QVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2luamVjdGlvbl9wb2ludCgk bm9kZSwgJ2ludmFsaWRhdGUtY2F0YWxvZy1zbmFwc2hvdC1lbmQnKTsKIApAQCAtODE1LDEx ICs2NzUsNyBAQCBva19pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdpbnZhbGlkYXRlLWNhdGFs b2ctc25hcHNob3QtZW5kJyk7CiB3YWtldXBfaW5qZWN0aW9uX3BvaW50KCRub2RlLCAnZGVm aW5lLWluZGV4LWJlZm9yZS1zZXQtdmFsaWQnKTsKIAogIyBzMjogU3RhcnQgVVBTRVJUIChi bG9ja3Mgb24gZXhlYy1pbnNlcnQtYmVmb3JlLWluc2VydC1zcGVjdWxhdGl2ZSkKLSRzMi0+ cXVlcnlfdW50aWwoCi0JcXIvc3RhcnRpbmdfdXBzZXJ0X3MyLywgcVsKLVxlY2hvIHN0YXJ0 aW5nX3Vwc2VydF9zMgotSU5TRVJUIElOVE8gdGVzdC50YmxleHByIFZBTFVFUygxMyxub3co KSkgT04gQ09ORkxJQ1QgKGFicyhpKSkgV0hFUkUgaSA8IDEwMCBETyBVUERBVEUgU0VUIHVw ZGF0ZWRfYXQgPSBub3coKTsKLV0pOworJHMyLT5kb19hc3luYyhxW0lOU0VSVCBJTlRPIHRl c3QudGJsZXhwciBWQUxVRVMoMTMsbm93KCkpIE9OIENPTkZMSUNUIChhYnMoaSkpIFdIRVJF IGkgPCAxMDAgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7XSk7CiAKIG9rX2lu amVjdGlvbl9wb2ludCgkbm9kZSwgJ2V4ZWMtaW5zZXJ0LWJlZm9yZS1pbnNlcnQtc3BlY3Vs YXRpdmUnKTsKIHdha2V1cF9pbmplY3Rpb25fcG9pbnQoJG5vZGUsICdpbnZhbGlkYXRlLWNh dGFsb2ctc25hcHNob3QtZW5kJyk7CkBAIC05MjAsMzMgKzc3NiwyMyBAQCBTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c193YWtldXAoJyRwb2ludF9uYW1lJyk7CiBdKTsKIH0KIAotIyBXYWl0 IGZvciBhbnkgcGVuZGluZyBxdWVyeSB0byBjb21wbGV0ZSwgY2FwdHVyZSBzdGRlcnIsIGFu ZCBjbG9zZSB0aGUgc2Vzc2lvbi4KLSMgUmV0dXJucyB0aGUgc3RkZXJyIG91dHB1dCAoZXhj bHVkaW5nIGludGVybmFsIG1hcmtlcnMpLgorIyBXYWl0IGZvciBhbnkgcGVuZGluZyBxdWVy eSB0byBjb21wbGV0ZSBhbmQgY2xvc2UgdGhlIHNlc3Npb24uCisjIFJldHVybnMgZW1wdHkg c3RyaW5nIG9uIHN1Y2Nlc3MsIGVycm9yIG1lc3NhZ2Ugb24gZmFpbHVyZS4KIHN1YiBzYWZl X3F1aXQKIHsKIAlteSAoJHNlc3Npb24pID0gQF87CiAKLQkjIFNlbmQgYSBtYXJrZXIgYW5k IHdhaXQgZm9yIGl0IHRvIGVuc3VyZSBhbnkgcGVuZGluZyBxdWVyeSBjb21wbGV0ZXMKLQlt eSAkYmFubmVyID0gInNhZmVfcXVpdF9tYXJrZXIiOwotCW15ICRiYW5uZXJfbWF0Y2ggPSBx ci8oXnxcbikkYmFubmVyXHI/XG4vOworCSMgV2FpdCBmb3IgYW55IGFzeW5jIHF1ZXJpZXMg dG8gY29tcGxldGUKKwkkc2Vzc2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbjsKIAotCSRzZXNz aW9uLT57c3RkaW59IC49ICJcXGVjaG8gJGJhbm5lclxuXFx3YXJuICRiYW5uZXJcbiI7Ci0K LQlwdW1wX3VudGlsKAotCQkkc2Vzc2lvbi0+e3J1bn0sICRzZXNzaW9uLT57dGltZW91dH0s Ci0JCVwkc2Vzc2lvbi0+e3N0ZG91dH0sICRiYW5uZXJfbWF0Y2gpOwotCXB1bXBfdW50aWwo Ci0JCSRzZXNzaW9uLT57cnVufSwgJHNlc3Npb24tPnt0aW1lb3V0fSwKLQkJXCRzZXNzaW9u LT57c3RkZXJyfSwgJGJhbm5lcl9tYXRjaCk7Ci0KLQkjIENhcHR1cmUgc3RkZXJyIChleGNs dWRpbmcgdGhlIGJhbm5lcikKLQlteSAkc3RkZXJyID0gJHNlc3Npb24tPntzdGRlcnJ9Owot CSRzdGRlcnIgPX4gcy8kYmFubmVyX21hdGNoLy87CisJIyBDaGVjayBjb25uZWN0aW9uIHN0 YXR1cworCW15ICRzdGF0dXMgPSAkc2Vzc2lvbi0+Y29ubl9zdGF0dXM7CiAKIAkjIENsb3Nl IHRoZSBzZXNzaW9uCi0JJHNlc3Npb24tPnF1aXQ7CisJJHNlc3Npb24tPmNsb3NlOwogCi0J cmV0dXJuICRzdGRlcnI7CisJIyBSZXR1cm4gZW1wdHkgc3RyaW5nIGlmIGNvbm5lY3Rpb24g d2FzIE9LLCBvdGhlcndpc2UgcmV0dXJuIGVycm9yCisJcmV0dXJuICgkc3RhdHVzID09IFBv c3RncmVTUUw6OlBxRkZJOjpDT05ORUNUSU9OX09LKCkpID8gJycgOiAnY29ubmVjdGlvbiBl cnJvcic7CiB9CiAKICMgSGVscGVyIGZ1bmN0aW9uOiB2ZXJpZnkgdGhhdCB0aGUgZ2l2ZW4g c2Vzc2lvbnMgZXhpdCBjbGVhbmx5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X21pc2MvdC8wMTFfbG9ja19zdGF0cy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9t aXNjL3QvMDExX2xvY2tfc3RhdHMucGwKaW5kZXggNDVkN2QyNmY3MGMuLjAwYzFhYjAwZGYy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy90LzAxMV9sb2NrX3N0 YXRzLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDExX2xvY2tfc3Rh dHMucGwKQEAgLTE5LDYgKzE5LDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwog CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1v cmU7CiAKIHBsYW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRl ZCBieSB0aGlzIGJ1aWxkJwpAQCAtMzIsMTUgKzMzLDEyIEBAIG15ICRub2RlOwogIyBTZXR1 cCB0aGUgMiBzZXNzaW9ucwogc3ViIHNldHVwX3Nlc3Npb25zCiB7Ci0JJHMxID0gJG5vZGUt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLQkkczIgPSAkbm9kZS0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycpOworCSRzMSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24t Pm5ldyhub2RlID0+ICRub2RlKTsKKwkkczIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u LT5uZXcobm9kZSA9PiAkbm9kZSk7CiAKIAkjIFNldHVwIGluamVjdGlvbiBwb2ludHMgZm9y IHRoZSB3YWl0aW5nIHNlc3Npb24KLQkkczItPnF1ZXJ5X3VudGlsKAotCQlxci9hdHRhY2hp bmdfaW5qZWN0aW9uX3BvaW50LywgcVsKLQkJCVxlY2hvIGF0dGFjaGluZ19pbmplY3Rpb25f cG9pbnQKLQkJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnZGVhZGxvY2stdGlt ZW91dC1maXJlZCcsICd3YWl0Jyk7Ci0JCV0pOworCSRzMi0+ZG8oCisJCXFbU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdkZWFkbG9jay10aW1lb3V0LWZpcmVkJywgJ3dhaXQn KTtdKTsKIH0KIAogIyBGZXRjaCB3YWl0cyBhbmQgd2FpdF90aW1lIGZyb20gcGdfc3RhdF9s b2NrIGZvciBhIGdpdmVuIGxvY2sgdHlwZQpAQCAtOTgsNyArOTYsNyBAQCBzZXR1cF9zZXNz aW9ucygpOwogCiBteSAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCi0kczEt PnF1ZXJ5X3NhZmUoCiskczEtPmRvKAogCXFbCiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFy ZWQoJ2xvY2snKTsKIEJFR0lOOwpAQCAtMTA2LDE3ICsxMDQsMTMgQEAgTE9DSyBUQUJMRSB0 ZXN0X3N0YXRfdGFiOwogXSk7CiAKICMgczIgc2V0dXAKLSRzMi0+cXVlcnlfc2FmZSgKKyRz Mi0+ZG8oCiAJcVsKIEJFR0lOOwogU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OwogXSk7CiAjIHMyIGJsb2NrcyBvbiBMT0NLLgotJHMyLT5xdWVyeV91bnRpbCgKLQlxci9s b2NrX3MyLywgcVsKLVxlY2hvIGxvY2tfczIKLUxPQ0sgVEFCTEUgdGVzdF9zdGF0X3RhYjsK LV0pOworJHMyLT5kb19hc3luYyhxKExPQ0sgVEFCTEUgdGVzdF9zdGF0X3RhYjspKTsKIAog d2FpdF9hbmRfZGV0YWNoKCRub2RlLCAnZGVhZGxvY2stdGltZW91dC1maXJlZCcpOwogCkBA IC0xMzYsOCArMTMwLDkgQEAgJG5vZGUtPnNhZmVfcHNxbCgKICRub2RlLT53YWl0X2Zvcl9s b2cocXIvbG9nZ2luZyBtZW1vcnkgY29udGV4dHMvLCAkbG9nX29mZnNldCk7CiAKICMgZGVh ZGxvY2tfdGltZW91dCBmaXJlZCwgbm93IGNvbW1pdCBpbiBzMSBhbmQgczIKLSRzMS0+cXVl cnlfc2FmZShxKENPTU1JVCkpOwotJHMyLT5xdWVyeV9zYWZlKHEoQ09NTUlUKSk7CiskczEt PmRvKHEoQ09NTUlUKSk7CiskczItPndhaXRfZm9yX2NvbXBsZXRpb247CiskczItPmRvKHEo Q09NTUlUKSk7CiAKICMgY2hlY2sgdGhhdCBwZ19zdGF0X2xvY2sgaGFzIGJlZW4gdXBkYXRl ZAogd2FpdF9mb3JfcGdfc3RhdF9sb2NrKCRub2RlLCAncmVsYXRpb24nKTsKQEAgLTE1OCw4 ICsxNTMsOCBAQCBpcyggc2NhbGFyIEBzdGlsbF93YWl0aW5nLAogKTsKIAogIyBjbG9zZSBz ZXNzaW9ucwotJHMxLT5xdWl0OwotJHMyLT5xdWl0OworJHMxLT5jbG9zZTsKKyRzMi0+Y2xv c2U7CiAKICMjIyMjIyMgdHJhbnNhY3Rpb24gbG9jawogCkBAIC0xNjcsMjcgKzE2MiwzMSBA QCBzZXR1cF9zZXNzaW9ucygpOwogCiAkbG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxl OwogCi0kczEtPnF1ZXJ5X3NhZmUoCisjIFRoZSBJTlNFUlQgbXVzdCBhdXRvY29tbWl0IGJl Zm9yZSB0aGUgZXhwbGljaXQgdHJhbnNhY3Rpb24gaXMgb3BlbmVkLCBzbworIyB0aGF0IHNl c3Npb24gczIgY2FuIHNlZSByb3dzIGsxL2syL2szIGFuZCBibG9jayBvbiBzMSdzIHJvdyBs b2NrLiAgU2VuZCBpdAorIyBzZXBhcmF0ZWx5IGZyb20gdGhlIEJFR0lOIGJsb2NrOiBhIHNp bmdsZSBtdWx0aS1zdGF0ZW1lbnQgcXVlcnkgY29udGFpbmluZworIyBCRUdJTiB3b3VsZCBy dW4gdGhlIElOU0VSVCBpbnNpZGUgdGhlIHN0aWxsLW9wZW4gdHJhbnNhY3Rpb24sIGxlYXZp bmcgdGhlCisjIHJvd3MgaW52aXNpYmxlIHRvIHMyIChzbyBpdHMgVVBEQVRFIHdvdWxkIG1h dGNoIG5vdGhpbmcgYW5kIG5ldmVyIHdhaXQpLgorJHMxLT5kbygKIAlxWwogU0VMRUNUIHBn X3N0YXRfcmVzZXRfc2hhcmVkKCdsb2NrJyk7CiBJTlNFUlQgSU5UTyB0ZXN0X3N0YXRfdGFi KGtleSwgdmFsdWUpIFZBTFVFUygnazEnLCAxKSwgKCdrMicsIDEpLCAoJ2szJywgMSk7Citd KTsKKyRzMS0+ZG8oCisJcVsKIEJFR0lOOwogVVBEQVRFIHRlc3Rfc3RhdF90YWIgU0VUIHZh bHVlID0gdmFsdWUgKyAxIFdIRVJFIGtleSA9ICdrMSc7CiBdKTsKIAogIyBzMiBzZXR1cAot JHMyLT5xdWVyeV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VUIGxvZ19sb2NrX3dhaXRzID0g b247CiBCRUdJTjsKIFNFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIF0pOwog IyBzMiBibG9ja3MgaGVyZSBvbiBVUERBVEUKLSRzMi0+cXVlcnlfdW50aWwoCi0JcXIvbG9j a19zMi8sIHFbCi1cZWNobyBsb2NrX3MyCi1VUERBVEUgdGVzdF9zdGF0X3RhYiBTRVQgdmFs dWUgPSB2YWx1ZSArIDEgV0hFUkUga2V5ID0gJ2sxJzsKLV0pOworJHMyLT5kb19hc3luYyhx KFVQREFURSB0ZXN0X3N0YXRfdGFiIFNFVCB2YWx1ZSA9IHZhbHVlICsgMSBXSEVSRSBrZXkg PSAnazEnOykpOwogCiB3YWl0X2FuZF9kZXRhY2goJG5vZGUsICdkZWFkbG9jay10aW1lb3V0 LWZpcmVkJyk7CiAKQEAgLTE5Niw4ICsxOTUsOSBAQCAkbm9kZS0+d2FpdF9mb3JfbG9nKHFy L3N0aWxsIHdhaXRpbmcgZm9yIFNoYXJlTG9jayBvbiB0cmFuc2FjdGlvbi8sCiAJJGxvZ19v ZmZzZXQpOwogCiAjIGRlYWRsb2NrX3RpbWVvdXQgZmlyZWQsIG5vdyBjb21taXQgaW4gczEg YW5kIHMyCi0kczEtPnF1ZXJ5X3NhZmUocShDT01NSVQpKTsKLSRzMi0+cXVlcnlfc2FmZShx KENPTU1JVCkpOworJHMxLT5kbyhxKENPTU1JVCkpOworJHMyLT53YWl0X2Zvcl9jb21wbGV0 aW9uOworJHMyLT5kbyhxKENPTU1JVCkpOwogCiAjIGNoZWNrIHRoYXQgcGdfc3RhdF9sb2Nr IGhhcyBiZWVuIHVwZGF0ZWQKIHdhaXRfZm9yX3BnX3N0YXRfbG9jaygkbm9kZSwgJ3RyYW5z YWN0aW9uaWQnKTsKQEAgLTIwOCw4ICsyMDgsOCBAQCBvaygxLCAiTG9jayBzdGF0cyBvayBm b3IgdHJhbnNhY3Rpb25pZCIpOwogJG5vZGUtPndhaXRfZm9yX2xvZyhxci9hY3F1aXJlZCBT aGFyZUxvY2sgb24gdHJhbnNhY3Rpb24vLCAkbG9nX29mZnNldCk7CiAKICMgQ2xvc2Ugc2Vz c2lvbnMKLSRzMS0+cXVpdDsKLSRzMi0+cXVpdDsKKyRzMS0+Y2xvc2U7CiskczItPmNsb3Nl OwogCiAjIyMjIyMjIGFkdmlzb3J5IGxvY2sKIApAQCAtMjE3LDI1ICsyMTcsMjEgQEAgc2V0 dXBfc2Vzc2lvbnMoKTsKIAogJGxvZ19vZmZzZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKIAot JHMxLT5xdWVyeV9zYWZlKAorJHMxLT5kbygKIAlxWwogU0VMRUNUIHBnX3N0YXRfcmVzZXRf c2hhcmVkKCdsb2NrJyk7CiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxKTsKIF0pOwogCiAj IHMyIHNldHVwCi0kczItPnF1ZXJ5X3NhZmUoCiskczItPmRvKAogCXFbCiBTRVQgbG9nX2xv Y2tfd2FpdHMgPSBvbjsKIEJFR0lOOwogU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCgpOwogXSk7CiAjIHMyIGJsb2NrcyBvbiB0aGUgYWR2aXNvcnkgbG9jay4KLSRzMi0+cXVl cnlfdW50aWwoCi0JcXIvbG9ja19zMi8sIHFbCi1cZWNobyBsb2NrX3MyCi1TRUxFQ1QgcGdf YWR2aXNvcnlfbG9jaygxKTsKLV0pOworJHMyLT5kb19hc3luYyhxKFNFTEVDVCBwZ19hZHZp c29yeV9sb2NrKDEpOykpOwogCiB3YWl0X2FuZF9kZXRhY2goJG5vZGUsICdkZWFkbG9jay10 aW1lb3V0LWZpcmVkJyk7CiAKQEAgLTI0NCw4ICsyNDAsOSBAQCAkbm9kZS0+d2FpdF9mb3Jf bG9nKHFyL3N0aWxsIHdhaXRpbmcgZm9yIEV4Y2x1c2l2ZUxvY2sgb24gYWR2aXNvcnkgbG9j ay8sCiAJJGxvZ19vZmZzZXQpOwogCiAjIGRlYWRsb2NrX3RpbWVvdXQgZmlyZWQsIG5vdyB1 bmxvY2sgYW5kIGNvbW1pdCBzMgotJHMxLT5xdWVyeV9zYWZlKHEoU0VMRUNUIHBnX2Fkdmlz b3J5X3VubG9jaygxKSkpOwotJHMyLT5xdWVyeV9zYWZlKAorJHMxLT5kbyhxKFNFTEVDVCBw Z19hZHZpc29yeV91bmxvY2soMSkpKTsKKyRzMi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRz Mi0+ZG8oCiAJcVsKIFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMSk7CiBDT01NSVQ7CkBA IC0yNjAsOCArMjU3LDggQEAgb2soMSwgIkxvY2sgc3RhdHMgb2sgZm9yIGFkdmlzb3J5Iik7 CiAkbm9kZS0+d2FpdF9mb3JfbG9nKHFyL2FjcXVpcmVkIEV4Y2x1c2l2ZUxvY2sgb24gYWR2 aXNvcnkgbG9jay8sICRsb2dfb2Zmc2V0KTsKIAogIyBDbG9zZSBzZXNzaW9ucwotJHMxLT5x dWl0OwotJHMyLT5xdWl0OworJHMxLT5jbG9zZTsKKyRzMi0+Y2xvc2U7CiAKICMjIyMjIyMg RW5zdXJlIGxvZ19sb2NrX3dhaXRzIGhhcyBubyBpbXBhY3QKIApAQCAtMjY5LDcgKzI2Niw3 IEBAIHNldHVwX3Nlc3Npb25zKCk7CiAKICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGUtPmxvZ2Zp bGU7CiAKLSRzMS0+cXVlcnlfc2FmZSgKKyRzMS0+ZG8oCiAJcVsKIFNFTEVDVCBwZ19zdGF0 X3Jlc2V0X3NoYXJlZCgnbG9jaycpOwogQkVHSU47CkBAIC0yNzcsMjQgKzI3NCwyMSBAQCBM T0NLIFRBQkxFIHRlc3Rfc3RhdF90YWI7CiBdKTsKIAogIyBzMiBzZXR1cAotJHMyLT5xdWVy eV9zYWZlKAorJHMyLT5kbygKIAlxWwogU0VUIGxvZ19sb2NrX3dhaXRzID0gb2ZmOwogQkVH SU47CiBTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBdKTsKICMgczIgYmxv Y2tzIG9uIExPQ0suCi0kczItPnF1ZXJ5X3VudGlsKAotCXFyL2xvY2tfczIvLCBxWwotXGVj aG8gbG9ja19zMgotTE9DSyBUQUJMRSB0ZXN0X3N0YXRfdGFiOwotXSk7CiskczItPmRvX2Fz eW5jKHEoTE9DSyBUQUJMRSB0ZXN0X3N0YXRfdGFiOykpOwogCiB3YWl0X2FuZF9kZXRhY2go JG5vZGUsICdkZWFkbG9jay10aW1lb3V0LWZpcmVkJyk7CiAKICMgZGVhZGxvY2tfdGltZW91 dCBmaXJlZCwgbm93IGNvbW1pdCBpbiBzMSBhbmQgczIKLSRzMS0+cXVlcnlfc2FmZShxKENP TU1JVCkpOwotJHMyLT5xdWVyeV9zYWZlKHEoQ09NTUlUKSk7CiskczEtPmRvKHEoQ09NTUlU KSk7CiskczItPndhaXRfZm9yX2NvbXBsZXRpb247CiskczItPmRvKHEoQ09NTUlUKSk7CiAK ICMgY2hlY2sgdGhhdCBwZ19zdGF0X2xvY2sgaGFzIGJlZW4gdXBkYXRlZAogd2FpdF9mb3Jf cGdfc3RhdF9sb2NrKCRub2RlLCAncmVsYXRpb24nKTsKQEAgLTMxMCw4ICszMDQsOCBAQCBv ayggISRub2RlLT5sb2dfY29udGFpbnMoCiApOwogCiAjIGNsb3NlIHNlc3Npb25zCi0kczEt PnF1aXQ7Ci0kczItPnF1aXQ7CiskczEtPmNsb3NlOworJHMyLT5jbG9zZTsKIAogIyBjbGVh bnVwCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbRFJPUCBUQUJMRSB0ZXN0X3N0 YXRfdGFiO10pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21p c2MvdC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsCmluZGV4IDVmM2NjN2QyZmM1Li4w YjE1YjBiZGUwOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8w MTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9taXNjL3QvMDEzX3RlbXBfb2JqX211bHRpc2Vzc2lvbi5wbApAQCAtMjAsMjEgKzIwLDIx IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKLXVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpCYWNrZ3JvdW5kUHNxbDsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u OwogdXNlIFRlc3Q6Ok1vcmU7CiAKIG15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCd0ZW1wX2xvY2snKTsKICRub2RlLT5pbml0OwogJG5vZGUtPnN0YXJ0Owog Ci0jIE93bmVyIHNlc3Npb24uICBDcmVhdGVkIHZpYSBiYWNrZ3JvdW5kX3BzcWwgc28gaXQg c3RheXMgYWxpdmUgd2hpbGUKLSMgdGhlIHNlY29uZCBzZXNzaW9uIHByb2JlcyBpdHMgdGVt cCBvYmplY3RzLgotbXkgJHBzcWwxID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKKyMgT3duZXIgc2Vzc2lvbi4gIENyZWF0ZWQgYXMgYSBwZXJzaXN0ZW50IGxpYnBx IHNlc3Npb24gc28gaXQgc3RheXMgYWxpdmUKKyMgd2hpbGUgdGhlIHNlY29uZCBzZXNzaW9u IHByb2JlcyBpdHMgdGVtcCBvYmplY3RzLgorbXkgJHBzcWwxID0gUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOwogCiAjIEluaXRpYWxseSBjcmVhdGUg dGhlIHRhYmxlIHdpdGhvdXQgYW4gaW5kZXgsIHNvIHJlYWQgcGF0aHMgZ28gc3RyYWlnaHQK ICMgdGhyb3VnaCB0aGUgcmVhZC1zdHJlYW0gLyBidWZmZXItbWFuYWdlciBlbnRyeSBwb2lu dHMgd2l0aG91dCBiZWluZwogIyBtYXNrZWQgYnkgYW4gaW5kZXggc2NhbiB0aGF0IHdvdWxk IGhpdCBSZWFkQnVmZmVyX2NvbW1vbiBmcm9tIG5idHJlZS4KLSRwc3FsMS0+cXVlcnlfc2Fm ZShxKENSRUFURSBURU1QIFRBQkxFIGZvbyBBUyBTRUxFQ1QgNDIgQVMgdmFsOykpOworJHBz cWwxLT5kbyhxKENSRUFURSBURU1QIFRBQkxFIGZvbyBBUyBTRUxFQ1QgNDIgQVMgdmFsOykp OwogCiAjIFJlc29sdmUgdGhlIG93bmVyJ3MgdGVtcCBzY2hlbWEgc28gdGhlIHByb2Jpbmcg c2Vzc2lvbiBjYW4gcmVmZXIgdG8KICMgdGhlIHRhYmxlIGJ5IGEgZnVsbHktcXVhbGlmaWVk IG5hbWUuCkBAIC0xMzAsNyArMTMwLDcgQEAgbGlrZSgkc3RkZXJyLAogIyBOb3cgY3JlYXRl IGFuIGluZGV4IHRvIGV4ZXJjaXNlIHRoZSBpbmRleC1zY2FuIHBhdGguICBuYnRyZWUgY2Fs bHMKICMgUmVhZEJ1ZmZlciAod2hpY2ggaXMgUmVhZEJ1ZmZlckV4dGVuZGVkIC0+IFJlYWRC dWZmZXJfY29tbW9uKSwgc28KICMgdGhpcyBleGVyY2lzZXMgYSBkaWZmZXJlbnQgY2hhaW4g b2YgYnVmZmVyLW1hbmFnZXIgZW50cnkgcG9pbnRzLgotJHBzcWwxLT5xdWVyeV9zYWZlKHEo Q1JFQVRFIElOREVYIE9OIGZvbyh2YWwpOykpOworJHBzcWwxLT5kbyhxKENSRUFURSBJTkRF WCBPTiBmb28odmFsKTspKTsKIAogJG5vZGUtPnBzcWwoCiAJJ3Bvc3RncmVzJywKQEAgLTE1 Niw3ICsxNTYsNyBAQCBsaWtlKCRzdGRlcnIsIHFyL2Nhbm5vdCBhbHRlciB0ZW1wb3Jhcnkg dGFibGVzIG9mIG90aGVyIHNlc3Npb25zLywKICMgb3BlcmF0aW9ucyAtLSB0aGV5IGRvbid0 IHJlYWQgdGhlIHVuZGVybHlpbmcgdGFibGUgLS0gd2hpY2gKICMgZG9jdW1lbnRzIHRoZSBi b3VuZGFyeSBiZXR3ZWVuIGNhdGFsb2cgYW5kIGRhdGEgYWNjZXNzIGZvciB0ZW1wCiAjIG9i amVjdHMuCi0kcHNxbDEtPnF1ZXJ5X3NhZmUoCiskcHNxbDEtPmRvKAogCQlxW0NSRUFURSBG VU5DVElPTiBwZ190ZW1wLmZvb19pZChyIGZvbykgUkVUVVJOUyBpbnQgTEFOR1VBR0UgU1FM IF0KIAkgIC4gcVtBUyAnU0VMRUNUIHIudmFsJztdKTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBA IGlzKCRzdGRlcnIsICcnLCAnRFJPUCBUQUJMRSBpcyBhbGxvd2VkJyk7CiAjIGludG8gdGhl IGNyZWF0b3IncyBwZ190ZW1wIG5hbWVzcGFjZSB3aXRoIGFuIGF1dG8tZGVwZW5kZW5jeSBv bgogIyB0aGUgYm9ycm93ZWQgdHlwZSwgc28gaXQgZGlzYXBwZWFycyB0b2dldGhlciB3aXRo IHRoZSBzZXNzaW9uIHRoYXQKICMgY3JlYXRlZCBpdC4KLSRwc3FsMS0+cXVlcnlfc2FmZShx KENSRUFURSBURU1QIFRBQkxFIGZvbzIgQVMgU0VMRUNUIDQyIEFTIHZhbDspKTsKKyRwc3Fs MS0+ZG8ocShDUkVBVEUgVEVNUCBUQUJMRSBmb28yIEFTIFNFTEVDVCA0MiBBUyB2YWw7KSk7 CiAKICRub2RlLT5wc3FsKAogCSdwb3N0Z3JlcycsCkBAIC0yMTYsOCArMjE2LDggQEAgbXkg JGZvbzJfb2lkID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBDcm9zcy1zZXNz aW9uIExPQ0sgVEFCTEUgc2NlbmFyaW8uICBFbnN1cmUgdGhhdCBMb2NrUmVsYXRpb25PaWQg aXMgd29ya2luZwogIyBwcm9wZXJseSBmb3Igb3RoZXIgdGVtcCB0YWJsZXMgc2luY2UgdGhp cyBtZWNoYW5pc20gaXMgYWxzbyB1c2VkIGJ5CiAjIGF1dG92YWN1dW0gZHVyaW5nIG9ycGhh bmVkIHRhYmxlcyBjbGVhbnVwLgotbXkgJHBzcWwyID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKLSRwc3FsMi0+cXVlcnlfc2FmZSgKK215ICRwc3FsMiA9IFBvc3Rn cmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlKTsKKyRwc3FsMi0+ZG8o CiAJcXF7CiAJQkVHSU47CiAJTE9DSyBUQUJMRSAkdGVtcHNjaGVtYS5mb28yIElOIEFDQ0VT UyBTSEFSRSBNT0RFOwpAQCAtMjMzLDE1ICsyMzMsMTUgQEAgJHBzcWwyLT5xdWVyeV9zYWZl KAogIyBvd25lciB3aWxsIHRyeSB0byBhY3F1aXJlIGRlbGV0aW9uIGxvY2sgYWxsIGl0cyB0 ZW1wIG9iamVjdHMgdmlhCiAjIGZpbmREZXBlbmRlbnRPYmplY3RzLgogbXkgJGxvZ19vZmZz ZXQgPSAtcyAkbm9kZS0+bG9nZmlsZTsKLSRwc3FsMS0+cXVpdDsKKyRwc3FsMS0+Y2xvc2U7 CiAKICMgQ2hlY2sgd2hldGhlciBzZXNzaW9uLWV4aXQgY2xlYW51cCBpcyBibG9ja2VkLgog JG5vZGUtPndhaXRfZm9yX2xvZyhxci93YWl0aW5nIGZvciBBY2Nlc3NFeGNsdXNpdmVMb2Nr IG9uIHJlbGF0aW9uICRmb28yX29pZC8sCiAJJGxvZ19vZmZzZXQpOwogCiAjIFJlbGVhc2Ug bG9jayBvbiBmb28yIGFuZCBhbGxvdyBzZXNzaW9uLWV4aXQgY2xlYW51cCB0byBmaW5pc2gu Ci0kcHNxbDItPnF1ZXJ5X3NhZmUocShDT01NSVQ7KSk7Ci0kcHNxbDItPnF1aXQ7CiskcHNx bDItPmRvKHEoQ09NTUlUOykpOworJHBzcWwyLT5jbG9zZTsKIAogIyBBZnRlciByZWxlYXNp bmcgdGhlIGxvY2ssIHRoZSBvd25lciBjYW4gZmluYWxseSBhY3F1aXJlCiAjIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2sgb24gZm9vMiBhbmQgZmluaXNoIHNlc3Npb24tZXhpdCBjbGVhbnVwLiAg VmVyaWZ5CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMV9t dWx0aXhhY3QucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhh Y3QucGwKaW5kZXggZjZmNDU4OTVlYmQuLjJkODY0MzRkN2JjIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMV9tdWx0aXhhY3QucGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NscnUvdC8wMDFfbXVsdGl4YWN0LnBsCkBAIC02LDYgKzYsNyBA QCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9u OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAg LTMwLDggKzMxLDggQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBF WFRFTlNJT04gdGVzdF9zbHJ1KSk7CiAjIGxvc3QuCiAKICMgQ3JlYXRlIHRoZSBmaXJzdCBt dWx0aXhhY3QKLW15ICRiZ19wc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKLW15ICRtdWx0aTEgPSAkYmdfcHNxbC0+cXVlcnlfc2FmZShxKFNFTEVDVCB0ZXN0 X2NyZWF0ZV9tdWx0aXhhY3QoKTspKTsKK215ICRiZ19zZXNzaW9uID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworbXkgJG11bHRpMSA9ICRiZ19z ZXNzaW9uLT5xdWVyeV9vbmV2YWwocShTRUxFQ1QgdGVzdF9jcmVhdGVfbXVsdGl4YWN0KCk7 KSk7CiAKICMgQXNzaWduIHRoZSBtaWRkbGUgbXVsdGl4YWN0LiBVc2UgYW4gaW5qZWN0aW9u IHBvaW50IHRvIHByZXZlbnQgaXQKICMgZnJvbSBiZWluZyBmdWxseSByZWNvcmRlZC4KQEAg LTM5LDExICs0MCw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAlxe1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnbXVsdGl4YWN0LWNyZWF0ZS1mcm9tLW1lbWJl cnMnLCd3YWl0Jyk7fQogKTsKIAotJGJnX3BzcWwtPnF1ZXJ5X3VudGlsKAotCXFyL2Fzc2ln bmluZyBsb3N0IG11bHRpLywgcSgKLVxlY2hvIGFzc2lnbmluZyBsb3N0IG11bHRpCi0JU0VM RUNUIHRlc3RfY3JlYXRlX211bHRpeGFjdCgpOwotKSk7CisjIFN0YXJ0IHRoZSBzZWNvbmQg bXVsdGl4YWN0IGNyZWF0aW9uIGFzeW5jaHJvbm91c2x5IC0gaXQgd2lsbCBibG9jayBhdAor IyB0aGUgaW5qZWN0aW9uIHBvaW50CiskYmdfc2Vzc2lvbi0+ZG9fYXN5bmMocShTRUxFQ1Qg dGVzdF9jcmVhdGVfbXVsdGl4YWN0KCk7KSk7CiAKICRub2RlLT53YWl0X2Zvcl9ldmVudCgn Y2xpZW50IGJhY2tlbmQnLCAnbXVsdGl4YWN0LWNyZWF0ZS1mcm9tLW1lbWJlcnMnKTsKICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTUyLDEwICs1MSwxMCBAQCAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAjIENyZWF0ZSB0aGUgdGhpcmQgbXVsdGl4aWQKIG15 ICRtdWx0aTIgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIHRlc3Rf Y3JlYXRlX211bHRpeGFjdCgpO30pOwogCi0jIEFsbCBzZXQgYW5kIGRvbmUsIGl0J3MgdGlt ZSBmb3IgaGFyZCByZXN0YXJ0CisjIEFsbCBzZXQgYW5kIGRvbmUsIGl0J3MgdGltZSBmb3Ig aGFyZCByZXN0YXJ0LiBUaGUgYmFja2dyb3VuZCBzZXNzaW9uCisjIHdpbGwgYmUgdGVybWlu YXRlZCBieSB0aGUgY3Jhc2guCiAkbm9kZS0+c3RvcCgnaW1tZWRpYXRlJyk7CiAkbm9kZS0+ c3RhcnQ7Ci0kYmdfcHNxbC0+e3J1bn0tPmZpbmlzaDsKIAogIyBWZXJpZnkgdGhhdCB0aGUg cmVjb3JkZWQgbXVsdGl4aWRzIGFyZSByZWFkYWJsZQogaXMoICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXF7U0VMRUNUIHRlc3RfcmVhZF9tdWx0aXhhY3QoJyRtdWx0aTEnKTt9 KSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFf ZW1lcmdlbmN5X3ZhY3V1bS5wbCBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQv dC8wMDFfZW1lcmdlbmN5X3ZhY3V1bS5wbAppbmRleCAyMTNmOTA1MmVkMi4uMzA0MDc2NzM1 YjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDFf ZW1lcmdlbmN5X3ZhY3V1bS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3hpZF93cmFwYXJv dW5kL3QvMDAxX2VtZXJnZW5jeV92YWN1dW0ucGwKQEAgLTQsNiArNCw3IEBACiB1c2Ugc3Ry aWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC00NywxNyArNDgs MTAgQEAgQ1JFQVRFIFRBQkxFIHNtYWxsX3RydW5jKGlkIHNlcmlhbCBwcmltYXJ5IGtleSwg ZGF0YSB0ZXh0LCBmaWxsZXIgdGV4dCBkZWZhdWx0IHIKIElOU0VSVCBJTlRPIHNtYWxsX3Ry dW5jKGRhdGEpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxNTAwMCk7CiBdKTsKIAotIyBC dW1wIHRoZSBxdWVyeSB0aW1lb3V0IHRvIGF2b2lkIGZhbHNlIG5lZ2F0aXZlcyBvbiBzbG93 IHRlc3Qgc3lzdGVtcy4KLW15ICRwc3FsX3RpbWVvdXRfc2VjcyA9IDQgKiAkUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsKLQogIyBTdGFydCBhIGJhY2tncm91 bmQgc2Vzc2lvbiwgd2hpY2ggaG9sZHMgYSB0cmFuc2FjdGlvbiBvcGVuLCBwcmV2ZW50aW5n CiAjIGF1dG92YWN1dW0gZnJvbSBhZHZhbmNpbmcgcmVsZnJvemVueGlkIGFuZCBkYXRmcm96 ZW54aWQuCi1teSAkYmFja2dyb3VuZF9wc3FsID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgK LQkncG9zdGdyZXMnLAotCW9uX2Vycm9yX3N0b3AgPT4gMCwKLQl0aW1lb3V0ID0+ICRwc3Fs X3RpbWVvdXRfc2Vjcyk7Ci0kYmFja2dyb3VuZF9wc3FsLT5zZXRfcXVlcnlfdGltZXJfcmVz dGFydCgpOwotJGJhY2tncm91bmRfcHNxbC0+cXVlcnlfc2FmZSgKK215ICRiYWNrZ3JvdW5k X3Nlc3Npb24gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZSk7CiskYmFja2dyb3VuZF9zZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlERUxFVEUg RlJPTSBsYXJnZSBXSEVSRSBpZCAlIDIgPSAwOwpAQCAtODksOCArODMsOCBAQCBteSAkbG9n X29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOwogCiAjIEZpbmlzaCB0aGUgb2xkIHRyYW5z YWN0aW9uLCB0byBhbGxvdyB2YWN1dW0gZnJlZXppbmcgdG8gYWR2YW5jZQogIyByZWxmcm96 ZW54aWQgYW5kIGRhdGZyb3plbnhpZCBhZ2Fpbi4KLSRiYWNrZ3JvdW5kX3BzcWwtPnF1ZXJ5 X3NhZmUocXFbQ09NTUlUXSk7Ci0kYmFja2dyb3VuZF9wc3FsLT5xdWl0OworJGJhY2tncm91 bmRfc2Vzc2lvbi0+ZG8ocXFbQ09NTUlUO10pOworJGJhY2tncm91bmRfc2Vzc2lvbi0+Y2xv c2U7CiAKICMgV2FpdCB1bnRpbCBhdXRvdmFjdXVtIHByb2Nlc3NlZCBhbGwgdGFibGVzIGFu ZCBhZHZhbmNlZCB0aGUKICMgc3lzdGVtLXdpZGUgb2xkZXN0LVhJRC4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8wMDJfbGltaXRzLnBsIGIvc3Jj L3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwMl9saW1pdHMucGwKaW5kZXggODY2 MzJhOGQ1MTAuLjBlZjY3ZDBmNGI4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3hp ZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3hp ZF93cmFwYXJvdW5kL3QvMDAyX2xpbWl0cy5wbApAQCAtMTAsNiArMTAsNyBAQAogdXNlIHN0 cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIHVzZSBUaW1lOjpIaVJl cyBxdyh1c2xlZXApOwpAQCAtMjksNiArMzAsOCBAQCAkbm9kZS0+YXBwZW5kX2NvbmYoCiAJ J3Bvc3RncmVzcWwuY29uZicsIHFxWwogYXV0b3ZhY3V1bV9uYXB0aW1lID0gMXMKIGxvZ19h dXRvdmFjdXVtX21pbl9kdXJhdGlvbiA9IDAKK2xvZ19jb25uZWN0aW9ucyA9IG9uCitsb2df c3RhdGVtZW50ID0gJ2FsbCcKIF0pOwogJG5vZGUtPnN0YXJ0OwogJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiB4aWRfd3JhcGFyb3VuZCcpOwpAQCAt NDEsMTYgKzQ0LDEwIEBAIENSRUFURSBUQUJMRSB3cmFwYXJvdW5kdGVzdCh0IHRleHQpIFdJ VEggKGF1dG92YWN1dW1fZW5hYmxlZCA9IG9mZik7CiBJTlNFUlQgSU5UTyB3cmFwYXJvdW5k dGVzdCBWQUxVRVMgKCdzdGFydCcpOwogXSk7CiAKLSMgQnVtcCB0aGUgcXVlcnkgdGltZW91 dCB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMgb24gc2xvdyB0ZXN0IHN5c3RlbXMuCi1teSAk cHNxbF90aW1lb3V0X3NlY3MgPSA0ICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1l b3V0X2RlZmF1bHQ7Ci0KICMgU3RhcnQgYSBiYWNrZ3JvdW5kIHNlc3Npb24sIHdoaWNoIGhv bGRzIGEgdHJhbnNhY3Rpb24gb3BlbiwgcHJldmVudGluZwogIyBhdXRvdmFjdXVtIGZyb20g YWR2YW5jaW5nIHJlbGZyb3plbnhpZCBhbmQgZGF0ZnJvemVueGlkLgotbXkgJGJhY2tncm91 bmRfcHNxbCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoCi0JJ3Bvc3RncmVzJywKLQlvbl9l cnJvcl9zdG9wID0+IDAsCi0JdGltZW91dCA9PiAkcHNxbF90aW1lb3V0X3NlY3MpOwotJGJh Y2tncm91bmRfcHNxbC0+cXVlcnlfc2FmZSgKK215ICRiYWNrZ3JvdW5kX3Nlc3Npb24gPSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZSk7CiskYmFja2dy b3VuZF9zZXNzaW9uLT5kbygKIAlxcVsKIAlCRUdJTjsKIAlJTlNFUlQgSU5UTyB3cmFwYXJv dW5kdGVzdCBWQUxVRVMgKCdvbGR4YWN0Jyk7CkBAIC0xMDgsOCArMTA1LDggQEAgbGlrZSgK IAogIyBGaW5pc2ggdGhlIG9sZCB0cmFuc2FjdGlvbiwgdG8gYWxsb3cgdmFjdXVtIGZyZWV6 aW5nIHRvIGFkdmFuY2UKICMgcmVsZnJvemVueGlkIGFuZCBkYXRmcm96ZW54aWQgYWdhaW4u Ci0kYmFja2dyb3VuZF9wc3FsLT5xdWVyeV9zYWZlKHFxW0NPTU1JVF0pOwotJGJhY2tncm91 bmRfcHNxbC0+cXVpdDsKKyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmRvKHFxW0NPTU1JVDtdKTsK KyRiYWNrZ3JvdW5kX3Nlc3Npb24tPmNsb3NlOwogCiAjIFZBQ1VVTSwgdG8gZnJlZXplIHRo ZSB0YWJsZXMgYW5kIGFkdmFuY2UgZGF0ZnJvemVueGlkLgogIwpAQCAtMTIyLDggKzExOSw4 IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZBQ1VVTScpOwogIyB0aGUgc3lz dGVtLXdpZGUgb2xkZXN0LVhJRC4KICRyZXQgPQogICAkbm9kZS0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAotCXFxW0lOU0VSVCBJTlRPIHdyYXBhcm91bmR0ZXN0IFZBTFVFUyAo J2FmdGVyIFZBQ1VVTScpXSwKLQknSU5TRVJUIDAgMScpOworCXFxW0lOU0VSVCBJTlRPIHdy YXBhcm91bmR0ZXN0IFZBTFVFUyAoJ2FmdGVyIFZBQ1VVTScpIFJFVFVSTklORyB0cnVlXSwK KwkJCQkJCSApOwogCiAjIENoZWNrIHRoZSB0YWJsZSBjb250ZW50cwogJHJldCA9ICRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICogZnJvbSB3cmFwYXJvdW5kdGVz dF0pOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAw NF9ub3RpZnlfZnJlZXplLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90 LzAwNF9ub3RpZnlfZnJlZXplLnBsCmluZGV4IGQwYTFmMWZlMmZjLi5mMmZhNGU1YTZiOSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy94aWRfd3JhcGFyb3VuZC90LzAwNF9ub3Rp ZnlfZnJlZXplLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMveGlkX3dyYXBhcm91bmQvdC8w MDRfbm90aWZ5X2ZyZWV6ZS5wbApAQCAtNyw2ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFRlc3Q6Ok1vcmU7CiAK IG15ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlJyk7CkBA IC0yNCw5ICsyNSw5IEBAICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAknQUxURVIg REFUQUJBU0UgdGVtcGxhdGUwIFdJVEggQUxMT1dfQ09OTkVDVElPTlMgdHJ1ZScpOwogCiAj IFN0YXJ0IFNlc3Npb24gMSBhbmQgbGVhdmUgaXQgaWRsZSBpbiB0cmFuc2FjdGlvbgotbXkg JHBzcWxfc2Vzc2lvbjEgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwot JHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2xpc3RlbiBzOycpOwotJHBzcWxfc2Vzc2lv bjEtPnF1ZXJ5X3NhZmUoJ2JlZ2luOycpOworbXkgJHNlc3Npb24xID0gUG9zdGdyZVNRTDo6 VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJHNlc3Npb24xLT5kbygnTElT VEVOIHMnKTsKKyRzZXNzaW9uMS0+ZG8oJ0JFR0lOJyk7CiAKICMgU2VuZCBzb21lIG5vdGlm eXMgZnJvbSBvdGhlciBzZXNzaW9ucwogZm9yIG15ICRpICgxIC4uIDEwKQpAQCAtNTQsMTgg KzU1LDIwIEBAIG15ICRkYXRhZnJvbnplbnhpZF9mcmVlemUgPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJInNlbGVjdCBtaW4oZGF0ZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQp IGZyb20gcGdfZGF0YWJhc2UiKTsKIG9rKCRkYXRhZnJvbnplbnhpZF9mcmVlemUgPiAkZGF0 YWZyb256ZW54aWQsICdkYXRmcm96ZW54aWQgYWR2YW5jZWQnKTsKIAotIyBPbiBTZXNzaW9u IDEsIGNvbW1pdCBhbmQgZW5zdXJlIHRoYXQgdGhlIGFsbCB0aGUgbm90aWZpY2F0aW9ucyBh cmUKKyMgT24gU2Vzc2lvbiAxLCBjb21taXQgYW5kIGVuc3VyZSB0aGF0IGFsbCB0aGUgbm90 aWZpY2F0aW9ucyBhcmUKICMgcmVjZWl2ZWQuIFRoaXMgZGVwZW5kcyBvbiBjb3JyZWN0bHkg ZnJlZXppbmcgdGhlIFhJRHMgaW4gdGhlIHBlbmRpbmcKICMgbm90aWZpY2F0aW9uIGVudHJp ZXMuCi1teSAkcmVzID0gJHBzcWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoJ2NvbW1pdDsnKTsK LW15ICRub3RpZmljYXRpb25zX2NvdW50ID0gMDsKLWZvcmVhY2ggbXkgJGkgKHNwbGl0KCdc bicsICRyZXMpKQorJHNlc3Npb24xLT5kbygnQ09NTUlUJyk7CisKK215ICRub3RpZmljYXRp b25zID0gJHNlc3Npb24xLT5nZXRfYWxsX25vdGlmaWNhdGlvbnMoKTsKK2lzKHNjYWxhcihA JG5vdGlmaWNhdGlvbnMpLCAxMCwgJ3JlY2VpdmVkIGFsbCBjb21taXR0ZWQgbm90aWZpY2F0 aW9ucycpOworCitteSAkZXhwZWN0ZWRfcGF5bG9hZCA9IDE7Citmb3JlYWNoIG15ICRub3Rp ZnkgKEAkbm90aWZpY2F0aW9ucykKIHsKLQkkbm90aWZpY2F0aW9uc19jb3VudCsrOwotCWxp a2UoJGksCi0JCXFyL0FzeW5jaHJvbm91cyBub3RpZmljYXRpb24gInMiIHdpdGggcGF5bG9h ZCAiJG5vdGlmaWNhdGlvbnNfY291bnQiIHJlY2VpdmVkLwotCSk7CisJaXMoJG5vdGlmeS0+ e2NoYW5uZWx9LCAncycsICJub3RpZmljYXRpb24gJGV4cGVjdGVkX3BheWxvYWQgaGFzIGNv cnJlY3QgY2hhbm5lbCIpOworCWlzKCRub3RpZnktPntwYXlsb2FkfSwgJGV4cGVjdGVkX3Bh eWxvYWQsICJub3RpZmljYXRpb24gJGV4cGVjdGVkX3BheWxvYWQgaGFzIGNvcnJlY3QgcGF5 bG9hZCIpOworCSRleHBlY3RlZF9wYXlsb2FkKys7CiB9Ci1pcygkbm90aWZpY2F0aW9uc19j b3VudCwgMTAsICdyZWNlaXZlZCBhbGwgY29tbWl0dGVkIG5vdGlmaWNhdGlvbnMnKTsKIAog ZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wb3N0bWFzdGVyL3QvMDAy 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 ZS5wbAppbmRleCBhYTczZDNlMTA2Yy4uOWZlMDM3YmIwYTEgMTAwNjQ0Ci0tLSBhL3NyYy90 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 X2NyYXNoX3Jlc3RhcnQucGwKaW5kZXggMGZkZTkyMDcxM2UuLmI2MmIwMDAwZWRmIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxM19jcmFzaF9yZXN0YXJ0LnBsCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDEzX2NyYXNoX3Jlc3RhcnQucGwKQEAgLTE0OSw3ICsx NDksNyBAQCBvayggcHVtcF91bnRpbCgKICRtb25pdG9yLT5maW5pc2g7CiAKICMgV2FpdCB0 aWxsIHNlcnZlciByZXN0YXJ0cwotaXMoJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywgdW5kZWYsICcnKSwKK2lzKCRub2RlLT5wb2xsX3VudGlsX2Nvbm5lY3Rpb24oJ3Bv c3RncmVzJyksCiAJIjEiLCAicmVjb25uZWN0ZWQgYWZ0ZXIgU0lHUVVJVCIpOwogCiAKQEAg LTIzOCw3ICsyMzgsNyBAQCBvayggcHVtcF91bnRpbCgKICRtb25pdG9yLT5maW5pc2g7CiAK 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 ZWNvdmVyeS90LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwKaW5kZXggZjg5 MjJhYWExYTIuLmVmMTZlMGE4NzQwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90 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 cGxpY2F0aW9uX3Nsb3QoJ3Rlc3Rfc2xvdCcpOyIpOwpAQCAtMTA1OSwxMyArMTA1Nyw4IEBA ICRzdGFuZGJ5Mi0+cmVsb2FkOwogIyBzeW5jaHJvbml6YXRpb24gdW50aWwgdGhlIHJlbW90 ZSBzbG90IGNhdGNoZXMgdXAuCiAjIFRoZSBBUEkgd2lsbCBub3QgcmV0dXJuIHVudGlsIHRo aXMgaGFwcGVucywgdG8gYmUgYWJsZSB0byBtYWtlCiAjIGZ1cnRoZXIgY2FsbHMsIGNhbGwg dGhlIEFQSSBpbiBhIGJhY2tncm91bmQgcHJvY2Vzcy4KLW15ICRoID0gJHN0YW5kYnkyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGgt PnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0LywgcSgKLQlcZWNobyBzdGFydAotCVNFTEVDVCBw Z19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Ci0JKSk7CitteSAkaCA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRzdGFuZGJ5Mik7CiskaC0+ZG9fYXN5bmMo cShTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlvbl9zbG90cygpOykpOwogCiAjIENvbmZpcm0g dGhhdCB0aGUgc2xvdCBzeW5jIGlzIHNraXBwZWQgZHVlIHRvIHRoZSByZW1vdGUgc2xvdCBs YWdnaW5nIGJlaGluZAogJHN0YW5kYnkyLT53YWl0X2Zvcl9sb2coCkBAIC0xMTA0LDYgKzEw OTcsNyBAQCAkc3RhbmRieTItPndhaXRfZm9yX2xvZygKIAlxci9uZXdseSBjcmVhdGVkIHJl cGxpY2F0aW9uIHNsb3QgXCJsc3ViMV9zbG90XCIgaXMgc3luYy1yZWFkeSBub3cvLAogCSRs b2dfb2Zmc2V0KTsKIAotJGgtPnF1aXQ7CiskaC0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRo LT5jbG9zZTsKIAogZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwgYi9zcmMvdGVzdC9yZWNvdmVy eS90LzA0MV9jaGVja3BvaW50X2F0X3Byb21vdGUucGwKaW5kZXggZDA3ODNmZWY5YWUuLmZj YzAxMzM0NTg5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0MV9jaGVja3Bv aW50X2F0X3Byb21vdGUucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDFfY2hlY2tw b2ludF9hdF9wcm9tb3RlLnBsCkBAIC00LDYgKzQsNyBAQAogdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7CiB1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKIHVzZSBUZXN0OjpNb3Jl OwpAQCAtNzAsMTEgKzcxLDkgQEAgJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAjIEV4ZWN1dGUgYSByZXN0YXJ0IHBvaW50IG9uIHRoZSBzdGFuZGJ5LCB0aGF0IHdl IHdpbGwgbm93IGJlIHdhaXRpbmcgb24uCiAjIFRoaXMgbmVlZHMgdG8gYmUgaW4gdGhlIGJh Y2tncm91bmQuCiBteSAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwot bXkgJHBzcWxfc2Vzc2lvbiA9Ci0gICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgn cG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDApOwotJHBzcWxfc2Vzc2lvbi0+cXVlcnlf dW50aWwoCi0JcXIvc3RhcnRpbmdfY2hlY2twb2ludC8sIHEoCi0gICBcZWNobyBzdGFydGlu Z19jaGVja3BvaW50CitteSAkcHNxbF9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGU9PiAkbm9kZV9zdGFuZGJ5KTsKKyRwc3FsX3Nlc3Npb24tPmRvX2Fz eW5jKAorCXEoCiAgICBDSEVDS1BPSU5UOwogKSk7CiAKQEAgLTE1OSw3ICsxNTgsNyBAQCBv ayggcHVtcF91bnRpbCgKICRraWxsbWUtPmZpbmlzaDsKIAogIyBXYWl0IHRpbGwgc2VydmVy IGZpbmlzaGVzIHJlc3RhcnRpbmcuCi0kbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsIHVuZGVmLCAnJyk7Ciskbm9kZV9zdGFuZGJ5LT5wb2xsX3VudGlsX2Nv bm5lY3Rpb24oJ3Bvc3RncmVzJyk7CiAKICMgQWZ0ZXIgcmVjb3ZlcnksIHRoZSBzZXJ2ZXIg c2hvdWxkIGJlIGFibGUgdG8gc3RhcnQuCiBteSAkc3Rkb3V0OwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDJfbG93X2xldmVsX2JhY2t1cC5wbCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDQyX2xvd19sZXZlbF9iYWNrdXAucGwKaW5kZXggZGY0YWUwMjlmZTYuLjU4 NDg5NDgyMzQxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Ml9sb3dfbGV2 ZWxfYmFja3VwLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2xvd19sZXZlbF9i YWNrdXAucGwKQEAgLTEwLDYgKzEwLDcgQEAgdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwn OwogdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CiB1c2UgRmlsZTo6UGF0aCBxdyhybXRyZWUp OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6U2Vzc2lvbjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpN b3JlOwogCkBAIC0yMCwxMSArMjEsMTAgQEAgJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CiAKICMg U3RhcnQgYmFja3VwLgogbXkgJGJhY2t1cF9uYW1lID0gJ2JhY2t1cDEnOwotbXkgJHBzcWwg PSAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitteSAkcHNx bCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3ByaW1h cnkpOwogCi0kcHNxbC0+cXVlcnlfc2FmZSgiU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgVE8g V0FSTklORyIpOwotJHBzcWwtPnNldF9xdWVyeV90aW1lcl9yZXN0YXJ0OwotJHBzcWwtPnF1 ZXJ5X3NhZmUoInNlbGVjdCBwZ19iYWNrdXBfc3RhcnQoJ3Rlc3QgbGFiZWwnKSIpOworJHBz cWwtPmRvKCJTRVQgY2xpZW50X21pbl9tZXNzYWdlcyBUTyBXQVJOSU5HIik7CiskcHNxbC0+ cXVlcnkoInNlbGVjdCBwZ19iYWNrdXBfc3RhcnQoJ3Rlc3QgbGFiZWwnKSIpOwogCiAjIENv cHkgZmlsZXMuCiBteSAkYmFja3VwX2RpciA9ICRub2RlX3ByaW1hcnktPmJhY2t1cF9kaXIg LiAnLycgLiAkYmFja3VwX25hbWU7CkBAIC04MSw5ICs4MSw5IEBAIG15ICRzdG9wX3NlZ21l bnRfbmFtZSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCiAjIFN0 b3AgYmFja3VwIGFuZCBnZXQgYmFja3VwX2xhYmVsLCB0aGUgbGFzdCBzZWdtZW50IGlzIGFy Y2hpdmVkLgogbXkgJGJhY2t1cF9sYWJlbCA9Ci0gICRwc3FsLT5xdWVyeV9zYWZlKCJzZWxl Y3QgbGFiZWxmaWxlIGZyb20gcGdfYmFja3VwX3N0b3AoKSIpOworICAkcHNxbC0+cXVlcnlf b25ldmFsKCJzZWxlY3QgbGFiZWxmaWxlIGZyb20gcGdfYmFja3VwX3N0b3AoKSIpOwogCi0k cHNxbC0+cXVpdDsKKyRwc3FsLT5jbG9zZTsKIAogIyBSYXRoZXIgdGhhbiB3cml0aW5nIG91 dCBiYWNrdXBfbGFiZWwsIHRyeSB0byByZWNvdmVyIHRoZSBiYWNrdXAgd2l0aG91dAogIyBi YWNrdXBfbGFiZWwgdG8gZGVtb25zdHJhdGUgdGhhdCByZWNvdmVyeSB3aWxsIG5vdCB3b3Jr IGNvcnJlY3RseSB3aXRob3V0IGl0LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNDZfY2hlY2twb2ludF9sb2dpY2FsX3Nsb3QucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90 LzA0Nl9jaGVja3BvaW50X2xvZ2ljYWxfc2xvdC5wbAppbmRleCA2Njc2MWJmNTZjMS4uM2E0 NmYyMGZjMjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNrcG9p bnRfbG9naWNhbF9zbG90LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ2X2NoZWNr cG9pbnRfbG9naWNhbF9zbG90LnBsCkBAIC04LDYgKzgsNyBAQCB1c2Ugc3RyaWN0OwogdXNl IHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogCiB1c2UgVGVzdDo6TW9yZTsKQEAgLTUyLDEzICs1MywxMCBAQCAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7Y2hlY2twb2ludH0pOwogCiAjIEdlbmVyYXRlIHNvbWUgdHJhbnNhY3Rpb25zIHRv IGdldCBSVU5OSU5HX1hBQ1RTLgotbXkgJHhhY3RzID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKLSR4YWN0cy0+cXVlcnlfdW50aWwoCi0JcXIvcnVuX3hhY3RzLywK LQlxKFxlY2hvIHJ1bl94YWN0cwotU0VMRUNUIDEgXHdhdGNoIDAuMQotXHEKLSkpOworZm9y IChteSAkaSA9IDA7ICRpIDwgMTA7ICRpKyspCit7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnU0VMRUNUIDEnKTsKK30KIAogJG5vZGUtPmFkdmFuY2Vfd2FsKDIwKTsKIApA QCAtNzIsMTYgKzcwLDExIEBAICRub2RlLT5hZHZhbmNlX3dhbCgyMCk7CiAjIHJlbW92aW5n IG9sZCBXQUwgc2VnbWVudHMuCiBub3RlKCdzdGFydGluZyBjaGVja3BvaW50Jyk7CiAKLW15 ICRjaGVja3BvaW50ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRj aGVja3BvaW50LT5xdWVyeV9zYWZlKAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CXEoc2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja3BvaW50LWJlZm9yZS1v bGQtd2FsLXJlbW92YWwnLCd3YWl0JykpCiApOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3VudGls KAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQvLAotCXEoXGVjaG8gc3RhcnRpbmdfY2hlY2tw b2ludAotY2hlY2twb2ludDsKLVxxCi0pKTsKK215ICRjaGVja3BvaW50ID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJGNoZWNrcG9pbnQtPmRv X2FzeW5jKHEoQ0hFQ0tQT0lOVDspKTsKIAogIyBXYWl0IHVudGlsIHRoZSBjaGVja3BvaW50 IHN0b3BzIHJpZ2h0IGJlZm9yZSByZW1vdmluZyBXQUwgc2VnbWVudHMuCiBub3RlKCd3YWl0 aW5nIGZvciBpbmplY3Rpb25fcG9pbnQnKTsKQEAgLTkwLDE3ICs4MywyMSBAQCBub3RlKCdp bmplY3Rpb25fcG9pbnQgaXMgcmVhY2hlZCcpOwogCiAjIFRyeSB0byBhZHZhbmNlIHRoZSBs b2dpY2FsIHNsb3QsIGJ1dCBtYWtlIGl0IHN0b3Agd2hlbiBpdCBtb3ZlcyB0byB0aGUgbmV4 dAogIyBXQUwgc2VnbWVudCAodGhpcyBoYXMgdG8gaGFwcGVuIGluIHRoZSBiYWNrZ3JvdW5k LCB0b28pLgotbXkgJGxvZ2ljYWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycpOwotJGxvZ2ljYWwtPnF1ZXJ5X3NhZmUoCisjIFdlIG5lZWQgdG8gY2FsbCBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMgcmVwZWF0ZWRseSB1bnRpbCB0aGUgc2xvdAorIyBhZHZh bmNlcyB0byB0aGUgbmV4dCBzZWdtZW50IGFuZCBoaXRzIHRoZSBpbmplY3Rpb24gcG9pbnQu CitteSAkbG9naWNhbCA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlKTsKKyRsb2dpY2FsLT5kbygKIAlxe3NlbGVjdCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgnbG9naWNhbC1yZXBsaWNhdGlvbi1zbG90LWFkdmFuY2Utc2VnbWVudCcsJ3dhaXQn KTt9CiApOwotJGxvZ2ljYWwtPnF1ZXJ5X3VudGlsKAotCXFyL2dldF9jaGFuZ2VzLywKLQlx KAotXGVjaG8gZ2V0X2NoYW5nZXMKLXNlbGVjdCBjb3VudCgqKSBmcm9tIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlcygnc2xvdF9sb2dpY2FsJywgbnVsbCwgbnVsbCkgXHdhdGNoIDEK LVxxCi0pKTsKKyRsb2dpY2FsLT5kb19hc3luYygKKwlxe0RPICQkCisJQkVHSU4KKwkJTE9P UAorCQkJUEVSRk9STSBjb3VudCgqKSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl cygnc2xvdF9sb2dpY2FsJywgbnVsbCwgbnVsbCk7CisJCQlQRVJGT1JNIHBnX3NsZWVwKDAu MSk7CisJCUVORCBMT09QOworCUVORCAkJDt9CispOwogCiAjIFdhaXQgdW50aWwgdGhlIHNs b3QncyByZXN0YXJ0X2xzbiBwb2ludHMgdG8gdGhlIG5leHQgV0FMIHNlZ21lbnQuCiBub3Rl KCd3YWl0aW5nIGZvciBpbmplY3Rpb25fcG9pbnQnKTsKQEAgLTEzOCwxMiArMTM1LDggQEAg ZXZhbCB7CiB9OwogaXMoJEAsICcnLCAiTG9naWNhbCBzbG90IHN0aWxsIHZhbGlkIik7CiAK LSMgSWYgd2Ugc2VuZCBccSB3aXRoICQ8cHNxbF9zZXNzaW9uPi0+cXVpdCB0aGUgY29tbWFu ZCBjYW4gYmUgc2VudCB0byB0aGUKLSMgc2Vzc2lvbiBhbHJlYWR5IGNsb3NlZC4gU28gXHEg aXMgaW4gaW5pdGlhbCBzY3JpcHQsIGhlcmUgd2Ugb25seSBmaW5pc2gKLSMgSVBDOjpSdW4K LSR4YWN0cy0+e3J1bn0tPmZpbmlzaDsKLSRjaGVja3BvaW50LT57cnVufS0+ZmluaXNoOwot JGxvZ2ljYWwtPntydW59LT5maW5pc2g7CisjIFNlc3Npb25zIHdlcmUgdGVybWluYXRlZCBi eSB0aGUgc2VydmVyIGNyYXNoIGFuZCB3aWxsIGJlIGNsZWFuZWQgdXAKKyMgYXV0b21hdGlj YWxseSB3aGVuIHRoZXkgZ28gb3V0IG9mIHNjb3BlLgogCiAjIFZlcmlmeSB0aGF0IHRoZSBz eW5jaHJvbml6ZWQgc2xvdHMgd29uJ3QgYmUgaW52YWxpZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0 ZXIKICMgc3luY2hyb25pemF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZiBhIGNvbmN1cnJlbnQg Y2hlY2twb2ludC4KQEAgLTE4NSwxNSArMTc4LDExIEBAICRwcmltYXJ5LT53YWl0X2Zvcl9y ZXBsYXlfY2F0Y2h1cCgkc3RhbmRieSk7CiAjIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVm b3JlIGludmFsaWRhdGluZyByZXBsaWNhdGlvbiBzbG90cy4KIG5vdGUoJ3N0YXJ0aW5nIGNo ZWNrcG9pbnQnKTsKIAotJGNoZWNrcG9pbnQgPSAkc3RhbmRieS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOwotJGNoZWNrcG9pbnQtPnF1ZXJ5X3NhZmUoCiskc3RhbmRieS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJcShzZWxlY3QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2go J3Jlc3RhcnRwb2ludC1iZWZvcmUtc2xvdC1pbnZhbGlkYXRpb24nLCd3YWl0JykpCiApOwot JGNoZWNrcG9pbnQtPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQvLAot CXEoXGVjaG8gc3RhcnRpbmdfY2hlY2twb2ludAotY2hlY2twb2ludDsKLSkpOworJGNoZWNr cG9pbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkc3RhbmRi eSk7CiskY2hlY2twb2ludC0+ZG9fYXN5bmMocShDSEVDS1BPSU5UOykpOwogCiAjIFdhaXQg dW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMgcmlnaHQgYmVmb3JlIGludmFsaWRhdGluZyBz bG90cwogbm90ZSgnd2FpdGluZyBmb3IgaW5qZWN0aW9uX3BvaW50Jyk7CkBAIC0yMTYsNyAr MjA1LDggQEAgJHN0YW5kYnktPnNhZmVfcHNxbCgKIAlxe3NlbGVjdCBpbmplY3Rpb25fcG9p bnRzX3dha2V1cCgncmVzdGFydHBvaW50LWJlZm9yZS1zbG90LWludmFsaWRhdGlvbicpOwog CSAgc2VsZWN0IGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZXN0YXJ0cG9pbnQtYmVmb3Jl LXNsb3QtaW52YWxpZGF0aW9uJyl9KTsKIAotJGNoZWNrcG9pbnQtPnF1aXQ7CiskY2hlY2tw b2ludC0+d2FpdF9mb3JfY29tcGxldGlvbjsKKyRjaGVja3BvaW50LT5jbG9zZTsKIAogIyBD b25maXJtIHRoYXQgdGhlIHNsb3QgaXMgbm90IGludmFsaWRhdGVkCiBpcyggJHN0YW5kYnkt PnNhZmVfcHNxbCgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3X2NoZWNr cG9pbnRfcGh5c2ljYWxfc2xvdC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3X2NoZWNr cG9pbnRfcGh5c2ljYWxfc2xvdC5wbAppbmRleCA0MzM0MTQ1YWJlMS4uNDMxOTNjMjE5YmEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ3X2NoZWNrcG9pbnRfcGh5c2lj YWxfc2xvdC5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0N19jaGVja3BvaW50X3Bo eXNpY2FsX3Nsb3QucGwKQEAgLTgsNiArOCw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fybmlu Z3MgRkFUQUwgPT4gJ2FsbCc7CiAKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb247CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiAKIHVzZSBUZXN0OjpNb3JlOwpAQCAtNjksMTYgKzcwLDExIEBAIG5vdGUoInJl c3RhcnQgbHNuIGJlZm9yZSBjaGVja3BvaW50OiAkcmVzdGFydF9sc25faW5pdCIpOwogIyBy ZW1vdmluZyBvbGQgV0FMIHNlZ21lbnRzLgogbm90ZSgnc3RhcnRpbmcgY2hlY2twb2ludCcp OwogCi1teSAkY2hlY2twb2ludCA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7Ci0kY2hlY2twb2ludC0+cXVlcnlfc2FmZSgKK215ICRjaGVja3BvaW50ID0gUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGUpOworJGNoZWNrcG9pbnQt PmRvKAogCXF7c2VsZWN0IGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdjaGVja3BvaW50LWJl Zm9yZS1vbGQtd2FsLXJlbW92YWwnLCd3YWl0Jyl9CiApOwotJGNoZWNrcG9pbnQtPnF1ZXJ5 X3VudGlsKAotCXFyL3N0YXJ0aW5nX2NoZWNrcG9pbnQvLAotCXEoXGVjaG8gc3RhcnRpbmdf Y2hlY2twb2ludAotY2hlY2twb2ludDsKLVxxCi0pKTsKKyRjaGVja3BvaW50LT5kb19hc3lu YygnY2hlY2twb2ludCcpOwogCiAjIFdhaXQgdW50aWwgdGhlIGNoZWNrcG9pbnQgc3RvcHMg cmlnaHQgYmVmb3JlIHJlbW92aW5nIFdBTCBzZWdtZW50cy4KIG5vdGUoJ3dhaXRpbmcgZm9y IGluamVjdGlvbl9wb2ludCcpOwpAQCAtMTA0LDcgKzEwMCwxMSBAQCBteSAkcmVzdGFydF9s c25fb2xkID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogY2hvbXAoJHJlc3RhcnRf bHNuX29sZCk7CiBub3RlKCJyZXN0YXJ0IGxzbiBiZWZvcmUgc3RvcDogJHJlc3RhcnRfbHNu X29sZCIpOwogCi0jIEFicnVwdGx5IHN0b3AgdGhlIHNlcnZlci4KKyRjaGVja3BvaW50LT53 YWl0X2Zvcl9jb21wbGV0aW9uKCk7CiskY2hlY2twb2ludC0+Y2xvc2UoKTsKKworIyBBYnJ1 cHRseSBzdG9wIHRoZSBzZXJ2ZXIgKDEgc2Vjb25kIHNob3VsZCBiZSBlbm91Z2ggZm9yIHRo ZSBjaGVja3BvaW50CisjIHRvIGZpbmlzaDsgaXQgd291bGQgYmUgYmV0dGVyKS4KICRub2Rl LT5zdG9wKCdpbW1lZGlhdGUnKTsKIAogJG5vZGUtPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNDhfdmFjdXVtX2hvcml6b25fZmxvb3IucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzA0OF92YWN1dW1faG9yaXpvbl9mbG9vci5wbAppbmRleCA1MmFjYjU1 NjFkNi4uYTQ4N2JlMDRkYzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ4 X3ZhY3V1bV9ob3Jpem9uX2Zsb29yLnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQ4 X3ZhY3V1bV9ob3Jpem9uX2Zsb29yLnBsCkBAIC00NSwxMiArNDUsMTAgQEAgbXkgJG9yaWdf Y29ubmluZm8gPSAkbm9kZV9wcmltYXJ5LT5jb25uc3RyKCk7CiBteSAkdGFibGUxID0gInZh Y19ob3Jpem9uX2Zsb29yX3RhYmxlIjsKIAogIyBMb25nLXJ1bm5pbmcgUHJpbWFyeSBTZXNz aW9uIEEKLW15ICRwc3FsX3ByaW1hcnlBID0KLSAgJG5vZGVfcHJpbWFyeS0+YmFja2dyb3Vu ZF9wc3FsKCR0ZXN0X2RiLCBvbl9lcnJvcl9zdG9wID0+IDEpOworbXkgJHNlc3Npb25fcHJp bWFyeUEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9kZV9w cmltYXJ5LCBkYm5hbWUgPT4gJHRlc3RfZGIpOwogCiAjIExvbmctcnVubmluZyBQcmltYXJ5 IFNlc3Npb24gQgotbXkgJHBzcWxfcHJpbWFyeUIgPQotICAkbm9kZV9wcmltYXJ5LT5iYWNr Z3JvdW5kX3BzcWwoJHRlc3RfZGIsIG9uX2Vycm9yX3N0b3AgPT4gMSk7CitteSAkc2Vzc2lv bl9wcmltYXJ5QiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRu b2RlX3ByaW1hcnksIGRibmFtZSA9PiAkdGVzdF9kYik7CiAKICMgT3VyIHRlc3QgcmVsaWVz IG9uIHR3byByb3VuZHMgb2YgaW5kZXggdmFjdXVtaW5nIGZvciByZWFzb25zIGVsYWJvcmF0 ZWQKICMgbGF0ZXIuIFRvIHRyaWdnZXIgdHdvIHJvdW5kcyBvZiBpbmRleCB2YWN1dW1pbmcs IHdlIG11c3QgZmlsbCB1cCB0aGUKQEAgLTEyMyw3ICsxMjEsNyBAQCAkbm9kZV9yZXBsaWNh LT5wb2xsX3F1ZXJ5X3VudGlsKAogIyBOb3cgaW5zZXJ0IGFuZCB1cGRhdGUgYSB0dXBsZSB3 aGljaCB3aWxsIGJlIHZpc2libGUgdG8gdGhlIHZhY3V1bSBvbiB0aGUKICMgcHJpbWFyeSBi dXQgd2hpY2ggd2lsbCBoYXZlIHhtYXggbmV3ZXIgdGhhbiB0aGUgb2xkZXN0IHhtaW4gb24g dGhlIHN0YW5kYnkKICMgdGhhdCB3YXMgcmVjZW50bHkgZGlzY29ubmVjdGVkLgotbXkgJHJl cyA9ICRwc3FsX3ByaW1hcnlBLT5xdWVyeV9zYWZlKAorbXkgJHJlcyA9ICRzZXNzaW9uX3By aW1hcnlBLT5xdWVyeSgKIAlxcVsKIAkJSU5TRVJUIElOVE8gJHRhYmxlMSBWQUxVRVMgKDk5 KTsKIAkJVVBEQVRFICR0YWJsZTEgU0VUIGNvbDEgPSAxMDAgV0hFUkUgY29sMSA9IDk5OwpA QCAtMTMyLDcgKzEzMCw3IEBAIG15ICRyZXMgPSAkcHNxbF9wcmltYXJ5QS0+cXVlcnlfc2Fm ZSgKICk7CiAKICMgTWFrZSBzdXJlIHRoZSBVUERBVEUgZmluaXNoZWQKLWxpa2UoJHJlcywg cXIvXmFmdGVyX3VwZGF0ZSQvbSwgIlVQREFURSBvY2N1cnJlZCBvbiBwcmltYXJ5IHNlc3Np b24gQSIpOworbGlrZSgkcmVzLT57cHNxbG91dH0sIHFyL15hZnRlcl91cGRhdGUkL20sICJV UERBVEUgb2NjdXJyZWQgb24gcHJpbWFyeSBzZXNzaW9uIEEiKTsKIAogIyBPcGVuIGEgY3Vy c29yIG9uIHRoZSBwcmltYXJ5IHdob3NlIHBpbiB3aWxsIGtlZXAgVkFDVVVNIGZyb20gZ2V0 dGluZyBhCiAjIGNsZWFudXAgbG9jayBvbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgcmVsYXRp b24uIFdlIHdhbnQgVkFDVVVNIHRvIGJlIGFibGUgdG8KQEAgLTE0NSw3ICsxNDMsNyBAQCBt eSAkcHJpbWFyeV9jdXJzb3IxID0gInZhY19ob3Jpem9uX2Zsb29yX2N1cnNvcjEiOwogIyBU aGUgZmlyc3QgdmFsdWUgaW5zZXJ0ZWQgaW50byB0aGUgdGFibGUgd2FzIGEgNywgc28gRkVU Q0ggRk9SV0FSRCBzaG91bGQKICMgcmV0dXJuIGEgNy4gVGhhdCdzIGhvdyB3ZSBrbm93IHRo ZSBjdXJzb3IgaGFzIGEgcGluLgogIyBEaXNhYmxlIGluZGV4IHNjYW5zIHNvIHRoZSBjdXJz b3IgcGlucyBoZWFwIHBhZ2VzIGFuZCBub3QgaW5kZXggcGFnZXMuCi0kcmVzID0gJHBzcWxf cHJpbWFyeUItPnF1ZXJ5X3NhZmUoCiskcmVzID0gJHNlc3Npb25fcHJpbWFyeUItPnF1ZXJ5 KAogCXFxWwogCUJFR0lOOwogCVNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKQEAgLTE1 NiwxMSArMTU0LDExIEBAICRyZXMgPSAkcHNxbF9wcmltYXJ5Qi0+cXVlcnlfc2FmZSgKIAld CiApOwogCi1pcygkcmVzLCA3LCBxcVtDdXJzb3IgcXVlcnkgcmV0dXJuZWQgJHJlcy4gRXhw ZWN0ZWQgdmFsdWUgNy5dKTsKK2lzKCRyZXMtPntwc3Fsb3V0fSwgNywgcXFbQ3Vyc29yIHF1 ZXJ5IHJldHVybmVkICRyZXMtPntwc3Fsb3V0fS4gRXhwZWN0ZWQgdmFsdWUgNy5dKTsKIAog IyBHZXQgdGhlIFBJRCBvZiB0aGUgc2Vzc2lvbiB3aGljaCB3aWxsIHJ1biB0aGUgVkFDVVVN IEZSRUVaRSBzbyB0aGF0IHdlIGNhbgogIyB1c2UgaXQgdG8gZmlsdGVyIHBnX3N0YXRfYWN0 aXZpdHkgbGF0ZXIuCi1teSAkdmFjdXVtX3BpZCA9ICRwc3FsX3ByaW1hcnlBLT5xdWVyeV9z YWZlKCJTRUxFQ1QgcGdfYmFja2VuZF9waWQoKTsiKTsKK215ICR2YWN1dW1fcGlkID0gJHNl c3Npb25fcHJpbWFyeUEtPnF1ZXJ5X29uZXZhbCgiU0VMRUNUIHBnX2JhY2tlbmRfcGlkKCk7 Iik7CiAKICMgTm93IHN0YXJ0IGEgVkFDVVVNIEZSRUVaRSBvbiB0aGUgcHJpbWFyeS4gSXQg d2lsbCBjYWxsIHZhY3V1bV9nZXRfY3V0b2ZmcygpCiAjIGFuZCBlc3RhYmxpc2ggdmFsdWVz IG9mIE9sZGVzdFhtaW4gYW5kIEdsb2JhbFZpc1N0YXRlIHdoaWNoIGFyZSBuZXdlciB0aGFu CkBAIC0xNzYsMTQgKzE3NCw4IEBAIG15ICR2YWN1dW1fcGlkID0gJHBzcWxfcHJpbWFyeUEt PnF1ZXJ5X3NhZmUoIlNFTEVDVCBwZ19iYWNrZW5kX3BpZCgpOyIpOwogIyBwYWdlcyBvZiB0 aGUgaGVhcCBtdXN0IGJlIHByb2Nlc3NlZCBpbiBvcmRlciBieSBhIHNpbmdsZSB3b3JrZXIg dG8gZW5zdXJlCiAjIHRlc3Qgc3RhYmlsaXR5IChQQVJBTExFTCAwIHNob3VsZG4ndCBiZSBu ZWNlc3NhcnkgYnV0IGd1YXJkcyBhZ2FpbnN0IHRoZQogIyBwb3NzaWJpbGl0eSBvZiBwYXJh bGxlbCBoZWFwIHZhY3V1bWluZykuCi0kcHNxbF9wcmltYXJ5QS0+e3N0ZGlufSAuPSBxcVsK LQkJU0VUIG1haW50ZW5hbmNlX2lvX2NvbmN1cnJlbmN5ID0gMDsKLQkJVkFDVVVNIChWRVJC T1NFLCBGUkVFWkUsIFBBUkFMTEVMIDApICR0YWJsZTE7Ci0JCVxcZWNobyBWQUNVVU0KLSAg ICAgICAgXTsKLQotIyBNYWtlIHN1cmUgdGhlIFZBQ1VVTSBjb21tYW5kIG1ha2VzIGl0IHRv IHRoZSBzZXJ2ZXIuCi0kcHNxbF9wcmltYXJ5QS0+e3J1bn0tPnB1bXBfbmIoKTsKKyRzZXNz aW9uX3ByaW1hcnlBLT5kbygnU0VUIG1haW50ZW5hbmNlX2lvX2NvbmN1cnJlbmN5ID0gMDsn KTsKKyRzZXNzaW9uX3ByaW1hcnlBLT5kb19hc3luYygiVkFDVVVNIChWRVJCT1NFLCBGUkVF WkUsIFBBUkFMTEVMIDApICR0YWJsZTE7Iik7CiAKICMgTWFrZSBzdXJlIHRoYXQgdGhlIFZB Q1VVTSBoYXMgYWxyZWFkeSBjYWxsZWQgdmFjdXVtX2dldF9jdXRvZmZzKCkgYW5kIGlzCiAj IGp1c3Qgd2FpdGluZyBvbiB0aGUgbG9jayB0byBzdGFydCB2YWN1dW1pbmcuIFdlIGRvbid0 IHdhbnQgdGhlIHN0YW5kYnkgdG8KQEAgLTIyOSw3ICsyMjEsNyBAQCAkbm9kZV9wcmltYXJ5 LT5wb2xsX3F1ZXJ5X3VudGlsKAogIyBleHBlY3QgdGhhdCBhIHJvdW5kIG9mIGluZGV4IHZh Y3V1bWluZyBoYXMgaGFwcGVuZWQgYW5kIHRoYXQgdGhlIHZhY3V1bSBpcwogIyBub3cgd2Fp dGluZyBmb3IgdGhlIGN1cnNvciB0byByZWxlYXNlIGl0cyBwaW4gb24gdGhlIGxhc3QgcGFn ZSBvZiB0aGUKICMgcmVsYXRpb24uCi0kcmVzID0gJHBzcWxfcHJpbWFyeUItPnF1ZXJ5X3Nh ZmUoIkZFVENIICRwcmltYXJ5X2N1cnNvcjEiKTsKKyRyZXMgPSAkc2Vzc2lvbl9wcmltYXJ5 Qi0+cXVlcnlfb25ldmFsKCJGRVRDSCAkcHJpbWFyeV9jdXJzb3IxIik7CiBpcygkcmVzLCA3 LAogCXFxW0N1cnNvciBxdWVyeSByZXR1cm5lZCAkcmVzIGZyb20gc2Vjb25kIGZldGNoLiBF eHBlY3RlZCB2YWx1ZSA3Ll0pOwogCkBAIC0yNDMsMTMgKzIzNSw3IEBAICRub2RlX3ByaW1h cnktPnBvbGxfcXVlcnlfdW50aWwoCiAJXSwgJ3QnKTsKIAogIyBDb21taXQgdGhlIHRyYW5z YWN0aW9uIHdpdGggdGhlIG9wZW4gY3Vyc29yIHNvIHRoYXQgdGhlIFZBQ1VVTSBjYW4gZmlu aXNoLgotJHBzcWxfcHJpbWFyeUItPnF1ZXJ5X3VudGlsKAotCXFyL15jb21taXQkL20sCi0J cXFbCi0JCQlDT01NSVQ7Ci0JCQlcXGVjaG8gY29tbWl0Ci0gICAgICAgIF0KLSk7Ciskc2Vz c2lvbl9wcmltYXJ5Qi0+ZG8oJ0NPTU1JVCcpOwogCiAjIFZBQ1VVTSBwcm9jZWVkcyB3aXRo IHBydW5pbmcgYW5kIGRvZXMgYSB2aXNpYmlsaXR5IGNoZWNrIG9uIGVhY2ggdHVwbGUuIElu CiAjIG9sZGVyIHZlcnNpb25zIG9mIFBvc3RncmVzLCBwcnVuaW5nIGZvdW5kIG91ciBmaW5h bCBkZWFkIHR1cGxlCkBAIC0yODEsOCArMjY3LDggQEAgJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCR0ZXN0X2RiLCAiSU5TRVJUIElOVE8gJHRhYmxlMSBWQUxVRVMgKDEpOyIpOwogJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9yZXBsaWNhLCAncmVwbGF5Jywg JHByaW1hcnlfbHNuKTsKIAogIyMgU2h1dCBkb3duIHBzcWxzCi0kcHNxbF9wcmltYXJ5QS0+ cXVpdDsKLSRwc3FsX3ByaW1hcnlCLT5xdWl0OworJHNlc3Npb25fcHJpbWFyeUEtPmNsb3Nl OworJHNlc3Npb25fcHJpbWFyeUItPmNsb3NlOwogCiAkbm9kZV9yZXBsaWNhLT5zdG9wKCk7 CiAkbm9kZV9wcmltYXJ5LT5zdG9wKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVy eS90LzA0OV93YWl0X2Zvcl9sc24ucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0 X2Zvcl9sc24ucGwKaW5kZXggYmMyMTYwNjQ3MTQuLjk5MTFlNWJmYTA0IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKKysrIGIvc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3JfbHNuLnBsCkBAIC01LDYgKzUsNyBAQCB1c2Ug c3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTIyMSwy MCArMjIyLDE1IEBAIG9rKCRvdXRwdXQgZXEgInRpbWVvdXQiLCAiV0FJVCBGT1IgcmV0dXJu cyBjb3JyZWN0IHN0YXR1cyBhZnRlciB0aW1lb3V0Iik7CiBteSAkc3VieGFjdF9sc24gPSAk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2luc2VydF9sc24oKSArIDEwMDAwMDAwMDAwIik7CiBteSAkc3VieGFjdF9hcHBu YW1lID0gJ3dhaXRfZm9yX2xzbl9zdWJ4YWN0X2NsZWFudXAnOwotbXkgJHN1YnhhY3Rfc2Vz c2lvbiA9Ci0gICRub2RlX3ByaW1hcnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBv bl9lcnJvcl9zdG9wID0+IDApOwotJHN1YnhhY3Rfc2Vzc2lvbi0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnQvLCBxcVsKLQlTRVQgYXBwbGljYXRpb25fbmFtZSA9ICckc3VieGFjdF9hcHBu YW1lJzsKLQlCRUdJTjsKLQlTQVZFUE9JTlQgd2FpdF9jbGVhbnVwOwotCVxcZWNobyBzdGFy dAotCVdBSVQgRk9SIExTTiAnJHtzdWJ4YWN0X2xzbn0nIFdJVEggKE1PREUgJ3ByaW1hcnlf Zmx1c2gnKTsKLQlST0xMQkFDSyBUTyB3YWl0X2NsZWFudXA7Ci0JV0FJVCBGT1IgTFNOICck e3N1YnhhY3RfbHNufScKLQkJV0lUSCAoTU9ERSAncHJpbWFyeV9mbHVzaCcsIHRpbWVvdXQg JzEwbXMnLCBub190aHJvdyk7Ci0JQ09NTUlUOwotXSk7CitteSAkc3VieGFjdF9zZXNzaW9u ID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFy eSk7CisjIFNlbmQgdGhlIHNldHVwIHN0YXRlbWVudHMgaW5kaXZpZHVhbGx5IHNvIHRoZSBm aXJzdCBXQUlUIEZPUiBMU04gY2FuIGJlCisjIGlzc3VlZCBhc3luY2hyb25vdXNseTogaXQg YmxvY2tzICh0aGUgdGFyZ2V0IExTTiBpcyB1bnJlYWNoYWJsZSkgYW5kIHdpbGwKKyMgYmUg Y2FuY2VsZWQgYmVsb3cuCiskc3VieGFjdF9zZXNzaW9uLT5kbygiU0VUIGFwcGxpY2F0aW9u X25hbWUgPSAnJHN1YnhhY3RfYXBwbmFtZSciKTsKKyRzdWJ4YWN0X3Nlc3Npb24tPmRvKCJC RUdJTiIpOworJHN1YnhhY3Rfc2Vzc2lvbi0+ZG8oIlNBVkVQT0lOVCB3YWl0X2NsZWFudXAi KTsKKyRzdWJ4YWN0X3Nlc3Npb24tPmRvX2FzeW5jKAorCSJXQUlUIEZPUiBMU04gJyR7c3Vi eGFjdF9sc259JyBXSVRIIChNT0RFICdwcmltYXJ5X2ZsdXNoJykiKTsKICRub2RlX3ByaW1h cnktPnBvbGxfcXVlcnlfdW50aWwoCiAJJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCop ID0gMSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkKQEAgLTI0OCwxOCArMjQ0LDMwIEBAIG15ICRz dWJ4YWN0X2NhbmNlbGxlZCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKIAkgICBBTkQg d2FpdF9ldmVudCA9ICdXYWl0Rm9yV2FsRmx1c2gnIgogKTsKIGlzKCRzdWJ4YWN0X2NhbmNl bGxlZCwgJ3QnLCAiY2FuY2VsZWQgV0FJVCBGT1IgTFNOIGluIHN1YnRyYW5zYWN0aW9uIik7 Ci0kc3VieGFjdF9zZXNzaW9uLT5xdWl0OwotY2hvbXAoJHN1YnhhY3Rfc2Vzc2lvbi0+e3N0 ZG91dH0pOworCisjIFRoZSBjYW5jZWwgaW50ZXJydXB0cyB0aGUgYmxvY2tpbmcgV0FJVCBG T1IgTFNOLCBsZWF2aW5nIHRoZSB0cmFuc2FjdGlvbgorIyBpbiBhbiBhYm9ydGVkIHN0YXRl LgorbXkgJHN1YnhhY3RfY2FuY2VsX3JlcyA9ICRzdWJ4YWN0X3Nlc3Npb24tPmdldF9hc3lu Y19yZXN1bHQoKTsKIGxpa2UoCi0JJHN1YnhhY3Rfc2Vzc2lvbi0+e3N0ZGVycn0sCisJJHN1 YnhhY3RfY2FuY2VsX3Jlcy0+e2Vycm9yX21lc3NhZ2V9LAogCXFyL2NhbmNlbGluZyBzdGF0 ZW1lbnQgZHVlIHRvIHVzZXIgcmVxdWVzdC8sCiAJInF1ZXJ5IGNhbmNlbCBpbnRlcnJ1cHRl ZCBXQUlUIEZPUiBMU04gaW4gc3VidHJhbnNhY3Rpb24iKTsKLWlzKCRzdWJ4YWN0X3Nlc3Np b24tPntzdGRvdXR9LAorCisjIFJvbGwgYmFjayB0byB0aGUgc2F2ZXBvaW50IHNvIGEgc2Vj b25kIFdBSVQgRk9SIExTTiBjYW4gcmVnaXN0ZXIgYWdhaW4gaW4KKyMgdGhlIHNhbWUgYmFj a2VuZDsgd2l0aCBub190aHJvdyBpdCByZXR1cm5zICd0aW1lb3V0JyByYXRoZXIgdGhhbiBl cnJvcmluZy4KKyRzdWJ4YWN0X3Nlc3Npb24tPmRvKCJST0xMQkFDSyBUTyB3YWl0X2NsZWFu dXAiKTsKK215ICRzdWJ4YWN0X3RpbWVvdXQgPSAkc3VieGFjdF9zZXNzaW9uLT5xdWVyeV9v bmV2YWwoCisJIldBSVQgRk9SIExTTiAnJHtzdWJ4YWN0X2xzbn0nCisJCVdJVEggKE1PREUg J3ByaW1hcnlfZmx1c2gnLCB0aW1lb3V0ICcxMG1zJywgbm9fdGhyb3cpIik7Citpcygkc3Vi eGFjdF90aW1lb3V0LAogCSJ0aW1lb3V0IiwgInNlY29uZCBXQUlUIEZPUiBMU04gdGltZWQg b3V0IGFmdGVyIHNhdmVwb2ludCByb2xsYmFjayIpOwotdW5saWtlKAotCSRzdWJ4YWN0X3Nl c3Npb24tPntzdGRlcnJ9LAotCXFyL3NlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5l eHBlY3RlZGx5LywKKworIyBUaGUgYmFja2VuZCBzdXJ2aXZlZCB0aGUgY2FuY2VsIHdpdGhv dXQgZGlzY29ubmVjdGluZzogdGhlIGNvbm5lY3Rpb24gaXMKKyMgc3RpbGwgdXNhYmxlLgor aXMoJHN1YnhhY3Rfc2Vzc2lvbi0+cXVlcnlfb25ldmFsKCdTRUxFQ1QgMScpLCAnMScsCiAJ IldBSVQgRk9SIExTTiBhZnRlciBzYXZlcG9pbnQgcm9sbGJhY2sgZGlkIG5vdCBkaXNjb25u ZWN0Iik7Ciskc3VieGFjdF9zZXNzaW9uLT5kbygiQ09NTUlUIik7Ciskc3VieGFjdF9zZXNz aW9uLT5jbG9zZTsKIAogIyA1LiBDaGVjayBtb2RlIHZhbGlkYXRpb246IHN0YW5kYnkgbW9k ZXMgZXJyb3Igb24gcHJpbWFyeSwgcHJpbWFyeSBtb2RlIGVycm9ycwogIyBvbiBzdGFuZGJ5 LCBhbmQgcHJpbWFyeV9mbHVzaCB3b3JrcyBvbiBwcmltYXJ5LiAgQWxzbyBjaGVjayB0aGF0 IFdBSVQgRk9SCkBAIC00NjcsMTAgKzQ3NSw4IEBAIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7 ICRpKyspCiAJbXkgJGxzbiA9CiAJICAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkiKTsKLQkkcHNx bF9zZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJyk7Ci0JJHBzcWxfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQv LCBxcVsKLQkJXFxlY2hvIHN0YXJ0CisJJHBzcWxfc2Vzc2lvbnNbJGldID0gUG9zdGdyZVNR TDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfc3RhbmRieSk7CisJJHBzcWxf c2Vzc2lvbnNbJGldLT5kb19hc3luYyhxcVsKIAkJV0FJVCBGT1IgTFNOICcke2xzbn0nOwog CQlTRUxFQ1QgbG9nX2NvdW50KCR7aX0pOwogCV0pOwpAQCAtNDgxLDcgKzQ4Nyw4IEBAICRu b2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX3dhbF9yZXBs YXlfcmVzdW1lKCk7Iik7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewogCSRu b2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygiY291bnQgJHtpfSIsICRsb2dfb2Zmc2V0KTsK LQkkcHNxbF9zZXNzaW9uc1skaV0tPnF1aXQ7CisJJHBzcWxfc2Vzc2lvbnNbJGldLT53YWl0 X2Zvcl9jb21wbGV0aW9uOworCSRwc3FsX3Nlc3Npb25zWyRpXS0+Y2xvc2U7CiB9CiAKIG9r KDEsICdtdWx0aXBsZSBzdGFuZGJ5X3JlcGxheSB3YWl0ZXJzIHJlcG9ydGVkIGNvbnNpc3Rl bnQgZGF0YScpOwpAQCAtNTA1LDEwICs1MTIsOCBAQCBmb3IgKG15ICRpID0gMDsgJGkgPCA1 OyAkaSsrKQogbXkgQHdyaXRlX3Nlc3Npb25zOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNTsg JGkrKykKIHsKLQkkd3JpdGVfc2Vzc2lvbnNbJGldID0gJG5vZGVfc3RhbmRieS0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSR3cml0ZV9zZXNzaW9uc1skaV0tPnF1ZXJ5X3Vu dGlsKAotCQlxci9zdGFydC8sIHFxWwotCQlcXGVjaG8gc3RhcnQKKwkkd3JpdGVfc2Vzc2lv bnNbJGldID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVf c3RhbmRieSk7CisJJHdyaXRlX3Nlc3Npb25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJCVdBSVQg Rk9SIExTTiAnJHdyaXRlX2xzbnNbJGldJyBXSVRIIChNT0RFICdzdGFuZGJ5X3dyaXRlJywg dGltZW91dCAnMWQnKTsKIAkJU0VMRUNUIGxvZ193YWl0X2RvbmUoJ3dyaXRlX2RvbmUnLCAk aSk7CiAJXSk7CkBAIC01MjcsNyArNTMyLDggQEAgcmVzdW1lX3dhbHJlY2VpdmVyKCRub2Rl X3N0YW5kYnkpOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIHsKIAkkbm9kZV9z dGFuZGJ5LT53YWl0X2Zvcl9sb2coIndyaXRlX2RvbmUgJGkiLCAkd3JpdGVfbG9nX29mZnNl dCk7Ci0JJHdyaXRlX3Nlc3Npb25zWyRpXS0+cXVpdDsKKwkkd3JpdGVfc2Vzc2lvbnNbJGld LT53YWl0X2Zvcl9jb21wbGV0aW9uOworCSR3cml0ZV9zZXNzaW9uc1skaV0tPmNsb3NlOwog fQogCiAjIFZlcmlmeSBvbiBzdGFuZGJ5IHRoYXQgV0FMIHdhcyB3cml0dGVuIHVwIHRvIHRo ZSB0YXJnZXQgTFNOCkBAIC01NTcsMTAgKzU2Myw4IEBAIGZvciAobXkgJGkgPSAwOyAkaSA8 IDU7ICRpKyspCiBteSBAZmx1c2hfc2Vzc2lvbnM7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1 OyAkaSsrKQogewotCSRmbHVzaF9zZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFuZGJ5LT5iYWNr Z3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJGZsdXNoX3Nlc3Npb25zWyRpXS0+cXVlcnlf dW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSRmbHVzaF9zZXNz aW9uc1skaV0gPSBQb3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uLT5uZXcobm9kZSA9PiAkbm9k ZV9zdGFuZGJ5KTsKKwkkZmx1c2hfc2Vzc2lvbnNbJGldLT5kb19hc3luYyhxcVsKIAkJV0FJ VCBGT1IgTFNOICckZmx1c2hfbHNuc1skaV0nIFdJVEggKE1PREUgJ3N0YW5kYnlfZmx1c2gn LCB0aW1lb3V0ICcxZCcpOwogCQlTRUxFQ1QgbG9nX3dhaXRfZG9uZSgnZmx1c2hfZG9uZScs ICRpKTsKIAldKTsKQEAgLTU3OSw3ICs1ODMsOCBAQCByZXN1bWVfd2FscmVjZWl2ZXIoJG5v ZGVfc3RhbmRieSk7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewogCSRub2Rl X3N0YW5kYnktPndhaXRfZm9yX2xvZygiZmx1c2hfZG9uZSAkaSIsICRmbHVzaF9sb2dfb2Zm c2V0KTsKLQkkZmx1c2hfc2Vzc2lvbnNbJGldLT5xdWl0OworCSRmbHVzaF9zZXNzaW9uc1sk aV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJGZsdXNoX3Nlc3Npb25zWyRpXS0+Y2xvc2U7 CiB9CiAKICMgVmVyaWZ5IG9uIHN0YW5kYnkgdGhhdCBXQUwgd2FzIGZsdXNoZWQgdXAgdG8g dGhlIHRhcmdldCBMU04KQEAgLTYxNSwxMCArNjIwLDggQEAgbXkgQG1peGVkX3Nlc3Npb25z OwogbXkgQG1peGVkX21vZGVzID0gKCdzdGFuZGJ5X3JlcGxheScsICdzdGFuZGJ5X3dyaXRl JywgJ3N0YW5kYnlfZmx1c2gnKTsKIGZvciAobXkgJGkgPSAwOyAkaSA8IDY7ICRpKyspCiB7 Ci0JJG1peGVkX3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKLQkkbWl4ZWRfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgKLQkJ cXIvc3RhcnQvLCBxcVsKLQkJXFxlY2hvIHN0YXJ0CisJJG1peGVkX3Nlc3Npb25zWyRpXSA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N0YW5kYnkp OworCSRtaXhlZF9zZXNzaW9uc1skaV0tPmRvX2FzeW5jKHFxWwogCQlXQUlUIEZPUiBMU04g JyR7bWl4ZWRfdGFyZ2V0X2xzbn0nIFdJVEggKE1PREUgJyRtaXhlZF9tb2Rlc1skaSAlIDNd JywgdGltZW91dCAnMWQnKTsKIAkJU0VMRUNUIGxvZ193YWl0X2RvbmUoJ21peGVkX2RvbmUn LCAkaSk7CiAJXSk7CkBAIC02NDIsNyArNjQ1LDggQEAgcmVzdW1lX3dhbHJlY2VpdmVyKCRu b2RlX3N0YW5kYnkpOwogZm9yIChteSAkaSA9IDA7ICRpIDwgNjsgJGkrKykKIHsKIAkkbm9k ZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2coIm1peGVkX2RvbmUgJGkiLCAkbWl4ZWRfbG9nX29m ZnNldCk7Ci0JJG1peGVkX3Nlc3Npb25zWyRpXS0+cXVpdDsKKwkkbWl4ZWRfc2Vzc2lvbnNb JGldLT53YWl0X2Zvcl9jb21wbGV0aW9uOworCSRtaXhlZF9zZXNzaW9uc1skaV0tPmNsb3Nl OwogfQogCiAjIFZlcmlmeSBhbGwgbW9kZXMgcmVhY2hlZCB0aGUgdGFyZ2V0IExTTgpAQCAt Njc1LDEwICs2NzksOCBAQCBteSAkcHJpbWFyeV9mbHVzaF9sb2dfb2Zmc2V0ID0gLXMgJG5v ZGVfcHJpbWFyeS0+bG9nZmlsZTsKIG15IEBwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zOwogZm9y IChteSAkaSA9IDA7ICRpIDwgNTsgJGkrKykKIHsKLQkkcHJpbWFyeV9mbHVzaF9zZXNzaW9u c1skaV0gPSAkbm9kZV9wcmltYXJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0J JHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgKLQkJcXIvc3RhcnQv LCBxcVsKLQkJXFxlY2hvIHN0YXJ0CisJJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldID0g UG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJG5vZGVfcHJpbWFyeSk7 CisJJHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldLT5kb19hc3luYyhxcVsKIAkJV0FJVCBG T1IgTFNOICckcHJpbWFyeV9mbHVzaF9sc25zWyRpXScgV0lUSCAoTU9ERSAncHJpbWFyeV9m bHVzaCcsIHRpbWVvdXQgJzFkJyk7CiAJCVNFTEVDVCBsb2dfd2FpdF9kb25lKCdwcmltYXJ5 X2ZsdXNoX2RvbmUnLCAkaSk7CiAJXSk7CkBAIC02ODksNyArNjkxLDggQEAgZm9yIChteSAk aSA9IDA7ICRpIDwgNTsgJGkrKykKIHsKIAkkbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9sb2co InByaW1hcnlfZmx1c2hfZG9uZSAkaSIsCiAJCSRwcmltYXJ5X2ZsdXNoX2xvZ19vZmZzZXQp OwotCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXS0+cXVpdDsKKwkkcHJpbWFyeV9mbHVz aF9zZXNzaW9uc1skaV0tPndhaXRfZm9yX2NvbXBsZXRpb247CisJJHByaW1hcnlfZmx1c2hf c2Vzc2lvbnNbJGldLT5jbG9zZTsKIH0KIAogIyBWZXJpZnkgb24gcHJpbWFyeSB0aGF0IFdB TCB3YXMgZmx1c2hlZCB1cCB0byB0aGUgdGFyZ2V0IExTTgpAQCAtNzE3LDEwICs3MjAsOCBA QCBteSBAd2FpdF9tb2RlcyA9ICgnc3RhbmRieV9yZXBsYXknLCAnc3RhbmRieV93cml0ZScs ICdzdGFuZGJ5X2ZsdXNoJyk7CiBteSBAd2FpdF9zZXNzaW9uczsKIGZvciAobXkgJGkgPSAw OyAkaSA8IDM7ICRpKyspCiB7Ci0JJHdhaXRfc2Vzc2lvbnNbJGldID0gJG5vZGVfc3RhbmRi eS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotCSR3YWl0X3Nlc3Npb25zWyRpXS0+ cXVlcnlfdW50aWwoCi0JCXFyL3N0YXJ0LywgcXFbCi0JCVxcZWNobyBzdGFydAorCSR3YWl0 X3Nlc3Npb25zWyRpXSA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ ICRub2RlX3N0YW5kYnkpOworCSR3YWl0X3Nlc3Npb25zWyRpXS0+ZG9fYXN5bmMocXFbCiAJ CVdBSVQgRk9SIExTTiAnJHtsc240fScgV0lUSCAoTU9ERSAnJHdhaXRfbW9kZXNbJGldJyk7 CiAJXSk7CiB9CkBAIC03NTgsMTIgKzc1OSw3IEBAIG9rKCRvdXRwdXQgZXEgIm5vdCBpbiBy ZWNvdmVyeSIsCiAkbm9kZV9zdGFuZGJ5LT5zdG9wOwogJG5vZGVfcHJpbWFyeS0+c3RvcDsK IAotIyBJZiB3ZSBzZW5kIFxxIHdpdGggJHNlc3Npb24tPnF1aXQgdGhlIGNvbW1hbmQgY2Fu IGJlIHNlbnQgdG8gdGhlIHNlc3Npb24KLSMgYWxyZWFkeSBjbG9zZWQuIFNvIFxxIGlzIGlu IGluaXRpYWwgc2NyaXB0LCBoZXJlIHdlIG9ubHkgZmluaXNoIElQQzo6UnVuLgotZm9yICht eSAkaSA9IDA7ICRpIDwgMzsgJGkrKykKLXsKLQkkd2FpdF9zZXNzaW9uc1skaV0tPntydW59 LT5maW5pc2g7Ci19CisjIFNlc3Npb25zIHdpbGwgYmUgY2xlYW5lZCB1cCBhdXRvbWF0aWNh bGx5IHdoZW4gdGhleSBnbyBvdXQgb2Ygc2NvcGUuCiAKICMgOS4gQXJjaGl2ZS1vbmx5IHN0 YW5kYnkgdGVzdHM6IHZlcmlmeSBzdGFuZGJ5X3dyaXRlL3N0YW5kYnlfZmx1c2ggd29yawog IyB3aXRob3V0IGEgd2FscmVjZWl2ZXIuICBUaGVzZSBleGVyY2lzZXMgdGhlIHJlcGxheS1w b3NpdGlvbiBmbG9vciBpbgpAQCAtODYyLDE4ICs4NTgsMTQgQEAgJGFyY19wcmltYXJ5LT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAjIFN0YXJ0IGJhY2tncm91bmQgd2FpdGVy cy4gIFdpdGggcmVwbGF5IHBhdXNlZCwgdGFyZ2V0ID4gcmVwbGF5LCBzbyB0aGV5CiAjIHdp bGwgc2xlZXAgb24gV2FpdExhdGNoLiAgVGhleSBjYW4gb25seSBiZSB3b2tlbiBieSB0aGUg cmVwbGF5LWxvb3AKICMgV2FpdExTTldha2V1cCBjYWxscy4KLW15ICRhcmNfd3JpdGVfc2Vz c2lvbiA9ICRhcmNfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwotJGFy Y193cml0ZV9zZXNzaW9uLT5xdWVyeV91bnRpbCgKLQlxci9zdGFydC8sIHFxWwotCVxcZWNo byBzdGFydAorbXkgJGFyY193cml0ZV9zZXNzaW9uID0gUG9zdGdyZVNRTDo6VGVzdDo6U2Vz c2lvbi0+bmV3KG5vZGUgPT4gJGFyY19zdGFuZGJ5KTsKKyRhcmNfd3JpdGVfc2Vzc2lvbi0+ ZG9fYXN5bmMocXFbCiAJV0FJVCBGT1IgTFNOICcke2FyY190YXJnZXRfbHNuMn0nCiAJCVdJ VEggKE1PREUgJ3N0YW5kYnlfd3JpdGUnLCB0aW1lb3V0ICcxZCcsIG5vX3Rocm93KTsKIF0p OwogCi1teSAkYXJjX2ZsdXNoX3Nlc3Npb24gPSAkYXJjX3N0YW5kYnktPmJhY2tncm91bmRf cHNxbCgncG9zdGdyZXMnKTsKLSRhcmNfZmx1c2hfc2Vzc2lvbi0+cXVlcnlfdW50aWwoCi0J cXIvc3RhcnQvLCBxcVsKLQlcXGVjaG8gc3RhcnQKK215ICRhcmNfZmx1c2hfc2Vzc2lvbiA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRhcmNfc3RhbmRieSk7 CiskYXJjX2ZsdXNoX3Nlc3Npb24tPmRvX2FzeW5jKHFxWwogCVdBSVQgRk9SIExTTiAnJHth cmNfdGFyZ2V0X2xzbjJ9JwogCQlXSVRIIChNT0RFICdzdGFuZGJ5X2ZsdXNoJywgdGltZW91 dCAnMWQnLCBub190aHJvdyk7CiBdKTsKQEAgLTg4NywxNSArODc5LDE1IEBAICRhcmNfc3Rh bmRieS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogIyBTVEFOREJZX0ZMVVNIIHdh aXRlcnMgYXMgaXQgcmVwbGF5cyBwYXN0IGFyY190YXJnZXRfbHNuMi4KICRhcmNfc3RhbmRi eS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfd2FsX3JlcGxheV9yZXN1bWUo KSIpOwogCi0kYXJjX3dyaXRlX3Nlc3Npb24tPnF1aXQ7Ci0kYXJjX2ZsdXNoX3Nlc3Npb24t PnF1aXQ7Ci1jaG9tcCgkYXJjX3dyaXRlX3Nlc3Npb24tPntzdGRvdXR9KTsKLWNob21wKCRh cmNfZmx1c2hfc2Vzc2lvbi0+e3N0ZG91dH0pOworbXkgJGFyY193cml0ZV9vdXQgPSAkYXJj X3dyaXRlX3Nlc3Npb24tPmdldF9hc3luY19yZXN1bHQoKTsKK215ICRhcmNfZmx1c2hfb3V0 ID0gJGFyY19mbHVzaF9zZXNzaW9uLT5nZXRfYXN5bmNfcmVzdWx0KCk7CiskYXJjX3dyaXRl X3Nlc3Npb24tPmNsb3NlOworJGFyY19mbHVzaF9zZXNzaW9uLT5jbG9zZTsKIAotaXMoJGFy Y193cml0ZV9zZXNzaW9uLT57c3Rkb3V0fSwKK2lzKCRhcmNfd3JpdGVfb3V0LT57cHNxbG91 dH0sCiAJJ3N1Y2Nlc3MnLAogCSJzdGFuZGJ5X3dyaXRlIHdhaXRlciB3b2tlbiBieSByZXBs YXkgb24gYXJjaGl2ZS1vbmx5IHN0YW5kYnkiKTsKLWlzKCRhcmNfZmx1c2hfc2Vzc2lvbi0+ e3N0ZG91dH0sCitpcygkYXJjX2ZsdXNoX291dC0+e3BzcWxvdXR9LAogCSdzdWNjZXNzJywK IAkic3RhbmRieV9mbHVzaCB3YWl0ZXIgd29rZW4gYnkgcmVwbGF5IG9uIGFyY2hpdmUtb25s eSBzdGFuZGJ5Iik7CiAKQEAgLTEwMzUsMTAgKzEwMjcsOCBAQCBjaGVja193YWl0X2Zvcl9s c25fZmVuY2Vwb3N0KCRyY3Zfc3RhbmRieSwgJ3N0YW5kYnlfZmx1c2gnLCAkZmx1c2hfbHNu LAogJHJjdl9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiSU5TRVJUIElOVE8g cmN2X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMjAwLCAyMTApKSIpOwogCi1teSAk Ym91bmRhcnlfc2Vzc2lvbiA9ICRyY3Zfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0 Z3JlcycpOwotJGJvdW5kYXJ5X3Nlc3Npb24tPnF1ZXJ5X3VudGlsKAotCXFyL3N0YXJ0Lywg cXFbCi0JXFxlY2hvIHN0YXJ0CitteSAkYm91bmRhcnlfc2Vzc2lvbiA9IFBvc3RncmVTUUw6 OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRyY3Zfc3RhbmRieSk7CiskYm91bmRhcnlf c2Vzc2lvbi0+ZG9fYXN5bmMocXFbCiAJV0FJVCBGT1IgTFNOICcke3JlcGxheV9sc25fcGx1 c30nCiAJCVdJVEggKE1PREUgJ3N0YW5kYnlfcmVwbGF5JywgdGltZW91dCAnMWQnLCBub190 aHJvdyk7CiBdKTsKQEAgLTEwNDksOSArMTAzOSw5IEBAICRyY3Zfc3RhbmRieS0+cG9sbF9x dWVyeV91bnRpbCgncG9zdGdyZXMnLAogCiAkcmN2X3N0YW5kYnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIHBnX3dhbF9yZXBsYXlfcmVzdW1lKCkiKTsKIHJlc3VtZV93YWxy ZWNlaXZlcigkcmN2X3N0YW5kYnkpOwotJGJvdW5kYXJ5X3Nlc3Npb24tPnF1aXQ7Ci1jaG9t cCgkYm91bmRhcnlfc2Vzc2lvbi0+e3N0ZG91dH0pOwotaXMoJGJvdW5kYXJ5X3Nlc3Npb24t PntzdGRvdXR9LAorbXkgJGJvdW5kYXJ5X291dCA9ICRib3VuZGFyeV9zZXNzaW9uLT5nZXRf YXN5bmNfcmVzdWx0KCk7CiskYm91bmRhcnlfc2Vzc2lvbi0+Y2xvc2U7CitpcygkYm91bmRh cnlfb3V0LT57cHNxbG91dH0sCiAJJ3N1Y2Nlc3MnLAogCSJzdGFuZGJ5X3JlcGxheTogd2Fp dGVyIGF0IGN1cnJlbnQgKyAxIHdha2VzIHdoZW4gcmVwbGF5IGFkdmFuY2VzIik7CiAKQEAg LTExMDEsMTAgKzEwOTEsOCBAQCAkdGxfc3RhbmRieTItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKIAkiU0VMRUNUIHBnX2dldF93YWxfcmVwbGF5X3BhdXNlX3N0YXRlKCkgPSAn cGF1c2VkJyIpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRsX3N0YW5kYnky IHJlcGxheSB0byBwYXVzZSI7CiAKLW15ICR0bF9zZXNzaW9uID0gJHRsX3N0YW5kYnkyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0kdGxfc2Vzc2lvbi0+cXVlcnlfdW50aWwo Ci0JcXIvc3RhcnQvLCBxcVsKLQlcXGVjaG8gc3RhcnQKK215ICR0bF9zZXNzaW9uID0gUG9z dGdyZVNRTDo6VGVzdDo6U2Vzc2lvbi0+bmV3KG5vZGUgPT4gJHRsX3N0YW5kYnkyKTsKKyR0 bF9zZXNzaW9uLT5kb19hc3luYyhxcVsKIAlXQUlUIEZPUiBMU04gJyR7dGxfdGFyZ2V0fScK IAkJV0lUSCAoTU9ERSAnc3RhbmRieV9yZXBsYXknLCB0aW1lb3V0ICcxZCcsIG5vX3Rocm93 KTsKIF0pOwpAQCAtMTEyNiw5ICsxMTE0LDkgQEAgJHRsX3N0YW5kYnkyLT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCByZWNlaXZlZF90bGkgPiAxIEZST00gcGdf c3RhdF93YWxfcmVjZWl2ZXIiKQogICBvciBkaWUgInRsX3N0YW5kYnkyIGRpZCBub3QgZm9s bG93IHVwc3RyZWFtIHRpbWVsaW5lIHN3aXRjaCI7CiAKLSR0bF9zZXNzaW9uLT5xdWl0Owot Y2hvbXAoJHRsX3Nlc3Npb24tPntzdGRvdXR9KTsKLWlzKCR0bF9zZXNzaW9uLT57c3Rkb3V0 fSwgJ3N1Y2Nlc3MnLAorbXkgJHRsX291dCA9ICR0bF9zZXNzaW9uLT5nZXRfYXN5bmNfcmVz dWx0KCk7CiskdGxfc2Vzc2lvbi0+Y2xvc2U7CitpcygkdGxfb3V0LT57cHNxbG91dH0sICdz dWNjZXNzJywKIAkiV0FJVCBGT1IgTFNOIHN1cnZpdmVzIHVwc3RyZWFtIHByb21vdGlvbiBh bmQgdGltZWxpbmUgc3dpdGNoIG9uIGNhc2NhZGUgc3RhbmRieSIKICk7CiAKZGlmZiAtLWdp 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 cGwKaW5kZXggYzg2MjA3M2MzNGUuLjVjNjg5NDlmODBjIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWNvdmVyeS90LzA1MV9lZmZlY3RpdmVfd2FsX2xldmVsLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDUxX2VmZmVjdGl2ZV93YWxfbGV2ZWwucGwKQEAgLTYsNiArNiw3IEBA CiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6U2Vzc2lvbjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCkBAIC0z ODIsMjAgKzM4MywxNSBAQCBpZiAoICAgJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30g 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 KTsKQEAgLTQxMiw2ICs0MDgsOSBAQCBzZWxlY3QgcGdfY2FuY2VsX2JhY2tlbmQocGlkKSBm 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 c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2NvbmZsaWN0cy5wbAppbmRleCBmMjNmZTZh ZjJhNS4uODA1OGJlZWI2ODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzNV9jb25mbGljdHMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM1X2Nv bmZsaWN0cy5wbApAQCAtNCw2ICs0LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpTZXNzaW9uOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKQEAgLTQ1NSwxNyArNDU2LDE0IEBAIGlmICgkaW5qZWN0 aW9uX3BvaW50c19zdXBwb3J0ZWQgIT0gMCkKIAogCSMgU3RhcnQgYSBiYWNrZ3JvdW5kIHNl c3Npb24gb24gdGhlIHB1Ymxpc2hlciBub2RlIHRvIHBlcmZvcm0gYW4gdXBkYXRlIGFuZAog CSMgcGF1c2UgYXQgdGhlIGluamVjdGlvbiBwb2ludC4KLQlteSAkcHViX3Nlc3Npb24gPSAk bm9kZV9CLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7Ci0JJHB1Yl9zZXNzaW9uLT5x dWVyeV91bnRpbCgKLQkJcXIvc3RhcnRpbmdfYmdfcHNxbC8sCi0JCXF7Ci0JCQlcZWNobyBz dGFydGluZ19iZ19wc3FsCi0JCQlCRUdJTjsKLQkJCVVQREFURSB0YWIgU0VUIGIgPSAyIFdI RVJFIGEgPSAxOwotCQkJUFJFUEFSRSBUUkFOU0FDVElPTiAndHhuX3dpdGhfbGF0ZXJfY29t bWl0X3RzJzsKLQkJCUNPTU1JVCBQUkVQQVJFRCAndHhuX3dpdGhfbGF0ZXJfY29tbWl0X3Rz JzsKLQkJfQorCW15ICRwdWJfc2Vzc2lvbiA9IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24t Pm5ldyhub2RlID0+ICRub2RlX0IpOworCSRwdWJfc2Vzc2lvbi0+ZG8oCisJCXF7QkVHSU59 LAorCQlxe1VQREFURSB0YWIgU0VUIGIgPSAyIFdIRVJFIGEgPSAxfSwKKwkJcXtQUkVQQVJF IFRSQU5TQUNUSU9OICd0eG5fd2l0aF9sYXRlcl9jb21taXRfdHMnfQogCSk7CisJIyBDT01N SVQgUFJFUEFSRUQgd2lsbCBibG9jayBvbiB0aGUgaW5qZWN0aW9uIHBvaW50CisJJHB1Yl9z ZXNzaW9uLT5kb19hc3luYyhxe0NPTU1JVCBQUkVQQVJFRCAndHhuX3dpdGhfbGF0ZXJfY29t bWl0X3RzJ30pOwogCiAJIyBXYWl0IHVudGlsIHRoZSBiYWNrZW5kIGVudGVycyB0aGUgaW5q ZWN0aW9uIHBvaW50CiAJJG5vZGVfQi0+d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5k JywKQEAgLTUxNiw4ICs1MTQsOSBAQCBpZiAoJGluamVjdGlvbl9wb2ludHNfc3VwcG9ydGVk ICE9IDApCiAJCSBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2NvbW1pdC1hZnRl ci1kZWxheS1jaGVja3BvaW50Jyk7IgogCSk7CiAKLQkjIENsb3NlIHRoZSBiYWNrZ3JvdW5k IHNlc3Npb24gb24gdGhlIHB1Ymxpc2hlciBub2RlCi0Jb2soJHB1Yl9zZXNzaW9uLT5xdWl0 LCAiY2xvc2UgcHVibGlzaGVyIHNlc3Npb24iKTsKKwkjIFdhaXQgZm9yIHRoZSBhc3luYyBx dWVyeSB0byBjb21wbGV0ZSBhbmQgY2xvc2UgdGhlIGJhY2tncm91bmQgc2Vzc2lvbgorCSRw dWJfc2Vzc2lvbi0+d2FpdF9mb3JfY29tcGxldGlvbjsKKwkkcHViX3Nlc3Npb24tPmNsb3Nl OwogCiAJIyBDb25maXJtIHRoYXQgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHRlZAogCSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCAqIEZST00gdGFi IFdIRVJFIGEgPSAxJyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w Mzhfd2Fsc25kX3NodXRkb3duX3RpbWVvdXQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMzhfd2Fsc25kX3NodXRkb3duX3RpbWVvdXQucGwKaW5kZXggZjRlZDVkOTc4NTIuLjQ4 Y2FmOGUzZGE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfd2Fs c25kX3NodXRkb3duX3RpbWVvdXQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM4X3dhbHNuZF9zaHV0ZG93bl90aW1lb3V0LnBsCkBAIC04LDYgKzgsNyBAQCB1c2Ugc3Ry aWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogdXNlIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6U2Vzc2lvbjsKIHVzZSBUZXN0OjpNb3JlOwogdXNlIFRpbWU6OkhpUmVz IHF3KHVzbGVlcCk7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGVzdF9zdWInKTsK IAogIyBTdGFydCBhIGJhY2tncm91bmQgc2Vzc2lvbiBvbiB0aGUgc3Vic2NyaWJlciB0byBy dW4gYSB0cmFuc2FjdGlvbiBsYXRlcgogIyB0aGF0IHdpbGwgYmxvY2sgdGhlIGxvZ2ljYWwg YXBwbHkgd29ya2VyIG9uIGEgbG9jay4KLW15ICRzdWJfc2Vzc2lvbiA9ICRub2RlX3N1YnNj cmliZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKK215ICRzdWJfc2Vzc2lvbiA9 IFBvc3RncmVTUUw6OlRlc3Q6OlNlc3Npb24tPm5ldyhub2RlID0+ICRub2RlX3N1YnNjcmli ZXIpOwogCiAjIFRlc3QgdGhhdCB3aGVuIHRoZSBsb2dpY2FsIGFwcGx5IHdvcmtlciBpcyBi bG9ja2VkIG9uIGEgbG9jayBhbmQgcmVwbGljYXRpb24KICMgaXMgc3RhbGxlZCwgc2h1dHRp bmcgZG93biB0aGUgcHVibGlzaGVyIGNhdXNlcyB0aGUgbG9naWNhbCB3YWxzZW5kZXIgdG8g ZXhpdApAQCAtNTMsNyArNTQsNyBAQCBteSAkc3ViX3Nlc3Npb24gPSAkbm9kZV9zdWJzY3Jp YmVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CiAKICMgQ2F1c2UgdGhlIGxvZ2lj YWwgYXBwbHkgd29ya2VyIHRvIGJsb2NrIG9uIGEgbG9jayBieSBydW5uaW5nIGNvbmZsaWN0 aW5nCiAjIHRyYW5zYWN0aW9ucyBvbiB0aGUgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLgot JHN1Yl9zZXNzaW9uLT5xdWVyeV9zYWZlKCJCRUdJTjsgSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICgwKTsiKTsKKyRzdWJfc2Vzc2lvbi0+ZG8oIkJFR0lOOyBJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDApOyIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMCk7Iik7CiAKIG15ICRs b2dfb2Zmc2V0ID0gLXMgJG5vZGVfcHVibGlzaGVyLT5sb2dmaWxlOwpAQCAtNjUsNyArNjYs NyBAQCBvayggJG5vZGVfcHVibGlzaGVyLT5sb2dfY29udGFpbnMoCiAJCSRsb2dfb2Zmc2V0 KSwKIAkid2Fsc2VuZGVyIGV4aXRzIGR1ZSB0byB3YWxfc2VuZGVyX3NodXRkb3duX3RpbWVv dXQiKTsKIAotJHN1Yl9zZXNzaW9uLT5xdWVyeV9zYWZlKCJBQk9SVDsiKTsKKyRzdWJfc2Vz c2lvbi0+ZG8oIkFCT1JUOyIpOwogJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKICRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgndGVzdF9zdWInKTsKIApAQCAtNzksNyArODAs NyBAQCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3Rlc3Rfc3ViJyk7CiAK ICMgUnVuIGEgdHJhbnNhY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgdGhhdCBibG9ja3MgdGhl IGxvZ2ljYWwgYXBwbHkgd29ya2VyCiAjIG9uIGEgbG9jay4KLSRzdWJfc2Vzc2lvbi0+cXVl cnlfc2FmZSgiQkVHSU47IExPQ0sgVEFCTEUgdGVzdF90YWIgSU4gRVhDTFVTSVZFIE1PREU7 Iik7Ciskc3ViX3Nlc3Npb24tPmRvKCJCRUdJTjsgTE9DSyBUQUJMRSB0ZXN0X3RhYiBJTiBF WENMVVNJVkUgTU9ERTsiKTsKIAogIyBHZW5lcmF0ZSBlbm91Z2ggZGF0YSB0byBmaWxsIHRo ZSBsb2dpY2FsIHdhbHNlbmRlcidzIG91dHB1dCBidWZmZXIuCiAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAtMTE3LDcgKzExOCw3IEBAIG9rKCAkbm9kZV9w dWJsaXNoZXItPmxvZ19jb250YWlucygKIAkid2Fsc2VuZGVyIHdpdGggZnVsbCBvdXRwdXQg YnVmZmVyIGV4aXRzIGR1ZSB0byB3YWxfc2VuZGVyX3NodXRkb3duX3RpbWVvdXQiCiApOwog Ci0kc3ViX3Nlc3Npb24tPnF1ZXJ5X3NhZmUoIkFCT1JUOyIpOworJHN1Yl9zZXNzaW9uLT5k bygiQUJPUlQ7Iik7CiAKICMgVGhlIG5leHQgdGVzdCBkZXBlbmRzIG9uIFBlcmwncyBga2ls bGAsIHdoaWNoIGFwcGFyZW50bHkgaXMgbm90CiAjIHBvcnRhYmxlIHRvIFdpbmRvd3MuICAo SXQgd291bGQgYmUgbmljZSB0byB1c2UgVGVzdDo6TW9yZSdzIGBzdWJ0ZXN0YCwKQEAgLTE2 Nyw3ICsxNjgsNyBAQCAkbm9kZV9zdGFuZGJ5LT5zdGFydDsKICMgQ2F1c2UgdGhlIGxvZ2lj YWwgYXBwbHkgd29ya2VyIHRvIGJsb2NrIG9uIGEgbG9jayBieSBydW5uaW5nIGNvbmZsaWN0 aW5nCiAjIHRyYW5zYWN0aW9ucyBvbiB0aGUgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLCBz dGFsbGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCd0ZXN0X3N1YicpOwotJHN1Yl9zZXNzaW9uLT5xdWVyeV9zYWZlKCJCRUdJ TjsgTE9DSyBUQUJMRSB0ZXN0X3RhYiBJTiBFWENMVVNJVkUgTU9ERTsiKTsKKyRzdWJfc2Vz c2lvbi0+ZG8oIkJFR0lOOyBMT0NLIFRBQkxFIHRlc3RfdGFiIElOIEVYQ0xVU0lWRSBNT0RF OyIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJ TlRPIHRlc3RfdGFiIFZBTFVFUyAoLTEpOyAiKTsKIAogIyBDYXVzZSB0aGUgc3RhbmRieSdz IHdhbHJlY2VpdmVyIHRvIGJlIGJsb2NrZWQgd2l0aCBTSUdTVE9QIHNpZ25hbCwKQEAgLTE5 Myw3ICsxOTQsNyBAQCBvayggJG5vZGVfcHVibGlzaGVyLT5sb2dfY29udGFpbnMoCiApOwog CiBraWxsICdDT05UJywgJHJlY2VpdmVycGlkOwotJHN1Yl9zZXNzaW9uLT5xdWl0OworJHN1 Yl9zZXNzaW9uLT5jbG9zZTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnZmFzdCcpOwog JG5vZGVfc3RhbmRieS0+c3RvcCgnZmFzdCcpOwotLSAKMi40My4wCgo= --------------6iQoF3MkVh7mSGjIgCVULhlm--