Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1Yi2Mt-0007fc-2t for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2015 15:03:15 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1Yi2Ms-0003cK-HI for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2015 15:03:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1Yi2Mp-0003cD-HR for pgsql-hackers@postgresql.org; Tue, 14 Apr 2015 15:03:11 +0000 Received: from linode.thelabyrinth.net ([198.58.117.137] helo=mail.thelabyrinth.net) by magus.postgresql.org with esmtps (TLS1.1:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1Yi2MY-0000tq-O8 for pgsql-hackers@postgresql.org; Tue, 14 Apr 2015 15:03:10 +0000 Received: from theseus-media.home.thelabyrinth.net (unknown [98.204.177.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dsteele) by mail.thelabyrinth.net (Postfix) with ESMTPSA id 30385139C2; Tue, 14 Apr 2015 15:02:51 +0000 (UTC) Message-ID: <552D2C1A.3060002@pgmasters.net> Date: Tue, 14 Apr 2015 11:02:50 -0400 From: David Steele User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Simon Riggs , PostgreSQL-development , Sawada Masahiko , Peter Eisentraut CC: Alvaro Herrera , Abhijit Menon-Sen , Fujii Masao Subject: Re: Auditing extension for PostgreSQL (Take 2) References: <54E005CC.1060605@pgmasters.net> <5522EDE9.2050101@gmx.net> <552326EE.4060509@pgmasters.net> In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="SRrXo2mQ524p3R4Wubp19X6qQC2bcS8Hq" X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --SRrXo2mQ524p3R4Wubp19X6qQC2bcS8Hq Content-Type: multipart/mixed; boundary="------------040505060708030700060900" This is a multi-part message in MIME format. --------------040505060708030700060900 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Attached is the v7 pg_audit patch. I've tried to address Peter's documentation concerns by cleaning up the terminology and adding a real-world case plus usage recommendations. The word "auditing" has been expunged from the docs in favor of the term "audit logging". Per Simon's request, there is now a pg_audit.log_relation setting that makes session audit logging exhaustively log all relations as it did before. The ROLE logging class is back as well. Simon also suggested a way that pg_audit could be tested with standard regression so I have converted all tests over and removed test.pl. Sawada, I'd certainly appreciate it if you'd try again and see if you are still getting a segfault with your test code (which you can find in the regression tests). Currently the patch will compile on master (I tested with b22a36a) or optionally with Alvaro's deparse patches applied (only 0001 & 0002 needed). I've supplied a different regression test out file (expected/pg_audit-deparse.out) which can be copied over the standard out file (expected/pg_audit.out) if you'd like to do regression on pg_audit with deparse. The small section of code that calls pg_event_trigger_ddl_commands() can be compiled by defining DEPARSE or removed the #ifdefs around that block. Please let me know if I've missed anything and I look forward to comments and questions. Thanks, --=20 - David Steele david@pgmasters.net --------------040505060708030700060900 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="pg_audit-v7.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_audit-v7.patch" ZGlmZiAtLWdpdCBhL2NvbnRyaWIvTWFrZWZpbGUgYi9jb250cmliL01ha2VmaWxlCmluZGV4 IGM1NjA1MGUuLmNmMzNlMzggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvTWFrZWZpbGUKKysrIGIv Y29udHJpYi9NYWtlZmlsZQpAQCAtMjgsNiArMjgsNyBAQCBTVUJESVJTID0gXAogCQlvaWQy bmFtZQlcCiAJCXBhZ2VpbnNwZWN0CVwKIAkJcGFzc3dvcmRjaGVjawlcCisJCXBnX2F1ZGl0 CVwKIAkJcGdfYnVmZmVyY2FjaGUJXAogCQlwZ19mcmVlc3BhY2VtYXAgXAogCQlwZ19wcmV3 YXJtCVwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfYXVkaXQvLmdpdGlnbm9yZSBiL2NvbnRy aWIvcGdfYXVkaXQvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hNTI2N2NmCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19hdWRpdC8uZ2l0 aWdub3JlCkBAIC0wLDAgKzEsNSBAQAorbG9nLworcmVzdWx0cy8KK3RtcF9jaGVjay8KK3Jl Z3Jlc3Npb24uZGlmZnMKK3JlZ3Jlc3Npb24ub3V0CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X2F1ZGl0L01ha2VmaWxlIGIvY29udHJpYi9wZ19hdWRpdC9NYWtlZmlsZQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjM2MDExCi0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9wZ19hdWRpdC9NYWtlZmlsZQpAQCAtMCwwICsxLDIxIEBACisjIHBnX2F1ZGl0 L01ha2VmaWxlCisKK01PRFVMRSA9IHBnX2F1ZGl0CitNT0RVTEVfYmlnID0gcGdfYXVkaXQK K09CSlMgPSBwZ19hdWRpdC5vCisKK0VYVEVOU0lPTiA9IHBnX2F1ZGl0CitSRUdSRVNTID0g cGdfYXVkaXQKK1JFR1JFU1NfT1BUUyA9IC0tdGVtcC1jb25maWc9JCh0b3Bfc3JjZGlyKS9j b250cmliL3BnX2F1ZGl0L3BnX2F1ZGl0LmNvbmYKK0RBVEEgPSBwZ19hdWRpdC0tMS4wLjAu c3FsCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0g JChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitz dWJkaXIgPSBjb250cmliL3BnX2F1ZGl0Cit0b3BfYnVpbGRkaXIgPSAuLi8uLgoraW5jbHVk ZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9z cmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9j b250cmliL3BnX2F1ZGl0L2V4cGVjdGVkL3BnX2F1ZGl0LWRlcGFyc2Uub3V0IGIvY29udHJp Yi9wZ19hdWRpdC9leHBlY3RlZC9wZ19hdWRpdC1kZXBhcnNlLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTdjYmExCi0tLSAvZGV2L251bGwKKysrIGIvY29u dHJpYi9wZ19hdWRpdC9leHBlY3RlZC9wZ19hdWRpdC1kZXBhcnNlLm91dApAQCAtMCwwICsx LDg3NyBAQAorLS0gTG9hZCBwZ19hdWRpdCBtb2R1bGUKK2NyZWF0ZSBleHRlbnNpb24gcGdf YXVkaXQ7CistLQorLS0gQ3JlYXRlIGEgc3VwZXJ1c2VyIHJvbGUgdGhhdCB3ZSBrbm93IHRo ZSBuYW1lIG9mIGZvciB0ZXN0aW5nCitDUkVBVEUgVVNFUiBzdXBlciBTVVBFUlVTRVI7Citc Y29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gc3VwZXI7CistLQorLS0gQ3JlYXRlIGF1ZGl0 b3Igcm9sZQorQ1JFQVRFIFJPTEUgYXVkaXRvcjsKKy0tCistLSBDcmVhdGUgZmlyc3QgdGVz dCB1c2VyCitDUkVBVEUgVVNFUiB1c2VyMTsKK0FMVEVSIFJPTEUgdXNlcjEgU0VUIHBnX2F1 ZGl0LmxvZyA9ICdkZGwsIFJPTEUnOworQUxURVIgUk9MRSB1c2VyMSBTRVQgcGdfYXVkaXQu bG9nX25vdGljZSA9IG9uOworLS0KKy0tIENyZWF0ZSwgc2VsZWN0LCBkcm9wIChzZWxlY3Qg d2lsbCBub3QgYmUgYXVkaXRlZCkKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiB1c2Vy MQorQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0IChpZCBJTlQpOworTk9USUNFOiAgQVVESVQ6 IFNFU1NJT04sMSwxLERETCxDUkVBVEUgVEFCTEUsVEFCTEUscHVibGljLnRlc3QsQ1JFQVRF IFRBQkxFIHB1YmxpYy50ZXN0IChpZCBJTlQpOworU0VMRUNUICogRlJPTSB0ZXN0OworIGlk IAorLS0tLQorKDAgcm93cykKKworRFJPUCBUQUJMRSB0ZXN0OworTk9USUNFOiAgQVVESVQ6 IFNFU1NJT04sMiwxLERETCxEUk9QIFRBQkxFLFRBQkxFLHB1YmxpYy50ZXN0LERST1AgVEFC TEUgdGVzdDsKKy0tCistLSBDcmVhdGUgc2Vjb25kIHRlc3QgdXNlcgorXGNvbm5lY3QgY29u dHJpYl9yZWdyZXNzaW9uIHN1cGVyCitDUkVBVEUgVVNFUiB1c2VyMjsKK0FMVEVSIFJPTEUg dXNlcjIgU0VUIHBnX2F1ZGl0LmxvZyA9ICdSZWFkLCB3cml0RSc7CitBTFRFUiBST0xFIHVz ZXIyIFNFVCBwZ19hdWRpdC5sb2dfbm90aWNlID0gb247CitBTFRFUiBST0xFIHVzZXIyIFNF VCBwZ19hdWRpdC5yb2xlID0gYXVkaXRvcjsKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lv biB1c2VyMgorQ1JFQVRFIFRBQkxFIHRlc3QyIChpZCBJTlQpOworR1JBTlQgU0VMRUNUIE9O IFRBQkxFIHB1YmxpYy50ZXN0MiBUTyBhdWRpdG9yOworLS0KKy0tIFJvbGUtYmFzZWQgdGVz dHMKK0NSRUFURSBUQUJMRSB0ZXN0MworKAorCWlkIElOVAorKTsKK1NFTEVDVCBjb3VudCgq KQorICBGUk9NCisoCisJU0VMRUNUIHJlbG5hbWUKKwkgIEZST00gcGdfY2xhc3MKKwkgIExJ TUlUIDEKKykgU1VCUVVFUlk7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykK KworU0VMRUNUICoKKyAgRlJPTSB0ZXN0MywgdGVzdDI7CitOT1RJQ0U6ICBBVURJVDogU0VT U0lPTiwxLDEsUkVBRCxTRUxFQ1QsLCwiU0VMRUNUICoKKyAgRlJPTSB0ZXN0MywgdGVzdDI7 IgorTk9USUNFOiAgQVVESVQ6IE9CSkVDVCwxLDEsUkVBRCxTRUxFQ1QsVEFCTEUscHVibGlj LnRlc3QyLCJTRUxFQ1QgKgorICBGUk9NIHRlc3QzLCB0ZXN0MjsiCisgaWQgfCBpZCAKKy0t LS0rLS0tLQorKDAgcm93cykKKworR1JBTlQgSU5TRVJUCisgICBPTiBUQUJMRSBwdWJsaWMu dGVzdDMKKyAgIFRPIGF1ZGl0b3I7CistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNlIG9m OgorLS0gaW5zZXJ0IG9uIHRlc3QzCistLSBzZWxlY3Qgb24gdGVzdDIKK1dJVEggQ1RFIEFT CisoCisJU0VMRUNUIGlkCisJICBGUk9NIHRlc3QyCispCitJTlNFUlQgSU5UTyB0ZXN0Mwor U0VMRUNUIGlkCisgIEZST00gY3RlOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMiwxLFdS SVRFLElOU0VSVCwsLCJXSVRIIENURSBBUworKAorCVNFTEVDVCBpZAorCSAgRlJPTSB0ZXN0 MgorKQorSU5TRVJUIElOVE8gdGVzdDMKK1NFTEVDVCBpZAorICBGUk9NIGN0ZTsiCitOT1RJ Q0U6ICBBVURJVDogT0JKRUNULDIsMSxXUklURSxJTlNFUlQsVEFCTEUscHVibGljLnRlc3Qz LCJXSVRIIENURSBBUworKAorCVNFTEVDVCBpZAorCSAgRlJPTSB0ZXN0MgorKQorSU5TRVJU IElOVE8gdGVzdDMKK1NFTEVDVCBpZAorICBGUk9NIGN0ZTsiCitOT1RJQ0U6ICBBVURJVDog T0JKRUNULDIsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMudGVzdDIsIldJVEggQ1RFIEFT CisoCisJU0VMRUNUIGlkCisJICBGUk9NIHRlc3QyCispCitJTlNFUlQgSU5UTyB0ZXN0Mwor U0VMRUNUIGlkCisgIEZST00gY3RlOyIKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ug b2Y6CistLSBpbnNlcnQgb24gdGVzdDMKK1dJVEggQ1RFIEFTCisoCisJSU5TRVJUIElOVE8g dGVzdDMgVkFMVUVTICgxKQorCSAgICAgICAgICAgICAgIFJFVFVSTklORyBpZAorKQorSU5T RVJUIElOVE8gdGVzdDIKK1NFTEVDVCBpZAorICBGUk9NIGN0ZTsKK05PVElDRTogIEFVRElU OiBTRVNTSU9OLDMsMSxXUklURSxJTlNFUlQsLCwiV0lUSCBDVEUgQVMKKygKKwlJTlNFUlQg SU5UTyB0ZXN0MyBWQUxVRVMgKDEpCisJICAgICAgICAgICAgICAgUkVUVVJOSU5HIGlkCisp CitJTlNFUlQgSU5UTyB0ZXN0MgorU0VMRUNUIGlkCisgIEZST00gY3RlOyIKK05PVElDRTog IEFVRElUOiBPQkpFQ1QsMywxLFdSSVRFLElOU0VSVCxUQUJMRSxwdWJsaWMudGVzdDMsIldJ VEggQ1RFIEFTCisoCisJSU5TRVJUIElOVE8gdGVzdDMgVkFMVUVTICgxKQorCSAgICAgICAg ICAgICAgIFJFVFVSTklORyBpZAorKQorSU5TRVJUIElOVE8gdGVzdDIKK1NFTEVDVCBpZAor ICBGUk9NIGN0ZTsiCitHUkFOVCBVUERBVEUgT04gVEFCTEUgcHVibGljLnRlc3QyIFRPIGF1 ZGl0b3I7CistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNlIG9mOgorLS0gaW5zZXJ0IG9u IHRlc3QzCistLSB1cGRhdGUgb24gdGVzdDIKK1dJVEggQ1RFIEFTCisoCisJVVBEQVRFIHRl c3QyCisJICAgU0VUIGlkID0gMQorCVJFVFVSTklORyBpZAorKQorSU5TRVJUIElOVE8gdGVz dDMKK1NFTEVDVCBpZAorICBGUk9NIGN0ZTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQs MSxXUklURSxJTlNFUlQsLCwiV0lUSCBDVEUgQVMKKygKKwlVUERBVEUgdGVzdDIKKwkgICBT RVQgaWQgPSAxCisJUkVUVVJOSU5HIGlkCispCitJTlNFUlQgSU5UTyB0ZXN0MworU0VMRUNU IGlkCisgIEZST00gY3RlOyIKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsNCwxLFdSSVRFLElO U0VSVCxUQUJMRSxwdWJsaWMudGVzdDMsIldJVEggQ1RFIEFTCisoCisJVVBEQVRFIHRlc3Qy CisJICAgU0VUIGlkID0gMQorCVJFVFVSTklORyBpZAorKQorSU5TRVJUIElOVE8gdGVzdDMK K1NFTEVDVCBpZAorICBGUk9NIGN0ZTsiCitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDQsMSxX UklURSxVUERBVEUsVEFCTEUscHVibGljLnRlc3QyLCJXSVRIIENURSBBUworKAorCVVQREFU RSB0ZXN0MgorCSAgIFNFVCBpZCA9IDEKKwlSRVRVUk5JTkcgaWQKKykKK0lOU0VSVCBJTlRP IHRlc3QzCitTRUxFQ1QgaWQKKyAgRlJPTSBjdGU7IgorLS0KKy0tIE9iamVjdCBsb2dnZWQg YmVjYXVzZSBvZjoKKy0tIGluc2VydCBvbiB0ZXN0MgorV0lUSCBDVEUgQVMKKygKKwlJTlNF UlQgSU5UTyB0ZXN0MiBWQUxVRVMgKDEpCisJICAgICAgICAgICAgICAgUkVUVVJOSU5HIGlk CispCitVUERBVEUgdGVzdDMKKyAgIFNFVCBpZCA9IGN0ZS5pZAorICBGUk9NIGN0ZQorIFdI RVJFIHRlc3QzLmlkIDw+IGN0ZS5pZDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDUsMSxX UklURSxVUERBVEUsLCwiV0lUSCBDVEUgQVMKKygKKwlJTlNFUlQgSU5UTyB0ZXN0MiBWQUxV RVMgKDEpCisJICAgICAgICAgICAgICAgUkVUVVJOSU5HIGlkCispCitVUERBVEUgdGVzdDMK KyAgIFNFVCBpZCA9IGN0ZS5pZAorICBGUk9NIGN0ZQorIFdIRVJFIHRlc3QzLmlkIDw+IGN0 ZS5pZDsiCitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDUsMSxXUklURSxJTlNFUlQsVEFCTEUs cHVibGljLnRlc3QyLCJXSVRIIENURSBBUworKAorCUlOU0VSVCBJTlRPIHRlc3QyIFZBTFVF UyAoMSkKKwkgICAgICAgICAgICAgICBSRVRVUk5JTkcgaWQKKykKK1VQREFURSB0ZXN0Mwor ICAgU0VUIGlkID0gY3RlLmlkCisgIEZST00gY3RlCisgV0hFUkUgdGVzdDMuaWQgPD4gY3Rl LmlkOyIKKy0tCistLSBDaGFuZ2UgcGVybWlzc2lvbnMgb2YgdXNlciAyIHNvIHRoYXQgb25s eSBvYmplY3QgbG9nZ2luZyB3aWxsIGJlIGRvbmUKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVz c2lvbiBzdXBlcgorYWx0ZXIgcm9sZSB1c2VyMiBzZXQgcGdfYXVkaXQubG9nID0gJ05PTkUn OworXGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9uIHVzZXIyCistLQorLS0gQ3JlYXRlIHRl c3Q0IGFuZCBhZGQgcGVybWlzc2lvbnMKK0NSRUFURSBUQUJMRSB0ZXN0NAorKAorCWlkIGlu dCwKKwluYW1lIHRleHQKKyk7CitHUkFOVCBTRUxFQ1QgKG5hbWUpCisgICBPTiBUQUJMRSBw dWJsaWMudGVzdDQKKyAgIFRPIGF1ZGl0b3I7CitHUkFOVCBVUERBVEUgKGlkKQorICAgT04g VEFCTEUgcHVibGljLnRlc3Q0CisgICBUTyBhdWRpdG9yOworR1JBTlQgaW5zZXJ0IChuYW1l KQorICAgT04gVEFCTEUgcHVibGljLnRlc3Q0CisgICBUTyBhdWRpdG9yOworLS0KKy0tIE5v dCBvYmplY3QgbG9nZ2VkCitTRUxFQ1QgaWQKKyAgRlJPTSBwdWJsaWMudGVzdDQ7CisgaWQg CistLS0tCisoMCByb3dzKQorCistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNlIG9mOgor LS0gc2VsZWN0IChuYW1lKSBvbiB0ZXN0NAorU0VMRUNUIG5hbWUKKyAgRlJPTSBwdWJsaWMu dGVzdDQ7CitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDEsMSxSRUFELFNFTEVDVCxUQUJMRSxw dWJsaWMudGVzdDQsIlNFTEVDVCBuYW1lCisgIEZST00gcHVibGljLnRlc3Q0OyIKKyBuYW1l IAorLS0tLS0tCisoMCByb3dzKQorCistLQorLS0gTm90IG9iamVjdCBsb2dnZWQKK0lOU0VS VCBJTlRPIHB1YmxpYy50ZXN0NCAoaWQpCisgICAgICAgICAgICAgICAgICBWQUxVRVMgKDEp OworLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIGluc2VydCAobmFtZSkg b24gdGVzdDQKK0lOU0VSVCBJTlRPIHB1YmxpYy50ZXN0NCAobmFtZSkKKyAgICAgICAgICAg ICAgICAgIFZBTFVFUyAoJ3Rlc3QnKTsKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsMiwxLFdS SVRFLElOU0VSVCxUQUJMRSxwdWJsaWMudGVzdDQsIklOU0VSVCBJTlRPIHB1YmxpYy50ZXN0 NCAobmFtZSkKKyAgICAgICAgICAgICAgICAgIFZBTFVFUyAoJ3Rlc3QnKTsiCistLQorLS0g Tm90IG9iamVjdCBsb2dnZWQKK1VQREFURSBwdWJsaWMudGVzdDQKKyAgIFNFVCBuYW1lID0g J2Zvbyc7CistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNlIG9mOgorLS0gdXBkYXRlIChp ZCkgb24gdGVzdDQKK1VQREFURSBwdWJsaWMudGVzdDQKKyAgIFNFVCBpZCA9IDE7CitOT1RJ Q0U6ICBBVURJVDogT0JKRUNULDMsMSxXUklURSxVUERBVEUsVEFCTEUscHVibGljLnRlc3Q0 LCJVUERBVEUgcHVibGljLnRlc3Q0CisgICBTRVQgaWQgPSAxOyIKKy0tCistLSBPYmplY3Qg bG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSB1cGRhdGUgKG5hbWUpIG9uIHRlc3Q0CistLSB1cGRh dGUgKG5hbWUpIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBzZWxlY3QgKG5hbWUpIGR1ZSB0byBv cmRlcmluZwordXBkYXRlIHB1YmxpYy50ZXN0NCBzZXQgbmFtZSA9ICdmb28nIHdoZXJlIG5h bWUgPSAnYmFyJzsKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsNCwxLFdSSVRFLFVQREFURSxU QUJMRSxwdWJsaWMudGVzdDQsdXBkYXRlIHB1YmxpYy50ZXN0NCBzZXQgbmFtZSA9ICdmb28n IHdoZXJlIG5hbWUgPSAnYmFyJzsKKy0tCistLSBEcm9wIHRlc3QgdGFibGVzCitkcm9wIHRh YmxlIHRlc3QyOworZHJvcCB0YWJsZSB0ZXN0MzsKK2Ryb3AgdGFibGUgdGVzdDQ7CistLQor LS0gQ2hhbmdlIHBlcm1pc3Npb25zIG9mIHVzZXIgMSBzbyB0aGF0IHNlc3Npb24gbG9nZ2lu ZyB3aWxsIGJlIGRvbmUKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiBzdXBlcgorYWx0 ZXIgcm9sZSB1c2VyMSBzZXQgcGdfYXVkaXQubG9nID0gJ0RETCwgUkVBRCc7CitcY29ubmVj dCBjb250cmliX3JlZ3Jlc3Npb24gdXNlcjEKKy0tCistLSBDcmVhdGUgdGFibGUgaXMgc2Vz c2lvbiBsb2dnZWQKK0NSRUFURSBUQUJMRSBwdWJsaWMuYWNjb3VudAorKAorCWlkIElOVCwK KwluYW1lIFRFWFQsCisJcGFzc3dvcmQgVEVYVCwKKwlkZXNjcmlwdGlvbiBURVhUCispOwor Tk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMSwxLERETCxDUkVBVEUgVEFCTEUsVEFCTEUscHVi bGljLmFjY291bnQsIkNSRUFURSBUQUJMRSBwdWJsaWMuYWNjb3VudAorKAorCWlkIElOVCwK KwluYW1lIFRFWFQsCisJcGFzc3dvcmQgVEVYVCwKKwlkZXNjcmlwdGlvbiBURVhUCispOyIK Ky0tCistLSBTZWxlY3QgaXMgc2Vzc2lvbiBsb2dnZWQKK1NFTEVDVCAqCisgIEZST00gYWNj b3VudDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDIsMSxSRUFELFNFTEVDVCwsLCJTRUxF Q1QgKgorICBGUk9NIGFjY291bnQ7IgorIGlkIHwgbmFtZSB8IHBhc3N3b3JkIHwgZGVzY3Jp cHRpb24gCistLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKygwIHJvd3Mp CisKKy0tCistLSBJbnNlcnQgaXMgbm90IGxvZ2dlZAorSU5TRVJUIElOVE8gYWNjb3VudCAo aWQsIG5hbWUsIHBhc3N3b3JkLCBkZXNjcmlwdGlvbikKKwkJCSBWQUxVRVMgKDEsICd1c2Vy MScsICdIQVNIMScsICdibGFoLCBibGFoJyk7CistLQorLS0gQ2hhbmdlIHBlcm1pc3Npb25z IG9mIHVzZXIgMSBzbyB0aGF0IG9ubHkgb2JqZWN0IGxvZ2dpbmcgd2lsbCBiZSBkb25lCitc Y29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gc3VwZXIKK2FsdGVyIHJvbGUgdXNlcjEgc2V0 IHBnX2F1ZGl0LmxvZyA9ICdub25lJzsKK2FsdGVyIHJvbGUgdXNlcjEgc2V0IHBnX2F1ZGl0 LnJvbGUgPSAnYXVkaXRvcic7CitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gdXNlcjEK Ky0tCistLSBBdWRpdG9yIGdyYW50cyBub3QgbG9nZ2VkCitHUkFOVCBTRUxFQ1QgKHBhc3N3 b3JkKSwKKwkgIFVQREFURSAobmFtZSwgcGFzc3dvcmQpCisgICBPTiBUQUJMRSBwdWJsaWMu YWNjb3VudAorICAgVE8gYXVkaXRvcjsKKy0tCistLSBOb3Qgb2JqZWN0IGxvZ2dlZAorU0VM RUNUIGlkLAorCSAgIG5hbWUKKyAgRlJPTSBhY2NvdW50OworIGlkIHwgbmFtZSAgCistLS0t Ky0tLS0tLS0KKyAgMSB8IHVzZXIxCisoMSByb3cpCisKKy0tCistLSBPYmplY3QgbG9nZ2Vk IGJlY2F1c2Ugb2Y6CistLSBzZWxlY3QgKHBhc3N3b3JkKSBvbiBhY2NvdW50CitTRUxFQ1Qg cGFzc3dvcmQKKyAgRlJPTSBhY2NvdW50OworTk9USUNFOiAgQVVESVQ6IE9CSkVDVCwxLDEs UkVBRCxTRUxFQ1QsVEFCTEUscHVibGljLmFjY291bnQsIlNFTEVDVCBwYXNzd29yZAorICBG Uk9NIGFjY291bnQ7IgorIHBhc3N3b3JkIAorLS0tLS0tLS0tLQorIEhBU0gxCisoMSByb3cp CisKKy0tCistLSBOb3Qgb2JqZWN0IGxvZ2dlZAorVVBEQVRFIGFjY291bnQKKyAgIFNFVCBk ZXNjcmlwdGlvbiA9ICd5YWRhLCB5YWRhJzsKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1 c2Ugb2Y6CistLSB1cGRhdGUgKHBhc3N3b3JkKSBvbiBhY2NvdW50CitVUERBVEUgYWNjb3Vu dAorICAgU0VUIHBhc3N3b3JkID0gJ0hBU0gyJzsKK05PVElDRTogIEFVRElUOiBPQkpFQ1Qs MiwxLFdSSVRFLFVQREFURSxUQUJMRSxwdWJsaWMuYWNjb3VudCwiVVBEQVRFIGFjY291bnQK KyAgIFNFVCBwYXNzd29yZCA9ICdIQVNIMic7IgorLS0KKy0tIENoYW5nZSBwZXJtaXNzaW9u cyBvZiB1c2VyIDEgc28gdGhhdCBzZXNzaW9uIHJlbGF0aW9uIGxvZ2dpbmcgd2lsbCBiZSBk b25lCitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gc3VwZXIKK2FsdGVyIHJvbGUgdXNl cjEgc2V0IHBnX2F1ZGl0LmxvZ19yZWxhdGlvbiA9IG9uOworYWx0ZXIgcm9sZSB1c2VyMSBz ZXQgcGdfYXVkaXQubG9nID0gJ3JlYWQsIFdSSVRFJzsKK1xjb25uZWN0IGNvbnRyaWJfcmVn cmVzc2lvbiB1c2VyMQorLS0KKy0tIE5vdCBsb2dnZWQKK2NyZWF0ZSB0YWJsZSBBQ0NPVU5U X1JPTEVfTUFQCisoCisJYWNjb3VudF9pZCBJTlQsCisJcm9sZV9pZCBJTlQKKyk7CistLQor LS0gQXVkaXRvciBncmFudHMgbm90IGxvZ2dlZAorR1JBTlQgU0VMRUNUCisgICBPTiBUQUJM RSBwdWJsaWMuYWNjb3VudF9yb2xlX21hcAorICAgVE8gYXVkaXRvcjsKKy0tCistLSBPYmpl Y3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBzZWxlY3QgKHBhc3N3b3JkKSBvbiBhY2NvdW50 CistLSBzZWxlY3Qgb24gYWNjb3VudF9yb2xlX21hcAorLS0gU2Vzc2lvbiBsb2dnZWQgb24g YWxsIHRhYmxlcyBiZWNhdXNlIGxvZyA9IHJlYWQgYW5kIGxvZ19yZWxhdGlvbiA9IG9uCitT RUxFQ1QgYWNjb3VudC5wYXNzd29yZCwKKwkgICBhY2NvdW50X3JvbGVfbWFwLnJvbGVfaWQK KyAgRlJPTSBhY2NvdW50CisJICAgSU5ORVIgSk9JTiBhY2NvdW50X3JvbGVfbWFwCisJCQlv biBhY2NvdW50LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lkOworTk9USUNFOiAg QVVESVQ6IE9CSkVDVCwxLDEsUkVBRCxTRUxFQ1QsVEFCTEUscHVibGljLmFjY291bnQsIlNF TEVDVCBhY2NvdW50LnBhc3N3b3JkLAorCSAgIGFjY291bnRfcm9sZV9tYXAucm9sZV9pZAor ICBGUk9NIGFjY291bnQKKwkgICBJTk5FUiBKT0lOIGFjY291bnRfcm9sZV9tYXAKKwkJCW9u IGFjY291bnQuaWQgPSBhY2NvdW50X3JvbGVfbWFwLmFjY291bnRfaWQ7IgorTk9USUNFOiAg QVVESVQ6IFNFU1NJT04sMSwxLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy5hY2NvdW50LCJT RUxFQ1QgYWNjb3VudC5wYXNzd29yZCwKKwkgICBhY2NvdW50X3JvbGVfbWFwLnJvbGVfaWQK KyAgRlJPTSBhY2NvdW50CisJICAgSU5ORVIgSk9JTiBhY2NvdW50X3JvbGVfbWFwCisJCQlv biBhY2NvdW50LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lkOyIKK05PVElDRTog IEFVRElUOiBPQkpFQ1QsMSwxLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy5hY2NvdW50X3Jv bGVfbWFwLCJTRUxFQ1QgYWNjb3VudC5wYXNzd29yZCwKKwkgICBhY2NvdW50X3JvbGVfbWFw LnJvbGVfaWQKKyAgRlJPTSBhY2NvdW50CisJICAgSU5ORVIgSk9JTiBhY2NvdW50X3JvbGVf bWFwCisJCQlvbiBhY2NvdW50LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lkOyIK K05PVElDRTogIEFVRElUOiBTRVNTSU9OLDEsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMu YWNjb3VudF9yb2xlX21hcCwiU0VMRUNUIGFjY291bnQucGFzc3dvcmQsCisJICAgYWNjb3Vu dF9yb2xlX21hcC5yb2xlX2lkCisgIEZST00gYWNjb3VudAorCSAgIElOTkVSIEpPSU4gYWNj b3VudF9yb2xlX21hcAorCQkJb24gYWNjb3VudC5pZCA9IGFjY291bnRfcm9sZV9tYXAuYWNj b3VudF9pZDsiCisgcGFzc3dvcmQgfCByb2xlX2lkIAorLS0tLS0tLS0tLSstLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBzZWxl Y3QgKHBhc3N3b3JkKSBvbiBhY2NvdW50CistLSBTZXNzaW9uIGxvZ2dlZCBvbiBhbGwgdGFi bGVzIGJlY2F1c2UgbG9nID0gcmVhZCBhbmQgbG9nX3JlbGF0aW9uID0gb24KK1NFTEVDVCBw YXNzd29yZAorICBGUk9NIGFjY291bnQ7CitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDIsMSxS RUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNjb3VudCwiU0VMRUNUIHBhc3N3b3JkCisgIEZS T00gYWNjb3VudDsiCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyLDEsUkVBRCxTRUxFQ1Qs VEFCTEUscHVibGljLmFjY291bnQsIlNFTEVDVCBwYXNzd29yZAorICBGUk9NIGFjY291bnQ7 IgorIHBhc3N3b3JkIAorLS0tLS0tLS0tLQorIEhBU0gyCisoMSByb3cpCisKKy0tCistLSBO b3Qgb2JqZWN0IGxvZ2dlZAorLS0gU2Vzc2lvbiBsb2dnZWQgb24gYWxsIHRhYmxlcyBiZWNh dXNlIGxvZyA9IHJlYWQgYW5kIGxvZ19yZWxhdGlvbiA9IG9uCitVUERBVEUgYWNjb3VudAor ICAgU0VUIGRlc2NyaXB0aW9uID0gJ3lhZGEsIHlhZGEnOworTk9USUNFOiAgQVVESVQ6IFNF U1NJT04sMywxLFdSSVRFLFVQREFURSxUQUJMRSxwdWJsaWMuYWNjb3VudCwiVVBEQVRFIGFj Y291bnQKKyAgIFNFVCBkZXNjcmlwdGlvbiA9ICd5YWRhLCB5YWRhJzsiCistLQorLS0gT2Jq ZWN0IGxvZ2dlZCBiZWNhdXNlIG9mOgorLS0gc2VsZWN0IChwYXNzd29yZCkgb24gYWNjb3Vu dCAoaW4gdGhlIHdoZXJlIGNsYXVzZSkKKy0tIFNlc3Npb24gbG9nZ2VkIG9uIGFsbCB0YWJs ZXMgYmVjYXVzZSBsb2cgPSByZWFkIGFuZCBsb2dfcmVsYXRpb24gPSBvbgorVVBEQVRFIGFj Y291bnQKKyAgIFNFVCBkZXNjcmlwdGlvbiA9ICd5YWRhLCB5YWRhJworIHdoZXJlIHBhc3N3 b3JkID0gJ0hBU0gyJzsKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsNCwxLFdSSVRFLFVQREFU RSxUQUJMRSxwdWJsaWMuYWNjb3VudCwiVVBEQVRFIGFjY291bnQKKyAgIFNFVCBkZXNjcmlw dGlvbiA9ICd5YWRhLCB5YWRhJworIHdoZXJlIHBhc3N3b3JkID0gJ0hBU0gyJzsiCitOT1RJ Q0U6ICBBVURJVDogU0VTU0lPTiw0LDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1YmxpYy5hY2Nv dW50LCJVUERBVEUgYWNjb3VudAorICAgU0VUIGRlc2NyaXB0aW9uID0gJ3lhZGEsIHlhZGEn Cisgd2hlcmUgcGFzc3dvcmQgPSAnSEFTSDInOyIKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJl Y2F1c2Ugb2Y6CistLSB1cGRhdGUgKHBhc3N3b3JkKSBvbiBhY2NvdW50CistLSBTZXNzaW9u IGxvZ2dlZCBvbiBhbGwgdGFibGVzIGJlY2F1c2UgbG9nID0gcmVhZCBhbmQgbG9nX3JlbGF0 aW9uID0gb24KK1VQREFURSBhY2NvdW50CisgICBTRVQgcGFzc3dvcmQgPSAnSEFTSDInOwor Tk9USUNFOiAgQVVESVQ6IE9CSkVDVCw1LDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1YmxpYy5h Y2NvdW50LCJVUERBVEUgYWNjb3VudAorICAgU0VUIHBhc3N3b3JkID0gJ0hBU0gyJzsiCitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiw1LDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1YmxpYy5h Y2NvdW50LCJVUERBVEUgYWNjb3VudAorICAgU0VUIHBhc3N3b3JkID0gJ0hBU0gyJzsiCist LQorLS0gQ2hhbmdlIGJhY2sgdG8gc3VwZXJ1c2VyIHRvIGRvIGV4aGF1c3RpdmUgdGVzdHMK K1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiBzdXBlcgorU0VUIHBnX2F1ZGl0LmxvZyA9 ICdBTEwnOworU0VUIHBnX2F1ZGl0LmxvZ19ub3RpY2UgPSBPTjsKK05PVElDRTogIEFVRElU OiBTRVNTSU9OLDIsMSxNSVNDLFNFVCwsLFNFVCBwZ19hdWRpdC5sb2dfbm90aWNlID0gT047 CitTRVQgcGdfYXVkaXQubG9nX3JlbGF0aW9uID0gT047CitOT1RJQ0U6ICBBVURJVDogU0VT U0lPTiwzLDEsTUlTQyxTRVQsLCxTRVQgcGdfYXVkaXQubG9nX3JlbGF0aW9uID0gT047Cist LQorLS0gU2ltcGxlIERPIGJsb2NrCitETyAkJAorQkVHSU4KKwlyYWlzZSBub3RpY2UgJ3Rl c3QnOworRU5EICQkOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNCwxLEZVTkNUSU9OLERP LCwsIkRPICQkCitCRUdJTgorCXJhaXNlIG5vdGljZSAndGVzdCc7CitFTkQgJCQ7IgorTk9U SUNFOiAgdGVzdAorLS0KKy0tIENyZWF0ZSB0ZXN0IHNjaGVtYQorQ1JFQVRFIFNDSEVNQSB0 ZXN0OworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNSwxLERETCxDUkVBVEUgU0NIRU1BLFND SEVNQSx0ZXN0LENSRUFURSBTQ0hFTUEgdGVzdDsKKy0tCistLSBDb3B5IHBnX2NsYXNzIHRv IHN0ZG91dAorQ09QWSBhY2NvdW50IFRPIHN0ZG91dDsKK05PVElDRTogIEFVRElUOiBTRVNT SU9OLDYsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNjb3VudCxDT1BZIGFjY291bnQg VE8gc3Rkb3V0OworMQl1c2VyMQlIQVNIMgl5YWRhLCB5YWRhCistLQorLS0gQ3JlYXRlIGEg dGFibGUgZnJvbSBhIHF1ZXJ5CitDUkVBVEUgVEFCTEUgdGVzdC5hY2NvdW50X2NvcHkgQVMK K1NFTEVDVCAqCisgIEZST00gYWNjb3VudDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDcs MSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNjb3VudCwiQ1JFQVRFIFRBQkxFIHRlc3Qu YWNjb3VudF9jb3B5IEFTCitTRUxFQ1QgKgorICBGUk9NIGFjY291bnQ7IgorTk9USUNFOiAg QVVESVQ6IFNFU1NJT04sNywxLFdSSVRFLElOU0VSVCxUQUJMRSx0ZXN0LmFjY291bnRfY29w eSwiQ1JFQVRFIFRBQkxFIHRlc3QuYWNjb3VudF9jb3B5IEFTCitTRUxFQ1QgKgorICBGUk9N IGFjY291bnQ7IgorTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNywyLERETCxDUkVBVEUgVEFC TEUgQVMsVEFCTEUsdGVzdC5hY2NvdW50X2NvcHksIkNSRUFURSBUQUJMRSB0ZXN0LmFjY291 bnRfY29weSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50OyIKKy0tCistLSBDb3B5IGZy b20gc3RkaW4gdG8gYWNjb3VudCBjb3B5CitDT1BZIHRlc3QuYWNjb3VudF9jb3B5IGZyb20g c3RkaW47CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw4LDEsV1JJVEUsSU5TRVJULFRBQkxF LHRlc3QuYWNjb3VudF9jb3B5LENPUFkgdGVzdC5hY2NvdW50X2NvcHkgZnJvbSBzdGRpbjsK Ky0tCistLSBUZXN0IHByZXBhcmVkIHN0YXRlbWVudAorUFJFUEFSRSBwZ2NsYXNzc3RtdCAo b2lkKSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50CisgV0hFUkUgaWQgPSAkMTsKK05P VElDRTogIEFVRElUOiBTRVNTSU9OLDksMSxSRUFELFBSRVBBUkUsLCwiUFJFUEFSRSBwZ2Ns YXNzc3RtdCAob2lkKSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50CisgV0hFUkUgaWQg PSAkMTsiCitFWEVDVVRFIHBnY2xhc3NzdG10ICgxKTsKK05PVElDRTogIEFVRElUOiBTRVNT SU9OLDEwLDEsUkVBRCxTRUxFQ1QsVEFCTEUscHVibGljLmFjY291bnQsIlBSRVBBUkUgcGdj bGFzc3N0bXQgKG9pZCkgQVMKK1NFTEVDVCAqCisgIEZST00gYWNjb3VudAorIFdIRVJFIGlk ID0gJDE7IiwxCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxMCwyLFJFQUQsRVhFQ1VURSws LEVYRUNVVEUgcGdjbGFzc3N0bXQgKDEpOworIGlkIHwgbmFtZSAgfCBwYXNzd29yZCB8IGRl c2NyaXB0aW9uIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorICAx IHwgdXNlcjEgfCBIQVNIMiAgICB8IHlhZGEsIHlhZGEKKygxIHJvdykKKworREVBTExPQ0FU RSBwZ2NsYXNzc3RtdDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDExLDEsTUlTQyxERUFM TE9DQVRFLCwsREVBTExPQ0FURSBwZ2NsYXNzc3RtdDsKKy0tCistLSBUZXN0IGN1cnNvciAt IG5vIHRhYmxlcyB3aWxsIGJlIGxvZ2dlZCBzaW5jZSBwZ19jbGFzcyBpcyBhIHN5c3RlbSB0 YWJsZQorQkVHSU47CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxMiwxLE1JU0MsQkVHSU4s LCxCRUdJTjsKK0RFQ0xBUkUgY3Rlc3QgU0NST0xMIENVUlNPUiBGT1IKK1NFTEVDVCBjb3Vu dCgqKQorICBGUk9NCisoCisJU0VMRUNUIHJlbG5hbWUKKwkgIEZST00gcGdfY2xhc3MKKwkg TElNSVQgMQorICkgc3VicXVlcnk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxMywxLFJF QUQsREVDTEFSRSBDVVJTT1IsLCwiREVDTEFSRSBjdGVzdCBTQ1JPTEwgQ1VSU09SIEZPUgor U0VMRUNUIGNvdW50KCopCisgIEZST00KKygKKwlTRUxFQ1QgcmVsbmFtZQorCSAgRlJPTSBw Z19jbGFzcworCSBMSU1JVCAxCisgKSBzdWJxdWVyeTsiCitGRVRDSCBORVhUIEZST00gY3Rl c3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxNCwxLE1JU0MsRkVUQ0gsLCxGRVRDSCBO RVhUIEZST00gY3Rlc3Q7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKwor Q0xPU0UgY3Rlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxNSwxLE1JU0MsQ0xPU0Ug Q1VSU09SLCwsQ0xPU0UgY3Rlc3Q7CitDT01NSVQ7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lP TiwxNSwyLE1JU0MsQ09NTUlULCwsQ09NTUlUOworLS0KKy0tIFRlc3QgcHJlcGFyZWQgaW5z ZXJ0CitDUkVBVEUgVEFCTEUgdGVzdC50ZXN0X2luc2VydAorKAorCWlkIElOVAorKTsKK05P VElDRTogIEFVRElUOiBTRVNTSU9OLDE2LDEsRERMLENSRUFURSBUQUJMRSxUQUJMRSx0ZXN0 LnRlc3RfaW5zZXJ0LCJDUkVBVEUgVEFCTEUgdGVzdC50ZXN0X2luc2VydAorKAorCWlkIElO VAorKTsiCitQUkVQQVJFIHBnY2xhc3NzdG10IChvaWQpIEFTCitJTlNFUlQgSU5UTyB0ZXN0 LnRlc3RfaW5zZXJ0IChpZCkKKyAgICAgICAgICAgICAgICAgICAgICBWQUxVRVMgKCQxKTsK K05PVElDRTogIEFVRElUOiBTRVNTSU9OLDE3LDEsV1JJVEUsUFJFUEFSRSwsLCJQUkVQQVJF IHBnY2xhc3NzdG10IChvaWQpIEFTCitJTlNFUlQgSU5UTyB0ZXN0LnRlc3RfaW5zZXJ0IChp ZCkKKyAgICAgICAgICAgICAgICAgICAgICBWQUxVRVMgKCQxKTsiCitFWEVDVVRFIHBnY2xh c3NzdG10ICgxKTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDE4LDEsV1JJVEUsSU5TRVJU LFRBQkxFLHRlc3QudGVzdF9pbnNlcnQsIlBSRVBBUkUgcGdjbGFzc3N0bXQgKG9pZCkgQVMK K0lOU0VSVCBJTlRPIHRlc3QudGVzdF9pbnNlcnQgKGlkKQorICAgICAgICAgICAgICAgICAg ICAgIFZBTFVFUyAoJDEpOyIsMQorTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMTgsMixXUklU RSxFWEVDVVRFLCwsRVhFQ1VURSBwZ2NsYXNzc3RtdCAoMSk7CistLQorLS0gQ2hlY2sgdGhh dCBwcmltYXJ5IGtleSBjcmVhdGlvbiBpcyBsb2dnZWQKK0NSRUFURSBUQUJMRSBwdWJsaWMu dGVzdAorKAorCWlkIElOVCwKKwluYW1lIFRFWFQsCisJZGVzY3JpcHRpb24gVEVYVCwKKwlD T05TVFJBSU5UIHRlc3RfcGtleSBQUklNQVJZIEtFWSAoaWQpCispOworTk9USUNFOiAgQVVE SVQ6IFNFU1NJT04sMTksMSxEREwsQ1JFQVRFIElOREVYLElOREVYLHB1YmxpYy50ZXN0X3Br ZXksIkNSRUFURSBUQUJMRSBwdWJsaWMudGVzdAorKAorCWlkIElOVCwKKwluYW1lIFRFWFQs CisJZGVzY3JpcHRpb24gVEVYVCwKKwlDT05TVFJBSU5UIHRlc3RfcGtleSBQUklNQVJZIEtF WSAoaWQpCispOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDE5LDIsRERMLENSRUFURSBU QUJMRSxUQUJMRSxwdWJsaWMudGVzdCwiQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0CisoCisJ aWQgSU5ULAorCW5hbWUgVEVYVCwKKwlkZXNjcmlwdGlvbiBURVhULAorCUNPTlNUUkFJTlQg dGVzdF9wa2V5IFBSSU1BUlkgS0VZIChpZCkKKyk7IgorTk9USUNFOiAgQVVESVQ6IFNFU1NJ T04sMTksMixEREwsQ1JFQVRFIFRBQkxFLElOREVYLHB1YmxpYy50ZXN0X3BrZXksIkNSRUFU RSBUQUJMRSBwdWJsaWMudGVzdAorKAorCWlkIElOVCwKKwluYW1lIFRFWFQsCisJZGVzY3Jp cHRpb24gVEVYVCwKKwlDT05TVFJBSU5UIHRlc3RfcGtleSBQUklNQVJZIEtFWSAoaWQpCisp OyIKKy0tCistLSBDaGVjayB0aGF0IGFuYWx5emUgaXMgbG9nZ2VkCitBTkFMWVpFIHRlc3Q7 CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyMCwxLE1JU0MsQU5BTFlaRSwsLEFOQUxZWkUg dGVzdDsKKy0tCistLSBHcmFudHMgdG8gcHVibGljIHNob3VsZCBub3QgY2F1c2Ugb2JqZWN0 IGxvZ2dpbmcgKHNlc3Npb24gbG9nZ2luZyB3aWxsCistLSBzdGlsbCBoYXBwZW4pCitHUkFO VCBTRUxFQ1QKKyAgT04gVEFCTEUgcHVibGljLnRlc3QKKyAgVE8gUFVCTElDOworTk9USUNF OiAgQVVESVQ6IFNFU1NJT04sMjEsMSxST0xFLEdSQU5ULFRBQkxFLCwiR1JBTlQgU0VMRUNU CisgIE9OIFRBQkxFIHB1YmxpYy50ZXN0CisgIFRPIFBVQkxJQzsiCitTRUxFQ1QgKgorICBG Uk9NIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyMiwxLFJFQUQsU0VMRUNULFRB QkxFLHB1YmxpYy50ZXN0LCJTRUxFQ1QgKgorICBGUk9NIHRlc3Q7IgorIGlkIHwgbmFtZSB8 IGRlc2NyaXB0aW9uIAorLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKwor LS0gQ2hlY2sgdGhhdCBzdGF0ZW1lbnRzIHdpdGhvdXQgY29sdW1ucyBsb2cKK1NFTEVDVAor ICBGUk9NIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyMywxLFJFQUQsU0VMRUNU LFRBQkxFLHB1YmxpYy50ZXN0LCJTRUxFQ1QKKyAgRlJPTSB0ZXN0OyIKKy0tCisoMCByb3dz KQorCitTRUxFQ1QgMSwKKwkgICBjdXJyZW50X3VzZXI7CitOT1RJQ0U6ICBBVURJVDogU0VT U0lPTiwyNCwxLFJFQUQsU0VMRUNULCwsIlNFTEVDVCAxLAorCSAgIGN1cnJlbnRfdXNlcjsi CisgP2NvbHVtbj8gfCBjdXJyZW50X3VzZXIgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t CisgICAgICAgIDEgfCBzdXBlcgorKDEgcm93KQorCitETyAkJAorREVDTEFSRQorCXRlc3Qg SU5UOworQkVHSU4KKwlTRUxFQ1QgMQorCSAgSU5UTyB0ZXN0OworRU5EICQkOworTk9USUNF OiAgQVVESVQ6IFNFU1NJT04sMjUsMSxGVU5DVElPTixETywsLCJETyAkJAorREVDTEFSRQor CXRlc3QgSU5UOworQkVHSU4KKwlTRUxFQ1QgMQorCSAgSU5UTyB0ZXN0OworRU5EICQkOyIK K05PVElDRTogIEFVRElUOiBTRVNTSU9OLDI1LDIsUkVBRCxTRUxFQ1QsLCxTRUxFQ1QgMQor Q09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIlNFTEVDVCAxIgorUEwvcGdTUUwgZnVuY3Rpb24g aW5saW5lX2NvZGVfYmxvY2sgbGluZSA1IGF0IFNRTCBzdGF0ZW1lbnQKK2V4cGxhaW4gc2Vs ZWN0IDE7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyNiwxLFJFQUQsU0VMRUNULCwsZXhw bGFpbiBzZWxlY3QgMTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDI2LDIsTUlTQyxFWFBM QUlOLCwsZXhwbGFpbiBzZWxlY3QgMTsKKyAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgUmVzdWx0ICAoY29zdD0wLjAwLi4wLjAxIHJvd3M9MSB3aWR0aD0wKQorKDEgcm93 KQorCistLQorLS0gVGVzdCB0aGF0IGxvb2tzIGluc2lkZSBvZiBkbyBibG9ja3MgbG9nCitJ TlNFUlQgSU5UTyBURVNUIChpZCkKKwkJICBWQUxVRVMgKDEpOworTk9USUNFOiAgQVVESVQ6 IFNFU1NJT04sMjcsMSxXUklURSxJTlNFUlQsVEFCTEUscHVibGljLnRlc3QsIklOU0VSVCBJ TlRPIFRFU1QgKGlkKQorCQkgIFZBTFVFUyAoMSk7IgorSU5TRVJUIElOVE8gVEVTVCAoaWQp CisJCSAgVkFMVUVTICgyKTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDI4LDEsV1JJVEUs SU5TRVJULFRBQkxFLHB1YmxpYy50ZXN0LCJJTlNFUlQgSU5UTyBURVNUIChpZCkKKwkJICBW QUxVRVMgKDIpOyIKK0lOU0VSVCBJTlRPIFRFU1QgKGlkKQorCQkgIFZBTFVFUyAoMyk7CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyOSwxLFdSSVRFLElOU0VSVCxUQUJMRSxwdWJsaWMu dGVzdCwiSU5TRVJUIElOVE8gVEVTVCAoaWQpCisJCSAgVkFMVUVTICgzKTsiCitETyAkJAor REVDTEFSRQorCXJlc3VsdCBSRUNPUkQ7CitCRUdJTgorCUZPUiByZXN1bHQgSU4KKwkJU0VM RUNUIGlkCisJCSAgRlJPTSB0ZXN0CisJTE9PUAorCQlJTlNFUlQgSU5UTyB0ZXN0IChpZCkK KwkJICAgICBWQUxVRVMgKHJlc3VsdC5pZCArIDEwMCk7CisJRU5EIExPT1A7CitFTkQgJCQ7 CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCwxLEZVTkNUSU9OLERPLCwsIkRPICQkCitE RUNMQVJFCisJcmVzdWx0IFJFQ09SRDsKK0JFR0lOCisJRk9SIHJlc3VsdCBJTgorCQlTRUxF Q1QgaWQKKwkJICBGUk9NIHRlc3QKKwlMT09QCisJCUlOU0VSVCBJTlRPIHRlc3QgKGlkKQor CQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAwKTsKKwlFTkQgTE9PUDsKK0VORCAkJDsi CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCwyLFJFQUQsU0VMRUNULFRBQkxFLHB1Ymxp Yy50ZXN0LCJTRUxFQ1QgaWQKKwkJICBGUk9NIHRlc3QiCitDT05URVhUOiAgUEwvcGdTUUwg ZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSA1IGF0IEZPUiBvdmVyIFNFTEVDVCBy b3dzCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCwzLFdSSVRFLElOU0VSVCxUQUJMRSxw dWJsaWMudGVzdCwiSU5TRVJUIElOVE8gdGVzdCAoaWQpCisJCSAgICAgVkFMVUVTIChyZXN1 bHQuaWQgKyAxMDApIiwsLAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIklOU0VSVCBJTlRP IHRlc3QgKGlkKQorCQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAwKSIKK1BML3BnU1FM IGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgOSBhdCBTUUwgc3RhdGVtZW50CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCw0LFdSSVRFLElOU0VSVCxUQUJMRSxwdWJsaWMu dGVzdCwiSU5TRVJUIElOVE8gdGVzdCAoaWQpCisJCSAgICAgVkFMVUVTIChyZXN1bHQuaWQg KyAxMDApIiwsLAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIklOU0VSVCBJTlRPIHRlc3Qg KGlkKQorCQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAwKSIKK1BML3BnU1FMIGZ1bmN0 aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgOSBhdCBTUUwgc3RhdGVtZW50CitOT1RJQ0U6 ICBBVURJVDogU0VTU0lPTiwzMCw1LFdSSVRFLElOU0VSVCxUQUJMRSxwdWJsaWMudGVzdCwi SU5TRVJUIElOVE8gdGVzdCAoaWQpCisJCSAgICAgVkFMVUVTIChyZXN1bHQuaWQgKyAxMDAp IiwsLAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIklOU0VSVCBJTlRPIHRlc3QgKGlkKQor CQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAwKSIKK1BML3BnU1FMIGZ1bmN0aW9uIGlu bGluZV9jb2RlX2Jsb2NrIGxpbmUgOSBhdCBTUUwgc3RhdGVtZW50CistLQorLS0gVGVzdCBj dXJzb3JzIGFuZCBmdW5jdGlvbnMgaW4gYSBkbyBibG9jaworQ1JFQVRFIEZVTkNUSU9OIHB1 YmxpYy50ZXN0KCkKKwlSRVRVUk5TIElOVCBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitERUNM QVJFCisJY3VyMSBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVzdDsKKwl0bXAgSU5UOwor QkVHSU4KKwlPUEVOIGN1cjE7CisJRkVUQ0ggY3VyMSBJTlRPIHRtcDsKKwlDTE9TRSBjdXIx OworCVJFVFVSTiB0bXA7CitlbmQgJCQ7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMSwx LERETCxDUkVBVEUgRlVOQ1RJT04sRlVOQ1RJT04scHVibGljLnRlc3QoKSwiQ1JFQVRFIEZV TkNUSU9OIHB1YmxpYy50ZXN0KCkKKwlSRVRVUk5TIElOVCBMQU5HVUFHRSBwbHBnc3FsIEFT ICQkCitERUNMQVJFCisJY3VyMSBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVzdDsKKwl0 bXAgSU5UOworQkVHSU4KKwlPUEVOIGN1cjE7CisJRkVUQ0ggY3VyMSBJTlRPIHRtcDsKKwlD TE9TRSBjdXIxOworCVJFVFVSTiB0bXA7CitlbmQgJCQ7IgorU0VMRUNUIHB1YmxpYy50ZXN0 KCk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMiwxLFJFQUQsU0VMRUNULCwsU0VMRUNU IHB1YmxpYy50ZXN0KCk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMiwyLEZVTkNUSU9O LEVYRUNVVEUsRlVOQ1RJT04scHVibGljLnRlc3QsU0VMRUNUIHB1YmxpYy50ZXN0KCk7CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMiwzLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy50 ZXN0LFNFTEVDVCAqIEZST00gdGVzdAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHRl c3QoKSBsaW5lIDYgYXQgT1BFTgorIHRlc3QgCistLS0tLS0KKyAgICAxCisoMSByb3cpCisK Ky0tCistLSBUZXN0IG9iZnVzY2F0ZWQgZHluYW1pYyBzcWwgZm9yIGNsZWFuIGxvZ2dpbmcK K0RPICQkCitERUNMQVJFCisJdGFibGVfbmFtZSBURVhUID0gJ2RvX3RhYmxlJzsKK0JFR0lO CisJRVhFQ1VURSAnQ1JFQVRFIFRBQkxFICcgfHwgdGFibGVfbmFtZSB8fCAnICgid2VpcmQg bmFtZSIgSU5UKSc7CisJRVhFQ1VURSAnRFJPUCB0YWJsZSAnIHx8IHRhYmxlX25hbWU7CitF TkQgJCQ7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMywxLEZVTkNUSU9OLERPLCwsIkRP ICQkCitERUNMQVJFCisJdGFibGVfbmFtZSBURVhUID0gJ2RvX3RhYmxlJzsKK0JFR0lOCisJ RVhFQ1VURSAnQ1JFQVRFIFRBQkxFICcgfHwgdGFibGVfbmFtZSB8fCAnICgiIndlaXJkIG5h bWUiIiBJTlQpJzsKKwlFWEVDVVRFICdEUk9QIHRhYmxlICcgfHwgdGFibGVfbmFtZTsKK0VO RCAkJDsiCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMywyLERETCxDUkVBVEUgVEFCTEUs VEFCTEUscHVibGljLmRvX3RhYmxlLCJDUkVBVEUgVEFCTEUgZG9fdGFibGUgKCIid2VpcmQg bmFtZSIiIElOVCkiCitDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiQ1JFQVRFIFRBQkxFIGRv X3RhYmxlICgid2VpcmQgbmFtZSIgSU5UKSIKK1BML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9j b2RlX2Jsb2NrIGxpbmUgNSBhdCBFWEVDVVRFIHN0YXRlbWVudAorTk9USUNFOiAgQVVESVQ6 IFNFU1NJT04sMzMsMyxEREwsRFJPUCBUQUJMRSxUQUJMRSxwdWJsaWMuZG9fdGFibGUsRFJP UCB0YWJsZSBkb190YWJsZQorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIkRST1AgdGFibGUg ZG9fdGFibGUiCitQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBsaW5lIDYg YXQgRVhFQ1VURSBzdGF0ZW1lbnQKKy0tCistLSBHZW5lcmF0ZSBhbiBlcnJvciBhbmQgbWFr ZSBzdXJlIHRoZSBzdGFjayBnZXRzIGNsZWFyZWQKK0RPICQkCitCRUdJTgorCUNSRUFURSBU QUJMRSBib2d1cy50ZXN0X2Jsb2NrCisJKAorCQlpZCBJTlQKKwkpOworRU5EICQkOworTk9U SUNFOiAgQVVESVQ6IFNFU1NJT04sMzQsMSxGVU5DVElPTixETywsLCJETyAkJAorQkVHSU4K KwlDUkVBVEUgVEFCTEUgYm9ndXMudGVzdF9ibG9jaworCSgKKwkJaWQgSU5UCisJKTsKK0VO RCAkJDsiCitFUlJPUjogIHNjaGVtYSAiYm9ndXMiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6 IENSRUFURSBUQUJMRSBib2d1cy50ZXN0X2Jsb2NrCisgICAgICAgICAgICAgICAgICAgICBe CitRVUVSWTogIENSRUFURSBUQUJMRSBib2d1cy50ZXN0X2Jsb2NrCisJKAorCQlpZCBJTlQK KwkpCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGlu ZSAzIGF0IFNRTCBzdGF0ZW1lbnQKKy0tCistLSBUZXN0IGFsdGVyIHRhYmxlIHN0YXRlbWVu dHMKK0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0CisJRFJPUCBDT0xVTU4gZGVzY3JpcHRpb24g OworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMzUsMSxEREwsQUxURVIgVEFCTEUsVEFCTEUg Q09MVU1OLHB1YmxpYy50ZXN0LmRlc2NyaXB0aW9uLCJBTFRFUiBUQUJMRSBwdWJsaWMudGVz dAorCURST1AgQ09MVU1OIGRlc2NyaXB0aW9uIDsiCitOT1RJQ0U6ICBBVURJVDogU0VTU0lP TiwzNSwxLERETCxBTFRFUiBUQUJMRSxUQUJMRSxwdWJsaWMudGVzdCwiQUxURVIgVEFCTEUg cHVibGljLnRlc3QKKwlEUk9QIENPTFVNTiBkZXNjcmlwdGlvbiA7IgorQUxURVIgVEFCTEUg cHVibGljLnRlc3QKKwlSRU5BTUUgVE8gdGVzdDI7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lP TiwzNiwxLERETCxBTFRFUiBUQUJMRSxUQUJMRSxwdWJsaWMudGVzdDIsIkFMVEVSIFRBQkxF IHB1YmxpYy50ZXN0CisJUkVOQU1FIFRPIHRlc3QyOyIKK0FMVEVSIFRBQkxFIHB1YmxpYy50 ZXN0MgorCVNFVCBTQ0hFTUEgdGVzdDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDM3LDEs RERMLEFMVEVSIFRBQkxFLFRBQkxFLHRlc3QudGVzdDIsIkFMVEVSIFRBQkxFIHB1YmxpYy50 ZXN0MgorCVNFVCBTQ0hFTUEgdGVzdDsiCitBTFRFUiBUQUJMRSB0ZXN0LnRlc3QyCisJQURE IENPTFVNTiBkZXNjcmlwdGlvbiBURVhUOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMzgs MSxEREwsQUxURVIgVEFCTEUsVEFCTEUsdGVzdC50ZXN0MiwiQUxURVIgVEFCTEUgdGVzdC50 ZXN0MgorCUFERCBDT0xVTU4gZGVzY3JpcHRpb24gVEVYVDsiCitBTFRFUiBUQUJMRSB0ZXN0 LnRlc3QyCisJRFJPUCBDT0xVTU4gZGVzY3JpcHRpb247CitOT1RJQ0U6ICBBVURJVDogU0VT U0lPTiwzOSwxLERETCxBTFRFUiBUQUJMRSxUQUJMRSBDT0xVTU4sdGVzdC50ZXN0Mi5kZXNj cmlwdGlvbiwiQUxURVIgVEFCTEUgdGVzdC50ZXN0MgorCURST1AgQ09MVU1OIGRlc2NyaXB0 aW9uOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDM5LDEsRERMLEFMVEVSIFRBQkxFLFRB QkxFLHRlc3QudGVzdDIsIkFMVEVSIFRBQkxFIHRlc3QudGVzdDIKKwlEUk9QIENPTFVNTiBk ZXNjcmlwdGlvbjsiCitEUk9QIFRBQkxFIHRlc3QudGVzdDI7CitOT1RJQ0U6ICBBVURJVDog U0VTU0lPTiw0MCwxLERETCxEUk9QIFRBQkxFLFRBQkxFLHRlc3QudGVzdDIsRFJPUCBUQUJM RSB0ZXN0LnRlc3QyOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDAsMSxEREwsRFJPUCBU QUJMRSxUQUJMRSBDT05TVFJBSU5ULHRlc3RfcGtleSBvbiB0ZXN0LnRlc3QyLERST1AgVEFC TEUgdGVzdC50ZXN0MjsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQwLDEsRERMLERST1Ag VEFCTEUsSU5ERVgsdGVzdC50ZXN0X3BrZXksRFJPUCBUQUJMRSB0ZXN0LnRlc3QyOworLS0K Ky0tIFRlc3QgYWdncmVnYXRlCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLmludF9hZGQKKygK KwlhIElOVCwKKwliIElOVAorKQorCVJFVFVSTlMgSU5UIExBTkdVQUdFIHBscGdzcWwgQVMg JCQKK0JFR0lOCisJcmV0dXJuIGEgKyBiOworRU5EICQkOworTk9USUNFOiAgQVVESVQ6IFNF U1NJT04sNDEsMSxEREwsQ1JFQVRFIEZVTkNUSU9OLEZVTkNUSU9OLCJwdWJsaWMuaW50X2Fk ZChpbnRlZ2VyLGludGVnZXIpIiwiQ1JFQVRFIEZVTkNUSU9OIHB1YmxpYy5pbnRfYWRkCiso CisJYSBJTlQsCisJYiBJTlQKKykKKwlSRVRVUk5TIElOVCBMQU5HVUFHRSBwbHBnc3FsIEFT ICQkCitCRUdJTgorCXJldHVybiBhICsgYjsKK0VORCAkJDsiCitTRUxFQ1QgaW50X2FkZCgx LCAxKTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQyLDEsUkVBRCxTRUxFQ1QsLCwiU0VM RUNUIGludF9hZGQoMSwgMSk7IgorTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDIsMixGVU5D VElPTixFWEVDVVRFLEZVTkNUSU9OLHB1YmxpYy5pbnRfYWRkLCJTRUxFQ1QgaW50X2FkZCgx LCAxKTsiCisgaW50X2FkZCAKKy0tLS0tLS0tLQorICAgICAgIDIKKygxIHJvdykKKworQ1JF QVRFIEFHR1JFR0FURSBwdWJsaWMuc3VtX3Rlc3QoSU5UKSAoU0ZVTkM9cHVibGljLmludF9h ZGQsIFNUWVBFPUlOVCwgSU5JVENPTkQ9JzAnKTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9O LDQzLDEsRERMLENSRUFURSBBR0dSRUdBVEUsQUdHUkVHQVRFLHB1YmxpYy5zdW1fdGVzdChp bnRlZ2VyKSwiQ1JFQVRFIEFHR1JFR0FURSBwdWJsaWMuc3VtX3Rlc3QoSU5UKSAoU0ZVTkM9 cHVibGljLmludF9hZGQsIFNUWVBFPUlOVCwgSU5JVENPTkQ9JzAnKTsiCitBTFRFUiBBR0dS RUdBVEUgcHVibGljLnN1bV90ZXN0KGludGVnZXIpIFJFTkFNRSBUTyBzdW1fdGVzdDI7CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0NCwxLERETCxBTFRFUiBBR0dSRUdBVEUsQUdHUkVH QVRFLHB1YmxpYy5zdW1fdGVzdDIoaW50ZWdlciksQUxURVIgQUdHUkVHQVRFIHB1YmxpYy5z dW1fdGVzdChpbnRlZ2VyKSBSRU5BTUUgVE8gc3VtX3Rlc3QyOworLS0KKy0tIFRlc3QgY29u dmVyc2lvbgorQ1JFQVRFIENPTlZFUlNJT04gcHVibGljLmNvbnZlcnNpb25fdGVzdCBGT1Ig J1NRTF9BU0NJSScgVE8gJ01VTEVfSU5URVJOQUwnIEZST00gcGdfY2F0YWxvZy5hc2NpaV90 b19taWM7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0NSwxLERETCxDUkVBVEUgQ09OVkVS U0lPTixDT05WRVJTSU9OLHB1YmxpYy5jb252ZXJzaW9uX3Rlc3QsQ1JFQVRFIENPTlZFUlNJ T04gcHVibGljLmNvbnZlcnNpb25fdGVzdCBGT1IgJ1NRTF9BU0NJSScgVE8gJ01VTEVfSU5U RVJOQUwnIEZST00gcGdfY2F0YWxvZy5hc2NpaV90b19taWM7CitBTFRFUiBDT05WRVJTSU9O IHB1YmxpYy5jb252ZXJzaW9uX3Rlc3QgUkVOQU1FIFRPIGNvbnZlcnNpb25fdGVzdDI7CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0NiwxLERETCxBTFRFUiBDT05WRVJTSU9OLENPTlZF UlNJT04scHVibGljLmNvbnZlcnNpb25fdGVzdDIsQUxURVIgQ09OVkVSU0lPTiBwdWJsaWMu Y29udmVyc2lvbl90ZXN0IFJFTkFNRSBUTyBjb252ZXJzaW9uX3Rlc3QyOworLS0KKy0tIFRl c3QgY3JlYXRlL2FsdGVyL2Ryb3AgZGF0YWJhc2UKK0NSRUFURSBEQVRBQkFTRSBjb250cmli X3JlZ3Jlc3Npb25fcGdhdWRpdDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQ3LDEsRERM LENSRUFURSBEQVRBQkFTRSwsLENSRUFURSBEQVRBQkFTRSBjb250cmliX3JlZ3Jlc3Npb25f cGdhdWRpdDsKK0FMVEVSIERBVEFCQVNFIGNvbnRyaWJfcmVncmVzc2lvbl9wZ2F1ZGl0IFJF TkFNRSBUTyBjb250cmliX3JlZ3Jlc3Npb25fcGdhdWRpdDI7CitOT1RJQ0U6ICBBVURJVDog U0VTU0lPTiw0OCwxLERETCxBTFRFUiBEQVRBQkFTRSwsLEFMVEVSIERBVEFCQVNFIGNvbnRy aWJfcmVncmVzc2lvbl9wZ2F1ZGl0IFJFTkFNRSBUTyBjb250cmliX3JlZ3Jlc3Npb25fcGdh dWRpdDI7CitEUk9QIERBVEFCQVNFIGNvbnRyaWJfcmVncmVzc2lvbl9wZ2F1ZGl0MjsKK05P VElDRTogIEFVRElUOiBTRVNTSU9OLDQ5LDEsRERMLERST1AgREFUQUJBU0UsLCxEUk9QIERB VEFCQVNFIGNvbnRyaWJfcmVncmVzc2lvbl9wZ2F1ZGl0MjsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfYXVkaXQvZXhwZWN0ZWQvcGdfYXVkaXQub3V0IGIvY29udHJpYi9wZ19hdWRpdC9l eHBlY3RlZC9wZ19hdWRpdC5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZjc2NjU0ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfYXVkaXQvZXhwZWN0 ZWQvcGdfYXVkaXQub3V0CkBAIC0wLDAgKzEsODY2IEBACistLSBMb2FkIHBnX2F1ZGl0IG1v ZHVsZQorY3JlYXRlIGV4dGVuc2lvbiBwZ19hdWRpdDsKKy0tCistLSBDcmVhdGUgYSBzdXBl cnVzZXIgcm9sZSB0aGF0IHdlIGtub3cgdGhlIG5hbWUgb2YgZm9yIHRlc3RpbmcKK0NSRUFU RSBVU0VSIHN1cGVyIFNVUEVSVVNFUjsKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiBz dXBlcjsKKy0tCistLSBDcmVhdGUgYXVkaXRvciByb2xlCitDUkVBVEUgUk9MRSBhdWRpdG9y OworLS0KKy0tIENyZWF0ZSBmaXJzdCB0ZXN0IHVzZXIKK0NSRUFURSBVU0VSIHVzZXIxOwor QUxURVIgUk9MRSB1c2VyMSBTRVQgcGdfYXVkaXQubG9nID0gJ2RkbCwgUk9MRSc7CitBTFRF UiBST0xFIHVzZXIxIFNFVCBwZ19hdWRpdC5sb2dfbm90aWNlID0gb247CistLQorLS0gQ3Jl YXRlLCBzZWxlY3QsIGRyb3AgKHNlbGVjdCB3aWxsIG5vdCBiZSBhdWRpdGVkKQorXGNvbm5l Y3QgY29udHJpYl9yZWdyZXNzaW9uIHVzZXIxCitDUkVBVEUgVEFCTEUgcHVibGljLnRlc3Qg KGlkIElOVCk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxLDEsRERMLENSRUFURSBUQUJM RSxUQUJMRSxwdWJsaWMudGVzdCxDUkVBVEUgVEFCTEUgcHVibGljLnRlc3QgKGlkIElOVCk7 CitTRUxFQ1QgKiBGUk9NIHRlc3Q7CisgaWQgCistLS0tCisoMCByb3dzKQorCitEUk9QIFRB QkxFIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyLDEsRERMLERST1AgVEFCTEUs VEFCTEUscHVibGljLnRlc3QsRFJPUCBUQUJMRSB0ZXN0OworLS0KKy0tIENyZWF0ZSBzZWNv bmQgdGVzdCB1c2VyCitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gc3VwZXIKK0NSRUFU RSBVU0VSIHVzZXIyOworQUxURVIgUk9MRSB1c2VyMiBTRVQgcGdfYXVkaXQubG9nID0gJ1Jl YWQsIHdyaXRFJzsKK0FMVEVSIFJPTEUgdXNlcjIgU0VUIHBnX2F1ZGl0LmxvZ19ub3RpY2Ug PSBvbjsKK0FMVEVSIFJPTEUgdXNlcjIgU0VUIHBnX2F1ZGl0LnJvbGUgPSBhdWRpdG9yOwor XGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9uIHVzZXIyCitDUkVBVEUgVEFCTEUgdGVzdDIg KGlkIElOVCk7CitHUkFOVCBTRUxFQ1QgT04gVEFCTEUgcHVibGljLnRlc3QyIFRPIGF1ZGl0 b3I7CistLQorLS0gUm9sZS1iYXNlZCB0ZXN0cworQ1JFQVRFIFRBQkxFIHRlc3QzCisoCisJ aWQgSU5UCispOworU0VMRUNUIGNvdW50KCopCisgIEZST00KKygKKwlTRUxFQ1QgcmVsbmFt ZQorCSAgRlJPTSBwZ19jbGFzcworCSAgTElNSVQgMQorKSBTVUJRVUVSWTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgKgorICBGUk9NIHRlc3QzLCB0 ZXN0MjsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDEsMSxSRUFELFNFTEVDVCwsLCJTRUxF Q1QgKgorICBGUk9NIHRlc3QzLCB0ZXN0MjsiCitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDEs MSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMudGVzdDIsIlNFTEVDVCAqCisgIEZST00gdGVz dDMsIHRlc3QyOyIKKyBpZCB8IGlkIAorLS0tLSstLS0tCisoMCByb3dzKQorCitHUkFOVCBJ TlNFUlQKKyAgIE9OIFRBQkxFIHB1YmxpYy50ZXN0MworICAgVE8gYXVkaXRvcjsKKy0tCist LSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBpbnNlcnQgb24gdGVzdDMKKy0tIHNl bGVjdCBvbiB0ZXN0MgorV0lUSCBDVEUgQVMKKygKKwlTRUxFQ1QgaWQKKwkgIEZST00gdGVz dDIKKykKK0lOU0VSVCBJTlRPIHRlc3QzCitTRUxFQ1QgaWQKKyAgRlJPTSBjdGU7CitOT1RJ Q0U6ICBBVURJVDogU0VTU0lPTiwyLDEsV1JJVEUsSU5TRVJULCwsIldJVEggQ1RFIEFTCiso CisJU0VMRUNUIGlkCisJICBGUk9NIHRlc3QyCispCitJTlNFUlQgSU5UTyB0ZXN0MworU0VM RUNUIGlkCisgIEZST00gY3RlOyIKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsMiwxLFdSSVRF LElOU0VSVCxUQUJMRSxwdWJsaWMudGVzdDMsIldJVEggQ1RFIEFTCisoCisJU0VMRUNUIGlk CisJICBGUk9NIHRlc3QyCispCitJTlNFUlQgSU5UTyB0ZXN0MworU0VMRUNUIGlkCisgIEZS T00gY3RlOyIKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsMiwxLFJFQUQsU0VMRUNULFRBQkxF LHB1YmxpYy50ZXN0MiwiV0lUSCBDVEUgQVMKKygKKwlTRUxFQ1QgaWQKKwkgIEZST00gdGVz dDIKKykKK0lOU0VSVCBJTlRPIHRlc3QzCitTRUxFQ1QgaWQKKyAgRlJPTSBjdGU7IgorLS0K Ky0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIGluc2VydCBvbiB0ZXN0MworV0lU SCBDVEUgQVMKKygKKwlJTlNFUlQgSU5UTyB0ZXN0MyBWQUxVRVMgKDEpCisJICAgICAgICAg ICAgICAgUkVUVVJOSU5HIGlkCispCitJTlNFUlQgSU5UTyB0ZXN0MgorU0VMRUNUIGlkCisg IEZST00gY3RlOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMywxLFdSSVRFLElOU0VSVCws LCJXSVRIIENURSBBUworKAorCUlOU0VSVCBJTlRPIHRlc3QzIFZBTFVFUyAoMSkKKwkgICAg ICAgICAgICAgICBSRVRVUk5JTkcgaWQKKykKK0lOU0VSVCBJTlRPIHRlc3QyCitTRUxFQ1Qg aWQKKyAgRlJPTSBjdGU7IgorTk9USUNFOiAgQVVESVQ6IE9CSkVDVCwzLDEsV1JJVEUsSU5T RVJULFRBQkxFLHB1YmxpYy50ZXN0MywiV0lUSCBDVEUgQVMKKygKKwlJTlNFUlQgSU5UTyB0 ZXN0MyBWQUxVRVMgKDEpCisJICAgICAgICAgICAgICAgUkVUVVJOSU5HIGlkCispCitJTlNF UlQgSU5UTyB0ZXN0MgorU0VMRUNUIGlkCisgIEZST00gY3RlOyIKK0dSQU5UIFVQREFURSBP TiBUQUJMRSBwdWJsaWMudGVzdDIgVE8gYXVkaXRvcjsKKy0tCistLSBPYmplY3QgbG9nZ2Vk IGJlY2F1c2Ugb2Y6CistLSBpbnNlcnQgb24gdGVzdDMKKy0tIHVwZGF0ZSBvbiB0ZXN0Mgor V0lUSCBDVEUgQVMKKygKKwlVUERBVEUgdGVzdDIKKwkgICBTRVQgaWQgPSAxCisJUkVUVVJO SU5HIGlkCispCitJTlNFUlQgSU5UTyB0ZXN0MworU0VMRUNUIGlkCisgIEZST00gY3RlOwor Tk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNCwxLFdSSVRFLElOU0VSVCwsLCJXSVRIIENURSBB UworKAorCVVQREFURSB0ZXN0MgorCSAgIFNFVCBpZCA9IDEKKwlSRVRVUk5JTkcgaWQKKykK K0lOU0VSVCBJTlRPIHRlc3QzCitTRUxFQ1QgaWQKKyAgRlJPTSBjdGU7IgorTk9USUNFOiAg QVVESVQ6IE9CSkVDVCw0LDEsV1JJVEUsSU5TRVJULFRBQkxFLHB1YmxpYy50ZXN0MywiV0lU SCBDVEUgQVMKKygKKwlVUERBVEUgdGVzdDIKKwkgICBTRVQgaWQgPSAxCisJUkVUVVJOSU5H IGlkCispCitJTlNFUlQgSU5UTyB0ZXN0MworU0VMRUNUIGlkCisgIEZST00gY3RlOyIKK05P VElDRTogIEFVRElUOiBPQkpFQ1QsNCwxLFdSSVRFLFVQREFURSxUQUJMRSxwdWJsaWMudGVz dDIsIldJVEggQ1RFIEFTCisoCisJVVBEQVRFIHRlc3QyCisJICAgU0VUIGlkID0gMQorCVJF VFVSTklORyBpZAorKQorSU5TRVJUIElOVE8gdGVzdDMKK1NFTEVDVCBpZAorICBGUk9NIGN0 ZTsiCistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNlIG9mOgorLS0gaW5zZXJ0IG9uIHRl c3QyCitXSVRIIENURSBBUworKAorCUlOU0VSVCBJTlRPIHRlc3QyIFZBTFVFUyAoMSkKKwkg ICAgICAgICAgICAgICBSRVRVUk5JTkcgaWQKKykKK1VQREFURSB0ZXN0MworICAgU0VUIGlk ID0gY3RlLmlkCisgIEZST00gY3RlCisgV0hFUkUgdGVzdDMuaWQgPD4gY3RlLmlkOworTk9U SUNFOiAgQVVESVQ6IFNFU1NJT04sNSwxLFdSSVRFLFVQREFURSwsLCJXSVRIIENURSBBUwor KAorCUlOU0VSVCBJTlRPIHRlc3QyIFZBTFVFUyAoMSkKKwkgICAgICAgICAgICAgICBSRVRV Uk5JTkcgaWQKKykKK1VQREFURSB0ZXN0MworICAgU0VUIGlkID0gY3RlLmlkCisgIEZST00g Y3RlCisgV0hFUkUgdGVzdDMuaWQgPD4gY3RlLmlkOyIKK05PVElDRTogIEFVRElUOiBPQkpF Q1QsNSwxLFdSSVRFLElOU0VSVCxUQUJMRSxwdWJsaWMudGVzdDIsIldJVEggQ1RFIEFTCiso CisJSU5TRVJUIElOVE8gdGVzdDIgVkFMVUVTICgxKQorCSAgICAgICAgICAgICAgIFJFVFVS TklORyBpZAorKQorVVBEQVRFIHRlc3QzCisgICBTRVQgaWQgPSBjdGUuaWQKKyAgRlJPTSBj dGUKKyBXSEVSRSB0ZXN0My5pZCA8PiBjdGUuaWQ7IgorLS0KKy0tIENoYW5nZSBwZXJtaXNz aW9ucyBvZiB1c2VyIDIgc28gdGhhdCBvbmx5IG9iamVjdCBsb2dnaW5nIHdpbGwgYmUgZG9u ZQorXGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9uIHN1cGVyCithbHRlciByb2xlIHVzZXIy IHNldCBwZ19hdWRpdC5sb2cgPSAnTk9ORSc7CitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Np b24gdXNlcjIKKy0tCistLSBDcmVhdGUgdGVzdDQgYW5kIGFkZCBwZXJtaXNzaW9ucworQ1JF QVRFIFRBQkxFIHRlc3Q0CisoCisJaWQgaW50LAorCW5hbWUgdGV4dAorKTsKK0dSQU5UIFNF TEVDVCAobmFtZSkKKyAgIE9OIFRBQkxFIHB1YmxpYy50ZXN0NAorICAgVE8gYXVkaXRvcjsK K0dSQU5UIFVQREFURSAoaWQpCisgICBPTiBUQUJMRSBwdWJsaWMudGVzdDQKKyAgIFRPIGF1 ZGl0b3I7CitHUkFOVCBpbnNlcnQgKG5hbWUpCisgICBPTiBUQUJMRSBwdWJsaWMudGVzdDQK KyAgIFRPIGF1ZGl0b3I7CistLQorLS0gTm90IG9iamVjdCBsb2dnZWQKK1NFTEVDVCBpZAor ICBGUk9NIHB1YmxpYy50ZXN0NDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKKy0tCistLSBP YmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBzZWxlY3QgKG5hbWUpIG9uIHRlc3Q0CitT RUxFQ1QgbmFtZQorICBGUk9NIHB1YmxpYy50ZXN0NDsKK05PVElDRTogIEFVRElUOiBPQkpF Q1QsMSwxLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy50ZXN0NCwiU0VMRUNUIG5hbWUKKyAg RlJPTSBwdWJsaWMudGVzdDQ7IgorIG5hbWUgCistLS0tLS0KKygwIHJvd3MpCisKKy0tCist LSBOb3Qgb2JqZWN0IGxvZ2dlZAorSU5TRVJUIElOVE8gcHVibGljLnRlc3Q0IChpZCkKKyAg ICAgICAgICAgICAgICAgIFZBTFVFUyAoMSk7CistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNh dXNlIG9mOgorLS0gaW5zZXJ0IChuYW1lKSBvbiB0ZXN0NAorSU5TRVJUIElOVE8gcHVibGlj LnRlc3Q0IChuYW1lKQorICAgICAgICAgICAgICAgICAgVkFMVUVTICgndGVzdCcpOworTk9U SUNFOiAgQVVESVQ6IE9CSkVDVCwyLDEsV1JJVEUsSU5TRVJULFRBQkxFLHB1YmxpYy50ZXN0 NCwiSU5TRVJUIElOVE8gcHVibGljLnRlc3Q0IChuYW1lKQorICAgICAgICAgICAgICAgICAg VkFMVUVTICgndGVzdCcpOyIKKy0tCistLSBOb3Qgb2JqZWN0IGxvZ2dlZAorVVBEQVRFIHB1 YmxpYy50ZXN0NAorICAgU0VUIG5hbWUgPSAnZm9vJzsKKy0tCistLSBPYmplY3QgbG9nZ2Vk IGJlY2F1c2Ugb2Y6CistLSB1cGRhdGUgKGlkKSBvbiB0ZXN0NAorVVBEQVRFIHB1YmxpYy50 ZXN0NAorICAgU0VUIGlkID0gMTsKK05PVElDRTogIEFVRElUOiBPQkpFQ1QsMywxLFdSSVRF LFVQREFURSxUQUJMRSxwdWJsaWMudGVzdDQsIlVQREFURSBwdWJsaWMudGVzdDQKKyAgIFNF VCBpZCA9IDE7IgorLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHVwZGF0 ZSAobmFtZSkgb24gdGVzdDQKKy0tIHVwZGF0ZSAobmFtZSkgdGFrZXMgcHJlY2VkZW5jZSBv dmVyIHNlbGVjdCAobmFtZSkgZHVlIHRvIG9yZGVyaW5nCit1cGRhdGUgcHVibGljLnRlc3Q0 IHNldCBuYW1lID0gJ2Zvbycgd2hlcmUgbmFtZSA9ICdiYXInOworTk9USUNFOiAgQVVESVQ6 IE9CSkVDVCw0LDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1YmxpYy50ZXN0NCx1cGRhdGUgcHVi bGljLnRlc3Q0IHNldCBuYW1lID0gJ2Zvbycgd2hlcmUgbmFtZSA9ICdiYXInOworLS0KKy0t IERyb3AgdGVzdCB0YWJsZXMKK2Ryb3AgdGFibGUgdGVzdDI7Citkcm9wIHRhYmxlIHRlc3Qz OworZHJvcCB0YWJsZSB0ZXN0NDsKKy0tCistLSBDaGFuZ2UgcGVybWlzc2lvbnMgb2YgdXNl ciAxIHNvIHRoYXQgc2Vzc2lvbiBsb2dnaW5nIHdpbGwgYmUgZG9uZQorXGNvbm5lY3QgY29u dHJpYl9yZWdyZXNzaW9uIHN1cGVyCithbHRlciByb2xlIHVzZXIxIHNldCBwZ19hdWRpdC5s b2cgPSAnRERMLCBSRUFEJzsKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiB1c2VyMQor LS0KKy0tIENyZWF0ZSB0YWJsZSBpcyBzZXNzaW9uIGxvZ2dlZAorQ1JFQVRFIFRBQkxFIHB1 YmxpYy5hY2NvdW50CisoCisJaWQgSU5ULAorCW5hbWUgVEVYVCwKKwlwYXNzd29yZCBURVhU LAorCWRlc2NyaXB0aW9uIFRFWFQKKyk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxLDEs RERMLENSRUFURSBUQUJMRSxUQUJMRSxwdWJsaWMuYWNjb3VudCwiQ1JFQVRFIFRBQkxFIHB1 YmxpYy5hY2NvdW50CisoCisJaWQgSU5ULAorCW5hbWUgVEVYVCwKKwlwYXNzd29yZCBURVhU LAorCWRlc2NyaXB0aW9uIFRFWFQKKyk7IgorLS0KKy0tIFNlbGVjdCBpcyBzZXNzaW9uIGxv Z2dlZAorU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50OworTk9USUNFOiAgQVVESVQ6IFNFU1NJ T04sMiwxLFJFQUQsU0VMRUNULCwsIlNFTEVDVCAqCisgIEZST00gYWNjb3VudDsiCisgaWQg fCBuYW1lIHwgcGFzc3dvcmQgfCBkZXNjcmlwdGlvbiAKKy0tLS0rLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworLS0KKy0tIEluc2VydCBpcyBub3QgbG9n Z2VkCitJTlNFUlQgSU5UTyBhY2NvdW50IChpZCwgbmFtZSwgcGFzc3dvcmQsIGRlc2NyaXB0 aW9uKQorCQkJIFZBTFVFUyAoMSwgJ3VzZXIxJywgJ0hBU0gxJywgJ2JsYWgsIGJsYWgnKTsK Ky0tCistLSBDaGFuZ2UgcGVybWlzc2lvbnMgb2YgdXNlciAxIHNvIHRoYXQgb25seSBvYmpl Y3QgbG9nZ2luZyB3aWxsIGJlIGRvbmUKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiBz dXBlcgorYWx0ZXIgcm9sZSB1c2VyMSBzZXQgcGdfYXVkaXQubG9nID0gJ25vbmUnOworYWx0 ZXIgcm9sZSB1c2VyMSBzZXQgcGdfYXVkaXQucm9sZSA9ICdhdWRpdG9yJzsKK1xjb25uZWN0 IGNvbnRyaWJfcmVncmVzc2lvbiB1c2VyMQorLS0KKy0tIEF1ZGl0b3IgZ3JhbnRzIG5vdCBs b2dnZWQKK0dSQU5UIFNFTEVDVCAocGFzc3dvcmQpLAorCSAgVVBEQVRFIChuYW1lLCBwYXNz d29yZCkKKyAgIE9OIFRBQkxFIHB1YmxpYy5hY2NvdW50CisgICBUTyBhdWRpdG9yOworLS0K Ky0tIE5vdCBvYmplY3QgbG9nZ2VkCitTRUxFQ1QgaWQsCisJICAgbmFtZQorICBGUk9NIGFj Y291bnQ7CisgaWQgfCBuYW1lICAKKy0tLS0rLS0tLS0tLQorICAxIHwgdXNlcjEKKygxIHJv dykKKworLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHNlbGVjdCAocGFz c3dvcmQpIG9uIGFjY291bnQKK1NFTEVDVCBwYXNzd29yZAorICBGUk9NIGFjY291bnQ7CitO T1RJQ0U6ICBBVURJVDogT0JKRUNULDEsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNj b3VudCwiU0VMRUNUIHBhc3N3b3JkCisgIEZST00gYWNjb3VudDsiCisgcGFzc3dvcmQgCist LS0tLS0tLS0tCisgSEFTSDEKKygxIHJvdykKKworLS0KKy0tIE5vdCBvYmplY3QgbG9nZ2Vk CitVUERBVEUgYWNjb3VudAorICAgU0VUIGRlc2NyaXB0aW9uID0gJ3lhZGEsIHlhZGEnOwor LS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHVwZGF0ZSAocGFzc3dvcmQp IG9uIGFjY291bnQKK1VQREFURSBhY2NvdW50CisgICBTRVQgcGFzc3dvcmQgPSAnSEFTSDIn OworTk9USUNFOiAgQVVESVQ6IE9CSkVDVCwyLDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1Ymxp Yy5hY2NvdW50LCJVUERBVEUgYWNjb3VudAorICAgU0VUIHBhc3N3b3JkID0gJ0hBU0gyJzsi CistLQorLS0gQ2hhbmdlIHBlcm1pc3Npb25zIG9mIHVzZXIgMSBzbyB0aGF0IHNlc3Npb24g cmVsYXRpb24gbG9nZ2luZyB3aWxsIGJlIGRvbmUKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVz c2lvbiBzdXBlcgorYWx0ZXIgcm9sZSB1c2VyMSBzZXQgcGdfYXVkaXQubG9nX3JlbGF0aW9u ID0gb247CithbHRlciByb2xlIHVzZXIxIHNldCBwZ19hdWRpdC5sb2cgPSAncmVhZCwgV1JJ VEUnOworXGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9uIHVzZXIxCistLQorLS0gTm90IGxv Z2dlZAorY3JlYXRlIHRhYmxlIEFDQ09VTlRfUk9MRV9NQVAKKygKKwlhY2NvdW50X2lkIElO VCwKKwlyb2xlX2lkIElOVAorKTsKKy0tCistLSBBdWRpdG9yIGdyYW50cyBub3QgbG9nZ2Vk CitHUkFOVCBTRUxFQ1QKKyAgIE9OIFRBQkxFIHB1YmxpYy5hY2NvdW50X3JvbGVfbWFwCisg ICBUTyBhdWRpdG9yOworLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHNl bGVjdCAocGFzc3dvcmQpIG9uIGFjY291bnQKKy0tIHNlbGVjdCBvbiBhY2NvdW50X3JvbGVf bWFwCistLSBTZXNzaW9uIGxvZ2dlZCBvbiBhbGwgdGFibGVzIGJlY2F1c2UgbG9nID0gcmVh ZCBhbmQgbG9nX3JlbGF0aW9uID0gb24KK1NFTEVDVCBhY2NvdW50LnBhc3N3b3JkLAorCSAg IGFjY291bnRfcm9sZV9tYXAucm9sZV9pZAorICBGUk9NIGFjY291bnQKKwkgICBJTk5FUiBK T0lOIGFjY291bnRfcm9sZV9tYXAKKwkJCW9uIGFjY291bnQuaWQgPSBhY2NvdW50X3JvbGVf bWFwLmFjY291bnRfaWQ7CitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDEsMSxSRUFELFNFTEVD VCxUQUJMRSxwdWJsaWMuYWNjb3VudCwiU0VMRUNUIGFjY291bnQucGFzc3dvcmQsCisJICAg YWNjb3VudF9yb2xlX21hcC5yb2xlX2lkCisgIEZST00gYWNjb3VudAorCSAgIElOTkVSIEpP SU4gYWNjb3VudF9yb2xlX21hcAorCQkJb24gYWNjb3VudC5pZCA9IGFjY291bnRfcm9sZV9t YXAuYWNjb3VudF9pZDsiCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxLDEsUkVBRCxTRUxF Q1QsVEFCTEUscHVibGljLmFjY291bnQsIlNFTEVDVCBhY2NvdW50LnBhc3N3b3JkLAorCSAg IGFjY291bnRfcm9sZV9tYXAucm9sZV9pZAorICBGUk9NIGFjY291bnQKKwkgICBJTk5FUiBK T0lOIGFjY291bnRfcm9sZV9tYXAKKwkJCW9uIGFjY291bnQuaWQgPSBhY2NvdW50X3JvbGVf bWFwLmFjY291bnRfaWQ7IgorTk9USUNFOiAgQVVESVQ6IE9CSkVDVCwxLDEsUkVBRCxTRUxF Q1QsVEFCTEUscHVibGljLmFjY291bnRfcm9sZV9tYXAsIlNFTEVDVCBhY2NvdW50LnBhc3N3 b3JkLAorCSAgIGFjY291bnRfcm9sZV9tYXAucm9sZV9pZAorICBGUk9NIGFjY291bnQKKwkg ICBJTk5FUiBKT0lOIGFjY291bnRfcm9sZV9tYXAKKwkJCW9uIGFjY291bnQuaWQgPSBhY2Nv dW50X3JvbGVfbWFwLmFjY291bnRfaWQ7IgorTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMSwx LFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy5hY2NvdW50X3JvbGVfbWFwLCJTRUxFQ1QgYWNj b3VudC5wYXNzd29yZCwKKwkgICBhY2NvdW50X3JvbGVfbWFwLnJvbGVfaWQKKyAgRlJPTSBh Y2NvdW50CisJICAgSU5ORVIgSk9JTiBhY2NvdW50X3JvbGVfbWFwCisJCQlvbiBhY2NvdW50 LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lkOyIKKyBwYXNzd29yZCB8IHJvbGVf aWQgCistLS0tLS0tLS0tKy0tLS0tLS0tLQorKDAgcm93cykKKworLS0KKy0tIE9iamVjdCBs b2dnZWQgYmVjYXVzZSBvZjoKKy0tIHNlbGVjdCAocGFzc3dvcmQpIG9uIGFjY291bnQKKy0t IFNlc3Npb24gbG9nZ2VkIG9uIGFsbCB0YWJsZXMgYmVjYXVzZSBsb2cgPSByZWFkIGFuZCBs b2dfcmVsYXRpb24gPSBvbgorU0VMRUNUIHBhc3N3b3JkCisgIEZST00gYWNjb3VudDsKK05P VElDRTogIEFVRElUOiBPQkpFQ1QsMiwxLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy5hY2Nv dW50LCJTRUxFQ1QgcGFzc3dvcmQKKyAgRlJPTSBhY2NvdW50OyIKK05PVElDRTogIEFVRElU OiBTRVNTSU9OLDIsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNjb3VudCwiU0VMRUNU IHBhc3N3b3JkCisgIEZST00gYWNjb3VudDsiCisgcGFzc3dvcmQgCistLS0tLS0tLS0tCisg SEFTSDIKKygxIHJvdykKKworLS0KKy0tIE5vdCBvYmplY3QgbG9nZ2VkCistLSBTZXNzaW9u IGxvZ2dlZCBvbiBhbGwgdGFibGVzIGJlY2F1c2UgbG9nID0gcmVhZCBhbmQgbG9nX3JlbGF0 aW9uID0gb24KK1VQREFURSBhY2NvdW50CisgICBTRVQgZGVzY3JpcHRpb24gPSAneWFkYSwg eWFkYSc7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzLDEsV1JJVEUsVVBEQVRFLFRBQkxF LHB1YmxpYy5hY2NvdW50LCJVUERBVEUgYWNjb3VudAorICAgU0VUIGRlc2NyaXB0aW9uID0g J3lhZGEsIHlhZGEnOyIKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBz ZWxlY3QgKHBhc3N3b3JkKSBvbiBhY2NvdW50IChpbiB0aGUgd2hlcmUgY2xhdXNlKQorLS0g U2Vzc2lvbiBsb2dnZWQgb24gYWxsIHRhYmxlcyBiZWNhdXNlIGxvZyA9IHJlYWQgYW5kIGxv Z19yZWxhdGlvbiA9IG9uCitVUERBVEUgYWNjb3VudAorICAgU0VUIGRlc2NyaXB0aW9uID0g J3lhZGEsIHlhZGEnCisgd2hlcmUgcGFzc3dvcmQgPSAnSEFTSDInOworTk9USUNFOiAgQVVE SVQ6IE9CSkVDVCw0LDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1YmxpYy5hY2NvdW50LCJVUERB VEUgYWNjb3VudAorICAgU0VUIGRlc2NyaXB0aW9uID0gJ3lhZGEsIHlhZGEnCisgd2hlcmUg cGFzc3dvcmQgPSAnSEFTSDInOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQsMSxXUklU RSxVUERBVEUsVEFCTEUscHVibGljLmFjY291bnQsIlVQREFURSBhY2NvdW50CisgICBTRVQg ZGVzY3JpcHRpb24gPSAneWFkYSwgeWFkYScKKyB3aGVyZSBwYXNzd29yZCA9ICdIQVNIMic7 IgorLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHVwZGF0ZSAocGFzc3dv cmQpIG9uIGFjY291bnQKKy0tIFNlc3Npb24gbG9nZ2VkIG9uIGFsbCB0YWJsZXMgYmVjYXVz ZSBsb2cgPSByZWFkIGFuZCBsb2dfcmVsYXRpb24gPSBvbgorVVBEQVRFIGFjY291bnQKKyAg IFNFVCBwYXNzd29yZCA9ICdIQVNIMic7CitOT1RJQ0U6ICBBVURJVDogT0JKRUNULDUsMSxX UklURSxVUERBVEUsVEFCTEUscHVibGljLmFjY291bnQsIlVQREFURSBhY2NvdW50CisgICBT RVQgcGFzc3dvcmQgPSAnSEFTSDInOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDUsMSxX UklURSxVUERBVEUsVEFCTEUscHVibGljLmFjY291bnQsIlVQREFURSBhY2NvdW50CisgICBT RVQgcGFzc3dvcmQgPSAnSEFTSDInOyIKKy0tCistLSBDaGFuZ2UgYmFjayB0byBzdXBlcnVz ZXIgdG8gZG8gZXhoYXVzdGl2ZSB0ZXN0cworXGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9u IHN1cGVyCitTRVQgcGdfYXVkaXQubG9nID0gJ0FMTCc7CitTRVQgcGdfYXVkaXQubG9nX25v dGljZSA9IE9OOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMiwxLE1JU0MsU0VULCwsU0VU IHBnX2F1ZGl0LmxvZ19ub3RpY2UgPSBPTjsKK1NFVCBwZ19hdWRpdC5sb2dfcmVsYXRpb24g PSBPTjsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDMsMSxNSVNDLFNFVCwsLFNFVCBwZ19h dWRpdC5sb2dfcmVsYXRpb24gPSBPTjsKKy0tCistLSBTaW1wbGUgRE8gYmxvY2sKK0RPICQk CitCRUdJTgorCXJhaXNlIG5vdGljZSAndGVzdCc7CitFTkQgJCQ7CitOT1RJQ0U6ICBBVURJ VDogU0VTU0lPTiw0LDEsRlVOQ1RJT04sRE8sLCwiRE8gJCQKK0JFR0lOCisJcmFpc2Ugbm90 aWNlICd0ZXN0JzsKK0VORCAkJDsiCitOT1RJQ0U6ICB0ZXN0CistLQorLS0gQ3JlYXRlIHRl c3Qgc2NoZW1hCitDUkVBVEUgU0NIRU1BIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lP Tiw1LDEsRERMLENSRUFURSBTQ0hFTUEsLCxDUkVBVEUgU0NIRU1BIHRlc3Q7CistLQorLS0g Q29weSBwZ19jbGFzcyB0byBzdGRvdXQKK0NPUFkgYWNjb3VudCBUTyBzdGRvdXQ7CitOT1RJ Q0U6ICBBVURJVDogU0VTU0lPTiw2LDEsUkVBRCxTRUxFQ1QsVEFCTEUscHVibGljLmFjY291 bnQsQ09QWSBhY2NvdW50IFRPIHN0ZG91dDsKKzEJdXNlcjEJSEFTSDIJeWFkYSwgeWFkYQor LS0KKy0tIENyZWF0ZSBhIHRhYmxlIGZyb20gYSBxdWVyeQorQ1JFQVRFIFRBQkxFIHRlc3Qu YWNjb3VudF9jb3B5IEFTCitTRUxFQ1QgKgorICBGUk9NIGFjY291bnQ7CitOT1RJQ0U6ICBB VURJVDogU0VTU0lPTiw3LDEsUkVBRCxTRUxFQ1QsVEFCTEUscHVibGljLmFjY291bnQsIkNS RUFURSBUQUJMRSB0ZXN0LmFjY291bnRfY29weSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2Nv dW50OyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDcsMSxXUklURSxJTlNFUlQsVEFCTEUs dGVzdC5hY2NvdW50X2NvcHksIkNSRUFURSBUQUJMRSB0ZXN0LmFjY291bnRfY29weSBBUwor U0VMRUNUICoKKyAgRlJPTSBhY2NvdW50OyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDcs MixEREwsQ1JFQVRFIFRBQkxFIEFTLCwsIkNSRUFURSBUQUJMRSB0ZXN0LmFjY291bnRfY29w eSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50OyIKKy0tCistLSBDb3B5IGZyb20gc3Rk aW4gdG8gYWNjb3VudCBjb3B5CitDT1BZIHRlc3QuYWNjb3VudF9jb3B5IGZyb20gc3RkaW47 CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw4LDEsV1JJVEUsSU5TRVJULFRBQkxFLHRlc3Qu YWNjb3VudF9jb3B5LENPUFkgdGVzdC5hY2NvdW50X2NvcHkgZnJvbSBzdGRpbjsKKy0tCist LSBUZXN0IHByZXBhcmVkIHN0YXRlbWVudAorUFJFUEFSRSBwZ2NsYXNzc3RtdCAob2lkKSBB UworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50CisgV0hFUkUgaWQgPSAkMTsKK05PVElDRTog IEFVRElUOiBTRVNTSU9OLDksMSxSRUFELFBSRVBBUkUsLCwiUFJFUEFSRSBwZ2NsYXNzc3Rt dCAob2lkKSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50CisgV0hFUkUgaWQgPSAkMTsi CitFWEVDVVRFIHBnY2xhc3NzdG10ICgxKTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDEw LDEsUkVBRCxTRUxFQ1QsVEFCTEUscHVibGljLmFjY291bnQsIlBSRVBBUkUgcGdjbGFzc3N0 bXQgKG9pZCkgQVMKK1NFTEVDVCAqCisgIEZST00gYWNjb3VudAorIFdIRVJFIGlkID0gJDE7 IiwxCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxMCwyLFJFQUQsRVhFQ1VURSwsLEVYRUNV VEUgcGdjbGFzc3N0bXQgKDEpOworIGlkIHwgbmFtZSAgfCBwYXNzd29yZCB8IGRlc2NyaXB0 aW9uIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorICAxIHwgdXNl cjEgfCBIQVNIMiAgICB8IHlhZGEsIHlhZGEKKygxIHJvdykKKworREVBTExPQ0FURSBwZ2Ns YXNzc3RtdDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDExLDEsTUlTQyxERUFMTE9DQVRF LCwsREVBTExPQ0FURSBwZ2NsYXNzc3RtdDsKKy0tCistLSBUZXN0IGN1cnNvciAtIG5vIHRh YmxlcyB3aWxsIGJlIGxvZ2dlZCBzaW5jZSBwZ19jbGFzcyBpcyBhIHN5c3RlbSB0YWJsZQor QkVHSU47CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxMiwxLE1JU0MsQkVHSU4sLCxCRUdJ TjsKK0RFQ0xBUkUgY3Rlc3QgU0NST0xMIENVUlNPUiBGT1IKK1NFTEVDVCBjb3VudCgqKQor ICBGUk9NCisoCisJU0VMRUNUIHJlbG5hbWUKKwkgIEZST00gcGdfY2xhc3MKKwkgTElNSVQg MQorICkgc3VicXVlcnk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxMywxLFJFQUQsREVD TEFSRSBDVVJTT1IsLCwiREVDTEFSRSBjdGVzdCBTQ1JPTEwgQ1VSU09SIEZPUgorU0VMRUNU IGNvdW50KCopCisgIEZST00KKygKKwlTRUxFQ1QgcmVsbmFtZQorCSAgRlJPTSBwZ19jbGFz cworCSBMSU1JVCAxCisgKSBzdWJxdWVyeTsiCitGRVRDSCBORVhUIEZST00gY3Rlc3Q7CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxNCwxLE1JU0MsRkVUQ0gsLCxGRVRDSCBORVhUIEZS T00gY3Rlc3Q7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworQ0xPU0Ug Y3Rlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxNSwxLE1JU0MsQ0xPU0UgQ1VSU09S LCwsQ0xPU0UgY3Rlc3Q7CitDT01NSVQ7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwxNSwy LE1JU0MsQ09NTUlULCwsQ09NTUlUOworLS0KKy0tIFRlc3QgcHJlcGFyZWQgaW5zZXJ0CitD UkVBVEUgVEFCTEUgdGVzdC50ZXN0X2luc2VydAorKAorCWlkIElOVAorKTsKK05PVElDRTog IEFVRElUOiBTRVNTSU9OLDE2LDEsRERMLENSRUFURSBUQUJMRSxUQUJMRSx0ZXN0LnRlc3Rf aW5zZXJ0LCJDUkVBVEUgVEFCTEUgdGVzdC50ZXN0X2luc2VydAorKAorCWlkIElOVAorKTsi CitQUkVQQVJFIHBnY2xhc3NzdG10IChvaWQpIEFTCitJTlNFUlQgSU5UTyB0ZXN0LnRlc3Rf aW5zZXJ0IChpZCkKKyAgICAgICAgICAgICAgICAgICAgICBWQUxVRVMgKCQxKTsKK05PVElD RTogIEFVRElUOiBTRVNTSU9OLDE3LDEsV1JJVEUsUFJFUEFSRSwsLCJQUkVQQVJFIHBnY2xh c3NzdG10IChvaWQpIEFTCitJTlNFUlQgSU5UTyB0ZXN0LnRlc3RfaW5zZXJ0IChpZCkKKyAg ICAgICAgICAgICAgICAgICAgICBWQUxVRVMgKCQxKTsiCitFWEVDVVRFIHBnY2xhc3NzdG10 ICgxKTsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDE4LDEsV1JJVEUsSU5TRVJULFRBQkxF LHRlc3QudGVzdF9pbnNlcnQsIlBSRVBBUkUgcGdjbGFzc3N0bXQgKG9pZCkgQVMKK0lOU0VS VCBJTlRPIHRlc3QudGVzdF9pbnNlcnQgKGlkKQorICAgICAgICAgICAgICAgICAgICAgIFZB TFVFUyAoJDEpOyIsMQorTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMTgsMixXUklURSxFWEVD VVRFLCwsRVhFQ1VURSBwZ2NsYXNzc3RtdCAoMSk7CistLQorLS0gQ2hlY2sgdGhhdCBwcmlt YXJ5IGtleSBjcmVhdGlvbiBpcyBsb2dnZWQKK0NSRUFURSBUQUJMRSBwdWJsaWMudGVzdAor KAorCWlkIElOVCwKKwluYW1lIFRFWFQsCisJZGVzY3JpcHRpb24gVEVYVCwKKwlDT05TVFJB SU5UIHRlc3RfcGtleSBQUklNQVJZIEtFWSAoaWQpCispOworTk9USUNFOiAgQVVESVQ6IFNF U1NJT04sMTksMSxEREwsQ1JFQVRFIElOREVYLElOREVYLHB1YmxpYy50ZXN0X3BrZXksIkNS RUFURSBUQUJMRSBwdWJsaWMudGVzdAorKAorCWlkIElOVCwKKwluYW1lIFRFWFQsCisJZGVz Y3JpcHRpb24gVEVYVCwKKwlDT05TVFJBSU5UIHRlc3RfcGtleSBQUklNQVJZIEtFWSAoaWQp CispOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDE5LDIsRERMLENSRUFURSBUQUJMRSxU QUJMRSxwdWJsaWMudGVzdCwiQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0CisoCisJaWQgSU5U LAorCW5hbWUgVEVYVCwKKwlkZXNjcmlwdGlvbiBURVhULAorCUNPTlNUUkFJTlQgdGVzdF9w a2V5IFBSSU1BUlkgS0VZIChpZCkKKyk7IgorLS0KKy0tIENoZWNrIHRoYXQgYW5hbHl6ZSBp cyBsb2dnZWQKK0FOQUxZWkUgdGVzdDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDIwLDEs TUlTQyxBTkFMWVpFLCwsQU5BTFlaRSB0ZXN0OworLS0KKy0tIEdyYW50cyB0byBwdWJsaWMg c2hvdWxkIG5vdCBjYXVzZSBvYmplY3QgbG9nZ2luZyAoc2Vzc2lvbiBsb2dnaW5nIHdpbGwK Ky0tIHN0aWxsIGhhcHBlbikKK0dSQU5UIFNFTEVDVAorICBPTiBUQUJMRSBwdWJsaWMudGVz dAorICBUTyBQVUJMSUM7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyMSwxLFJPTEUsR1JB TlQsLCwiR1JBTlQgU0VMRUNUCisgIE9OIFRBQkxFIHB1YmxpYy50ZXN0CisgIFRPIFBVQkxJ QzsiCitTRUxFQ1QgKgorICBGUk9NIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwy MiwxLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy50ZXN0LCJTRUxFQ1QgKgorICBGUk9NIHRl c3Q7IgorIGlkIHwgbmFtZSB8IGRlc2NyaXB0aW9uIAorLS0tLSstLS0tLS0rLS0tLS0tLS0t LS0tLQorKDAgcm93cykKKworLS0gQ2hlY2sgdGhhdCBzdGF0ZW1lbnRzIHdpdGhvdXQgY29s dW1ucyBsb2cKK1NFTEVDVAorICBGUk9NIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lP TiwyMywxLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy50ZXN0LCJTRUxFQ1QKKyAgRlJPTSB0 ZXN0OyIKKy0tCisoMCByb3dzKQorCitTRUxFQ1QgMSwKKwkgICBjdXJyZW50X3VzZXI7CitO T1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyNCwxLFJFQUQsU0VMRUNULCwsIlNFTEVDVCAxLAor CSAgIGN1cnJlbnRfdXNlcjsiCisgP2NvbHVtbj8gfCBjdXJyZW50X3VzZXIgCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tCisgICAgICAgIDEgfCBzdXBlcgorKDEgcm93KQorCitETyAk JAorREVDTEFSRQorCXRlc3QgSU5UOworQkVHSU4KKwlTRUxFQ1QgMQorCSAgSU5UTyB0ZXN0 OworRU5EICQkOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMjUsMSxGVU5DVElPTixETyws LCJETyAkJAorREVDTEFSRQorCXRlc3QgSU5UOworQkVHSU4KKwlTRUxFQ1QgMQorCSAgSU5U TyB0ZXN0OworRU5EICQkOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDI1LDIsUkVBRCxT RUxFQ1QsLCxTRUxFQ1QgMQorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIlNFTEVDVCAxIgor UEwvcGdTUUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSA1IGF0IFNRTCBzdGF0 ZW1lbnQKK2V4cGxhaW4gc2VsZWN0IDE7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyNiwx LFJFQUQsU0VMRUNULCwsZXhwbGFpbiBzZWxlY3QgMTsKK05PVElDRTogIEFVRElUOiBTRVNT SU9OLDI2LDIsTUlTQyxFWFBMQUlOLCwsZXhwbGFpbiBzZWxlY3QgMTsKKyAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUmVzdWx0ICAoY29zdD0wLjAwLi4wLjAxIHJvd3M9 MSB3aWR0aD0wKQorKDEgcm93KQorCistLQorLS0gVGVzdCB0aGF0IGxvb2tzIGluc2lkZSBv ZiBkbyBibG9ja3MgbG9nCitJTlNFUlQgSU5UTyBURVNUIChpZCkKKwkJICBWQUxVRVMgKDEp OworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMjcsMSxXUklURSxJTlNFUlQsVEFCTEUscHVi bGljLnRlc3QsIklOU0VSVCBJTlRPIFRFU1QgKGlkKQorCQkgIFZBTFVFUyAoMSk7IgorSU5T RVJUIElOVE8gVEVTVCAoaWQpCisJCSAgVkFMVUVTICgyKTsKK05PVElDRTogIEFVRElUOiBT RVNTSU9OLDI4LDEsV1JJVEUsSU5TRVJULFRBQkxFLHB1YmxpYy50ZXN0LCJJTlNFUlQgSU5U TyBURVNUIChpZCkKKwkJICBWQUxVRVMgKDIpOyIKK0lOU0VSVCBJTlRPIFRFU1QgKGlkKQor CQkgIFZBTFVFUyAoMyk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwyOSwxLFdSSVRFLElO U0VSVCxUQUJMRSxwdWJsaWMudGVzdCwiSU5TRVJUIElOVE8gVEVTVCAoaWQpCisJCSAgVkFM VUVTICgzKTsiCitETyAkJAorREVDTEFSRQorCXJlc3VsdCBSRUNPUkQ7CitCRUdJTgorCUZP UiByZXN1bHQgSU4KKwkJU0VMRUNUIGlkCisJCSAgRlJPTSB0ZXN0CisJTE9PUAorCQlJTlNF UlQgSU5UTyB0ZXN0IChpZCkKKwkJICAgICBWQUxVRVMgKHJlc3VsdC5pZCArIDEwMCk7CisJ RU5EIExPT1A7CitFTkQgJCQ7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCwxLEZVTkNU SU9OLERPLCwsIkRPICQkCitERUNMQVJFCisJcmVzdWx0IFJFQ09SRDsKK0JFR0lOCisJRk9S IHJlc3VsdCBJTgorCQlTRUxFQ1QgaWQKKwkJICBGUk9NIHRlc3QKKwlMT09QCisJCUlOU0VS VCBJTlRPIHRlc3QgKGlkKQorCQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAwKTsKKwlF TkQgTE9PUDsKK0VORCAkJDsiCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCwyLFJFQUQs U0VMRUNULFRBQkxFLHB1YmxpYy50ZXN0LCJTRUxFQ1QgaWQKKwkJICBGUk9NIHRlc3QiCitD T05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSA1IGF0 IEZPUiBvdmVyIFNFTEVDVCByb3dzCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCwzLFdS SVRFLElOU0VSVCxUQUJMRSxwdWJsaWMudGVzdCwiSU5TRVJUIElOVE8gdGVzdCAoaWQpCisJ CSAgICAgVkFMVUVTIChyZXN1bHQuaWQgKyAxMDApIiwsLAorQ09OVEVYVDogIFNRTCBzdGF0 ZW1lbnQgIklOU0VSVCBJTlRPIHRlc3QgKGlkKQorCQkgICAgIFZBTFVFUyAocmVzdWx0Lmlk ICsgMTAwKSIKK1BML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgOSBh dCBTUUwgc3RhdGVtZW50CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCw0LFdSSVRFLElO U0VSVCxUQUJMRSxwdWJsaWMudGVzdCwiSU5TRVJUIElOVE8gdGVzdCAoaWQpCisJCSAgICAg VkFMVUVTIChyZXN1bHQuaWQgKyAxMDApIiwsLAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQg IklOU0VSVCBJTlRPIHRlc3QgKGlkKQorCQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAw KSIKK1BML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgOSBhdCBTUUwg c3RhdGVtZW50CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMCw1LFdSSVRFLElOU0VSVCxU QUJMRSxwdWJsaWMudGVzdCwiSU5TRVJUIElOVE8gdGVzdCAoaWQpCisJCSAgICAgVkFMVUVT IChyZXN1bHQuaWQgKyAxMDApIiwsLAorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIklOU0VS VCBJTlRPIHRlc3QgKGlkKQorCQkgICAgIFZBTFVFUyAocmVzdWx0LmlkICsgMTAwKSIKK1BM L3BnU1FMIGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgOSBhdCBTUUwgc3RhdGVt ZW50CistLQorLS0gVGVzdCBjdXJzb3JzIGFuZCBmdW5jdGlvbnMgaW4gYSBkbyBibG9jawor Q1JFQVRFIEZVTkNUSU9OIHB1YmxpYy50ZXN0KCkKKwlSRVRVUk5TIElOVCBMQU5HVUFHRSBw bHBnc3FsIEFTICQkCitERUNMQVJFCisJY3VyMSBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00g dGVzdDsKKwl0bXAgSU5UOworQkVHSU4KKwlPUEVOIGN1cjE7CisJRkVUQ0ggY3VyMSBJTlRP IHRtcDsKKwlDTE9TRSBjdXIxOworCVJFVFVSTiB0bXA7CitlbmQgJCQ7CitOT1RJQ0U6ICBB VURJVDogU0VTU0lPTiwzMSwxLERETCxDUkVBVEUgRlVOQ1RJT04sLCwiQ1JFQVRFIEZVTkNU SU9OIHB1YmxpYy50ZXN0KCkKKwlSRVRVUk5TIElOVCBMQU5HVUFHRSBwbHBnc3FsIEFTICQk CitERUNMQVJFCisJY3VyMSBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVzdDsKKwl0bXAg SU5UOworQkVHSU4KKwlPUEVOIGN1cjE7CisJRkVUQ0ggY3VyMSBJTlRPIHRtcDsKKwlDTE9T RSBjdXIxOworCVJFVFVSTiB0bXA7CitlbmQgJCQ7IgorU0VMRUNUIHB1YmxpYy50ZXN0KCk7 CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMiwxLFJFQUQsU0VMRUNULCwsU0VMRUNUIHB1 YmxpYy50ZXN0KCk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMiwyLEZVTkNUSU9OLEVY RUNVVEUsRlVOQ1RJT04scHVibGljLnRlc3QsU0VMRUNUIHB1YmxpYy50ZXN0KCk7CitOT1RJ Q0U6ICBBVURJVDogU0VTU0lPTiwzMiwzLFJFQUQsU0VMRUNULFRBQkxFLHB1YmxpYy50ZXN0 LFNFTEVDVCAqIEZST00gdGVzdAorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHRlc3Qo KSBsaW5lIDYgYXQgT1BFTgorIHRlc3QgCistLS0tLS0KKyAgICAxCisoMSByb3cpCisKKy0t CistLSBUZXN0IG9iZnVzY2F0ZWQgZHluYW1pYyBzcWwgZm9yIGNsZWFuIGxvZ2dpbmcKK0RP ICQkCitERUNMQVJFCisJdGFibGVfbmFtZSBURVhUID0gJ2RvX3RhYmxlJzsKK0JFR0lOCisJ RVhFQ1VURSAnQ1JFQVRFIFRBQkxFICcgfHwgdGFibGVfbmFtZSB8fCAnICgid2VpcmQgbmFt ZSIgSU5UKSc7CisJRVhFQ1VURSAnRFJPUCB0YWJsZSAnIHx8IHRhYmxlX25hbWU7CitFTkQg JCQ7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMywxLEZVTkNUSU9OLERPLCwsIkRPICQk CitERUNMQVJFCisJdGFibGVfbmFtZSBURVhUID0gJ2RvX3RhYmxlJzsKK0JFR0lOCisJRVhF Q1VURSAnQ1JFQVRFIFRBQkxFICcgfHwgdGFibGVfbmFtZSB8fCAnICgiIndlaXJkIG5hbWUi IiBJTlQpJzsKKwlFWEVDVVRFICdEUk9QIHRhYmxlICcgfHwgdGFibGVfbmFtZTsKK0VORCAk JDsiCitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzMywyLERETCxDUkVBVEUgVEFCTEUsVEFC TEUscHVibGljLmRvX3RhYmxlLCJDUkVBVEUgVEFCTEUgZG9fdGFibGUgKCIid2VpcmQgbmFt ZSIiIElOVCkiCitDT05URVhUOiAgU1FMIHN0YXRlbWVudCAiQ1JFQVRFIFRBQkxFIGRvX3Rh YmxlICgid2VpcmQgbmFtZSIgSU5UKSIKK1BML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9jb2Rl X2Jsb2NrIGxpbmUgNSBhdCBFWEVDVVRFIHN0YXRlbWVudAorTk9USUNFOiAgQVVESVQ6IFNF U1NJT04sMzMsMyxEREwsRFJPUCBUQUJMRSxUQUJMRSxwdWJsaWMuZG9fdGFibGUsRFJPUCB0 YWJsZSBkb190YWJsZQorQ09OVEVYVDogIFNRTCBzdGF0ZW1lbnQgIkRST1AgdGFibGUgZG9f dGFibGUiCitQTC9wZ1NRTCBmdW5jdGlvbiBpbmxpbmVfY29kZV9ibG9jayBsaW5lIDYgYXQg RVhFQ1VURSBzdGF0ZW1lbnQKKy0tCistLSBHZW5lcmF0ZSBhbiBlcnJvciBhbmQgbWFrZSBz dXJlIHRoZSBzdGFjayBnZXRzIGNsZWFyZWQKK0RPICQkCitCRUdJTgorCUNSRUFURSBUQUJM RSBib2d1cy50ZXN0X2Jsb2NrCisJKAorCQlpZCBJTlQKKwkpOworRU5EICQkOworTk9USUNF OiAgQVVESVQ6IFNFU1NJT04sMzQsMSxGVU5DVElPTixETywsLCJETyAkJAorQkVHSU4KKwlD UkVBVEUgVEFCTEUgYm9ndXMudGVzdF9ibG9jaworCSgKKwkJaWQgSU5UCisJKTsKK0VORCAk JDsiCitFUlJPUjogIHNjaGVtYSAiYm9ndXMiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IENS RUFURSBUQUJMRSBib2d1cy50ZXN0X2Jsb2NrCisgICAgICAgICAgICAgICAgICAgICBeCitR VUVSWTogIENSRUFURSBUQUJMRSBib2d1cy50ZXN0X2Jsb2NrCisJKAorCQlpZCBJTlQKKwkp CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gaW5saW5lX2NvZGVfYmxvY2sgbGluZSAz IGF0IFNRTCBzdGF0ZW1lbnQKKy0tCistLSBUZXN0IGFsdGVyIHRhYmxlIHN0YXRlbWVudHMK K0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0CisJRFJPUCBDT0xVTU4gZGVzY3JpcHRpb24gOwor Tk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMzUsMSxEREwsQUxURVIgVEFCTEUsVEFCTEUgQ09M VU1OLHB1YmxpYy50ZXN0LmRlc2NyaXB0aW9uLCJBTFRFUiBUQUJMRSBwdWJsaWMudGVzdAor CURST1AgQ09MVU1OIGRlc2NyaXB0aW9uIDsiCitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdAor CVJFTkFNRSBUTyB0ZXN0MjsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDM2LDEsRERMLEFM VEVSIFRBQkxFLFRBQkxFLHB1YmxpYy50ZXN0LCJBTFRFUiBUQUJMRSBwdWJsaWMudGVzdAor CVJFTkFNRSBUTyB0ZXN0MjsiCitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdDIKKwlTRVQgU0NI RU1BIHRlc3Q7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiwzNywxLERETCxBTFRFUiBUQUJM RSxJTkRFWCxwdWJsaWMudGVzdF9wa2V5LCJBTFRFUiBUQUJMRSBwdWJsaWMudGVzdDIKKwlT RVQgU0NIRU1BIHRlc3Q7IgorQUxURVIgVEFCTEUgdGVzdC50ZXN0MgorCUFERCBDT0xVTU4g ZGVzY3JpcHRpb24gVEVYVDsKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDM4LDEsRERMLEFM VEVSIFRBQkxFLFRBQkxFLHRlc3QudGVzdDIsIkFMVEVSIFRBQkxFIHRlc3QudGVzdDIKKwlB REQgQ09MVU1OIGRlc2NyaXB0aW9uIFRFWFQ7IgorQUxURVIgVEFCTEUgdGVzdC50ZXN0Mgor CURST1AgQ09MVU1OIGRlc2NyaXB0aW9uOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sMzks MSxEREwsQUxURVIgVEFCTEUsVEFCTEUgQ09MVU1OLHRlc3QudGVzdDIuZGVzY3JpcHRpb24s IkFMVEVSIFRBQkxFIHRlc3QudGVzdDIKKwlEUk9QIENPTFVNTiBkZXNjcmlwdGlvbjsiCitE Uk9QIFRBQkxFIHRlc3QudGVzdDI7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0MCwxLERE TCxEUk9QIFRBQkxFLFRBQkxFLHRlc3QudGVzdDIsRFJPUCBUQUJMRSB0ZXN0LnRlc3QyOwor Tk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDAsMSxEREwsRFJPUCBUQUJMRSxUQUJMRSBDT05T VFJBSU5ULHRlc3RfcGtleSBvbiB0ZXN0LnRlc3QyLERST1AgVEFCTEUgdGVzdC50ZXN0MjsK K05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQwLDEsRERMLERST1AgVEFCTEUsSU5ERVgsdGVz dC50ZXN0X3BrZXksRFJPUCBUQUJMRSB0ZXN0LnRlc3QyOworLS0KKy0tIFRlc3QgYWdncmVn YXRlCitDUkVBVEUgRlVOQ1RJT04gcHVibGljLmludF9hZGQKKygKKwlhIElOVCwKKwliIElO VAorKQorCVJFVFVSTlMgSU5UIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisJcmV0 dXJuIGEgKyBiOworRU5EICQkOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDEsMSxEREws Q1JFQVRFIEZVTkNUSU9OLCwsIkNSRUFURSBGVU5DVElPTiBwdWJsaWMuaW50X2FkZAorKAor CWEgSU5ULAorCWIgSU5UCispCisJUkVUVVJOUyBJTlQgTEFOR1VBR0UgcGxwZ3NxbCBBUyAk JAorQkVHSU4KKwlyZXR1cm4gYSArIGI7CitFTkQgJCQ7IgorU0VMRUNUIGludF9hZGQoMSwg MSk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0MiwxLFJFQUQsU0VMRUNULCwsIlNFTEVD VCBpbnRfYWRkKDEsIDEpOyIKK05PVElDRTogIEFVRElUOiBTRVNTSU9OLDQyLDIsRlVOQ1RJ T04sRVhFQ1VURSxGVU5DVElPTixwdWJsaWMuaW50X2FkZCwiU0VMRUNUIGludF9hZGQoMSwg MSk7IgorIGludF9hZGQgCistLS0tLS0tLS0KKyAgICAgICAyCisoMSByb3cpCisKK0NSRUFU RSBBR0dSRUdBVEUgcHVibGljLnN1bV90ZXN0KElOVCkgKFNGVU5DPXB1YmxpYy5pbnRfYWRk LCBTVFlQRT1JTlQsIElOSVRDT05EPScwJyk7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0 MywxLERETCxDUkVBVEUgQUdHUkVHQVRFLCwsIkNSRUFURSBBR0dSRUdBVEUgcHVibGljLnN1 bV90ZXN0KElOVCkgKFNGVU5DPXB1YmxpYy5pbnRfYWRkLCBTVFlQRT1JTlQsIElOSVRDT05E PScwJyk7IgorQUxURVIgQUdHUkVHQVRFIHB1YmxpYy5zdW1fdGVzdChpbnRlZ2VyKSBSRU5B TUUgVE8gc3VtX3Rlc3QyOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDQsMSxEREwsQUxU RVIgQUdHUkVHQVRFLCwsQUxURVIgQUdHUkVHQVRFIHB1YmxpYy5zdW1fdGVzdChpbnRlZ2Vy KSBSRU5BTUUgVE8gc3VtX3Rlc3QyOworLS0KKy0tIFRlc3QgY29udmVyc2lvbgorQ1JFQVRF IENPTlZFUlNJT04gcHVibGljLmNvbnZlcnNpb25fdGVzdCBGT1IgJ1NRTF9BU0NJSScgVE8g J01VTEVfSU5URVJOQUwnIEZST00gcGdfY2F0YWxvZy5hc2NpaV90b19taWM7CitOT1RJQ0U6 ICBBVURJVDogU0VTU0lPTiw0NSwxLERETCxDUkVBVEUgQ09OVkVSU0lPTiwsLENSRUFURSBD T05WRVJTSU9OIHB1YmxpYy5jb252ZXJzaW9uX3Rlc3QgRk9SICdTUUxfQVNDSUknIFRPICdN VUxFX0lOVEVSTkFMJyBGUk9NIHBnX2NhdGFsb2cuYXNjaWlfdG9fbWljOworQUxURVIgQ09O VkVSU0lPTiBwdWJsaWMuY29udmVyc2lvbl90ZXN0IFJFTkFNRSBUTyBjb252ZXJzaW9uX3Rl c3QyOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDYsMSxEREwsQUxURVIgQ09OVkVSU0lP TiwsLEFMVEVSIENPTlZFUlNJT04gcHVibGljLmNvbnZlcnNpb25fdGVzdCBSRU5BTUUgVE8g Y29udmVyc2lvbl90ZXN0MjsKKy0tCistLSBUZXN0IGNyZWF0ZS9hbHRlci9kcm9wIGRhdGFi YXNlCitDUkVBVEUgREFUQUJBU0UgY29udHJpYl9yZWdyZXNzaW9uX3BnYXVkaXQ7CitOT1RJ Q0U6ICBBVURJVDogU0VTU0lPTiw0NywxLERETCxDUkVBVEUgREFUQUJBU0UsLCxDUkVBVEUg REFUQUJBU0UgY29udHJpYl9yZWdyZXNzaW9uX3BnYXVkaXQ7CitBTFRFUiBEQVRBQkFTRSBj b250cmliX3JlZ3Jlc3Npb25fcGdhdWRpdCBSRU5BTUUgVE8gY29udHJpYl9yZWdyZXNzaW9u X3BnYXVkaXQyOworTk9USUNFOiAgQVVESVQ6IFNFU1NJT04sNDgsMSxEREwsQUxURVIgREFU QUJBU0UsLCxBTFRFUiBEQVRBQkFTRSBjb250cmliX3JlZ3Jlc3Npb25fcGdhdWRpdCBSRU5B TUUgVE8gY29udHJpYl9yZWdyZXNzaW9uX3BnYXVkaXQyOworRFJPUCBEQVRBQkFTRSBjb250 cmliX3JlZ3Jlc3Npb25fcGdhdWRpdDI7CitOT1RJQ0U6ICBBVURJVDogU0VTU0lPTiw0OSwx LERETCxEUk9QIERBVEFCQVNFLCwsRFJPUCBEQVRBQkFTRSBjb250cmliX3JlZ3Jlc3Npb25f cGdhdWRpdDI7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2F1ZGl0L3BnX2F1ZGl0LS0xLjAu MC5zcWwgYi9jb250cmliL3BnX2F1ZGl0L3BnX2F1ZGl0LS0xLjAuMC5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5ZWU4MwotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvcGdfYXVkaXQvcGdfYXVkaXQtLTEuMC4wLnNxbApAQCAtMCwwICsxLDIyIEBA CisvKiBwZ19hdWRpdC9wZ19hdWRpdC0tMS4wLjAuc3FsICovCisKKy0tIGNvbXBsYWluIGlm IHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhU RU5TSU9OCitcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gcGdfYXVkaXQiIHRvIGxvYWQg dGhpcyBmaWxlLlxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBwZ19hdWRpdF9kZGxfY29tbWFu ZF9lbmQoKQorCVJFVFVSTlMgZXZlbnRfdHJpZ2dlcgorCUxBTkdVQUdFIEMKKwlBUyAnTU9E VUxFX1BBVEhOQU1FJywgJ3BnX2F1ZGl0X2RkbF9jb21tYW5kX2VuZCc7CisKK0NSRUFURSBF VkVOVCBUUklHR0VSIHBnX2F1ZGl0X2RkbF9jb21tYW5kX2VuZAorCU9OIGRkbF9jb21tYW5k X2VuZAorCUVYRUNVVEUgUFJPQ0VEVVJFIHBnX2F1ZGl0X2RkbF9jb21tYW5kX2VuZCgpOwor CitDUkVBVEUgRlVOQ1RJT04gcGdfYXVkaXRfc3FsX2Ryb3AoKQorCVJFVFVSTlMgZXZlbnRf dHJpZ2dlcgorCUxBTkdVQUdFIEMKKwlBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3BnX2F1ZGl0 X3NxbF9kcm9wJzsKKworQ1JFQVRFIEVWRU5UIFRSSUdHRVIgcGdfYXVkaXRfc3FsX2Ryb3AK KwlPTiBzcWxfZHJvcAorCUVYRUNVVEUgUFJPQ0VEVVJFIHBnX2F1ZGl0X3NxbF9kcm9wKCk7 CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2F1ZGl0L3BnX2F1ZGl0LmMgYi9jb250cmliL3Bn X2F1ZGl0L3BnX2F1ZGl0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NDU0MGZlMgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfYXVkaXQvcGdfYXVkaXQu YwpAQCAtMCwwICsxLDE3ODcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBw Z19hdWRpdC5jCisgKgorICogQW4gYXVkaXRpbmcgZXh0ZW5zaW9uIGZvciBQb3N0Z3JlU1FM LiBJbXByb3ZlcyBvbiBzdGFuZGFyZCBzdGF0ZW1lbnQgbG9nZ2luZworICogYnkgYWRkaW5n IG1vcmUgbG9nZ2luZyBjbGFzc2VzLCBvYmplY3QgbGV2ZWwgbG9nZ2luZywgYW5kIHByb3Zp ZGluZworICogZnVsbHktcXVhbGlmaWVkIG9iamVjdCBuYW1lcyBmb3IgYWxsIERNTCBhbmQg bWFueSBEREwgc3RhdGVtZW50cyAoU2VlCisgKiBwZ19hdWRpdC5zZ21sIGZvciBkZXRhaWxz KS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJCSAgY29udHJp Yi9wZ19hdWRpdC9wZ19hdWRpdC5jCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFp bHMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgorI2luY2x1ZGUgImFjY2Vzcy94 YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9vYmplY3RhY2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NsYXNzLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1h bmRzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisj aW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5j bHVkZSAibGlicHEvYXV0aC5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCisjaW5jbHVk ZSAidGNvcC91dGlsaXR5LmgiCisjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvdGltZXN0YW1wLmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKwordm9pZCBfUEdf aW5pdCh2b2lkKTsKKworLyoKKyAqIEV2ZW50IHRyaWdnZXIgcHJvdG90eXBlcworICovCitE YXR1bSBwZ19hdWRpdF9kZGxfY29tbWFuZF9lbmQoUEdfRlVOQ1RJT05fQVJHUyk7CitEYXR1 bSBwZ19hdWRpdF9zcWxfZHJvcChQR19GVU5DVElPTl9BUkdTKTsKKworUEdfRlVOQ1RJT05f SU5GT19WMShwZ19hdWRpdF9kZGxfY29tbWFuZF9lbmQpOworUEdfRlVOQ1RJT05fSU5GT19W MShwZ19hdWRpdF9zcWxfZHJvcCk7CisKKy8qCisgKiBhdWRpdFJvbGUgaXMgdGhlIHN0cmlu ZyB2YWx1ZSBvZiB0aGUgcGdfYXVkaXQucm9sZSBHVUMsIHdoaWNoIGNvbnRhaW5zIHRoZQor ICogcm9sZSBmb3IgZ3JhbnQtYmFzZWQgYXVkaXRpbmcuCisgKi8KK2NoYXIgKmF1ZGl0Um9s ZSA9IE5VTEw7CisKKy8qCisgKiBhdWRpdExvZyBpcyB0aGUgc3RyaW5nIHZhbHVlIG9mIHRo ZSBwZ19hdWRpdC5sb2cgR1VDLCBlLmcuICJyZWFkLCB3cml0ZSwgZGRsIgorICogKGl0J3Mg bm90IHVzZWQgYnkgdGhlIG1vZHVsZSBidXQgaXMgcmVxdWlyZWQgYnkgRGVmaW5lQ3VzdG9t U3RyaW5nVmFyaWFibGUpLgorICogRWFjaCB0b2tlbiBjb3JyZXNwb25kcyB0byBhIGZsYWcg aW4gZW51bSBMb2dDbGFzcyBiZWxvdy4gV2UgY29udmVydCB0aGUgbGlzdAorICogb2YgdG9r ZW5zIGludG8gYSBiaXRtYXAgaW4gYXVkaXRMb2dCaXRtYXAgZm9yIGludGVybmFsIHVzZS4K KyAqLworY2hhciAqYXVkaXRMb2cgPSBOVUxMOworc3RhdGljIHVpbnQ2NCBhdWRpdExvZ0Jp dG1hcCA9IDA7CisKKy8qCisgKiBhdWRpdExvZ1JlbGF0aW9uIGNvbnRyb2xzIHdoZXRoZXIg YWxsIHJlbGF0aW9ucyBhcmUgbG9nZ2VkIGZvciBSRUFEIGFuZAorICogV1JJVEUgY2xhc3Nl cyBkdXJpbmcgc2Vzc2lvbiBsb2dnaW5nLgorICovCitib29sIGF1ZGl0TG9nUmVsYXRpb24g PSBmYWxzZTsKKworLyoKKyAqIGF1ZGl0TG9nTm90aWNlIHJhaXNlcyBhIG5vdGljZSBhcyB3 ZWxsIGFzIGxvZ2dpbmcgdmlhIHRoZSBzdGFuZGFyZCBmYWNpbGl0eS4KKyAqIFRoaXMgaXMg cHJpbWFyaWx5IGZvciB0aGUgYmVuZWZpdCBvZiB0ZXN0aW5nLgorICovCitib29sIGF1ZGl0 TG9nTm90aWNlID0gZmFsc2U7CisKKy8qCisgKiBTdHJpbmcgY29uc3RhbnRzIGZvciBhdWRp dCB0eXBlcyAtIHVzZWQgd2hlbiBsb2dnaW5nIHRvIGRpc3Rpbmd1aXNoIHNlc3Npb24KKyAq IHZzLiBvYmplY3QgYXVkaXRpbmcuCisgKi8KKyNkZWZpbmUgQVVESVRfVFlQRV9PQkpFQ1QJ Ik9CSkVDVCIKKyNkZWZpbmUgQVVESVRfVFlQRV9TRVNTSU9OCSJTRVNTSU9OIgorCisvKgor ICogU3RyaW5nIGNvbnN0YW50cyBmb3IgbG9nIGNsYXNzZXMgLSB1c2VkIHdoZW4gcHJvY2Vz c2luZyB0b2tlbnMgaW4gdGhlCisgKiBwZ19hdWRpdC5sb2cgR1VDLgorICovCisjZGVmaW5l IENMQVNTX0RETAkJCSJEREwiCisjZGVmaW5lIENMQVNTX0ZVTkNUSU9OCQkiRlVOQ1RJT04i CisjZGVmaW5lIENMQVNTX01JU0MJCQkiTUlTQyIKKyNkZWZpbmUgQ0xBU1NfUEFSQU1FVEVS CQkiUEFSQU1FVEVSIgorI2RlZmluZSBDTEFTU19SRUFECQkJIlJFQUQiCisjZGVmaW5lIENM QVNTX1JPTEUJCQkiUk9MRSIKKyNkZWZpbmUgQ0xBU1NfV1JJVEUJCQkiV1JJVEUiCisKKyNk ZWZpbmUgQ0xBU1NfQUxMCQkJIkFMTCIKKyNkZWZpbmUgQ0xBU1NfTk9ORQkJCSJOT05FIgor CisvKiBMb2cgY2xhc3MgZW51bSB1c2VkIHRvIHJlcHJlc2VudCBiaXRzIGluIGF1ZGl0TG9n Qml0bWFwICovCitlbnVtIExvZ0NsYXNzCit7CisJTE9HX05PTkUgPSAwLAorCisJLyogRERM OiBDUkVBVEUvRFJPUC9BTFRFUiAqLworCUxPR19EREwgPSAoMSA8PCAxKSwKKworCS8qIEZ1 bmN0aW9uIGV4ZWN1dGlvbiAqLworCUxPR19GVU5DVElPTiA9ICgxIDw8IDIpLAorCisJLyog U3RhdGVtZW50cyBub3QgY292ZXJlZCBieSBhbm90aGVyIGNsYXNzICovCisJTE9HX01JU0Mg PSAoMSA8PCAzKSwKKworCS8qIEZ1bmN0aW9uIGV4ZWN1dGlvbiAqLworCUxPR19QQVJBTUVU RVIgPSAoMSA8PCA0KSwKKworCS8qIFNFTEVDVCAqLworCUxPR19SRUFEID0gKDEgPDwgNSks CisKKwkvKiBHUkFOVCwgUkVWT0tFLCBDUkVBVEUvQUxURVIvRFJPUCBST0xFICovCisJTE9H X1JPTEUgPSAoMSA8PCA2KSwKKworCS8qIElOU0VSVCwgVVBEQVRFLCBERUxFVEUsIFRSVU5D QVRFICovCisJTE9HX1dSSVRFID0gKDEgPDwgNyksCisKKwkvKiBBYnNvbHV0ZWx5IGV2ZXJ5 dGhpbmcgKi8KKwlMT0dfQUxMID0gfih1aW50NjQpMAorfTsKKworLyogU3RyaW5nIGNvbnN0 YW50cyBmb3IgbG9nZ2luZyBjb21tYW5kcyAqLworI2RlZmluZSBDT01NQU5EX0RFTEVURQkJ IkRFTEVURSIKKyNkZWZpbmUgQ09NTUFORF9FWEVDVVRFCQkiRVhFQ1VURSIKKyNkZWZpbmUg Q09NTUFORF9JTlNFUlQJCSJJTlNFUlQiCisjZGVmaW5lIENPTU1BTkRfVVBEQVRFCQkiVVBE QVRFIgorI2RlZmluZSBDT01NQU5EX1NFTEVDVAkJIlNFTEVDVCIKKworI2RlZmluZSBDT01N QU5EX0FMVEVSX1JPTEUJIkFMVEVSIFJPTEUiCisjZGVmaW5lIENPTU1BTkRfRFJPUF9ST0xF CSJDUkVBVEUgUk9MRSIKKworI2RlZmluZSBDT01NQU5EX1VOS05PV04JCSJVTktOT1dOIgor CisvKiBTdHJpbmcgY29uc3RhbnRzIGZvciBsb2dnaW5nIG9iamVjdCB0eXBlcyAqLworI2Rl ZmluZSBPQkpFQ1RfVFlQRV9DT01QT1NJVEVfVFlQRQkiQ09NUE9TSVRFIFRZUEUiCisjZGVm aW5lIE9CSkVDVF9UWVBFX0ZPUkVJR05fVEFCTEUJIkZPUkVJR04gVEFCTEUiCisjZGVmaW5l IE9CSkVDVF9UWVBFX0ZVTkNUSU9OCQkiRlVOQ1RJT04iCisjZGVmaW5lIE9CSkVDVF9UWVBF X0lOREVYCQkJIklOREVYIgorI2RlZmluZSBPQkpFQ1RfVFlQRV9UQUJMRQkJCSJUQUJMRSIK KyNkZWZpbmUgT0JKRUNUX1RZUEVfVE9BU1RWQUxVRQkJIlRPQVNUVkFMVUUiCisjZGVmaW5l IE9CSkVDVF9UWVBFX01BVFZJRVcJCQkiTUFURVJJQUxJWkVEIFZJRVciCisjZGVmaW5lIE9C SkVDVF9UWVBFX1NFUVVFTkNFCQkiU0VRVUVOQ0UiCisjZGVmaW5lIE9CSkVDVF9UWVBFX1ZJ RVcJCQkiVklFVyIKKworI2RlZmluZSBPQkpFQ1RfVFlQRV9VTktOT1dOCQkJIlVOS05PV04i CisKKy8qCisgKiBBbiBBdWRpdEV2ZW50IHJlcHJlc2VudHMgYW4gb3BlcmF0aW9uIHRoYXQg cG90ZW50aWFsbHkgYWZmZWN0cyBhIHNpbmdsZQorICogb2JqZWN0LiBJZiBhIHN0YXRlbWVu dCBhZmZlY3RzIG11bHRpcGxlIG9iamVjdHMgbXVsdGlwbGUgQXVkaXRFdmVudHMgbXVzdCBi ZQorICogY3JlYXRlZCB0byByZXByZXNlbnQgaXQuCisgKi8KK3R5cGVkZWYgc3RydWN0Cit7 CisJaW50NjQgc3RhdGVtZW50SWQ7CisJaW50NjQgc3Vic3RhdGVtZW50SWQ7CisKKwlMb2dT dG10TGV2ZWwgbG9nU3RtdExldmVsOworCU5vZGVUYWcgY29tbWFuZFRhZzsKKwljb25zdCBj aGFyICpjb21tYW5kOworCWNvbnN0IGNoYXIgKm9iamVjdFR5cGU7CisJY2hhciAqb2JqZWN0 TmFtZTsKKwljb25zdCBjaGFyICpjb21tYW5kVGV4dDsKKwlQYXJhbUxpc3RJbmZvIHBhcmFt TGlzdDsKKworCWJvb2wgZ3JhbnRlZDsKKwlib29sIGxvZ2dlZDsKK30gQXVkaXRFdmVudDsK KworLyoKKyAqIEEgc2ltcGxlIEZJRk8gcXVldWUgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3Vy cmVudCBzdGFjayBvZiBhdWRpdCBldmVudHMuCisgKi8KK3R5cGVkZWYgc3RydWN0IEF1ZGl0 RXZlbnRTdGFja0l0ZW0KK3sKKwlzdHJ1Y3QgQXVkaXRFdmVudFN0YWNrSXRlbSAqbmV4dDsK KworCUF1ZGl0RXZlbnQgYXVkaXRFdmVudDsKKworCWludDY0IHN0YWNrSWQ7CisKKwlNZW1v cnlDb250ZXh0IGNvbnRleHRBdWRpdDsKKwlNZW1vcnlDb250ZXh0Q2FsbGJhY2sgY29udGV4 dENhbGxiYWNrOworfSBBdWRpdEV2ZW50U3RhY2tJdGVtOworCitBdWRpdEV2ZW50U3RhY2tJ dGVtICphdWRpdEV2ZW50U3RhY2sgPSBOVUxMOworCisvKgorICogVHJhY2sgd2hlbiBhbiBp bnRlcm5hbCBzdGF0ZW1lbnQgaXMgcnVubmluZyBzbyBpdCBpcyBub3QgbG9nZ2VkCisgKi8K K3N0YXRpYyBib29sIGludGVybmFsU3RhdGVtZW50ID0gZmFsc2U7CisKKy8qCisgKiBUcmFj ayBydW5uaW5nIHRvdGFsIGZvciBzdGF0ZW1lbnRzIGFuZCBzdWJzdGF0ZW1lbnRzIGFuZCB3 aGV0aGVyIG9yIG5vdAorICogYW55dGhpbmcgaGFzIGJlZW4gbG9nZ2VkIHNpbmNlIHRoaXMg c3RhdGVtZW50IGJlZ2FuLgorICovCitzdGF0aWMgaW50NjQgc3RhdGVtZW50VG90YWwgPSAw Oworc3RhdGljIGludDY0IHN1YnN0YXRlbWVudFRvdGFsID0gMDsKK3N0YXRpYyBpbnQ2NCBz dGFja1RvdGFsID0gMDsKKworc3RhdGljIGJvb2wgc3RhdGVtZW50TG9nZ2VkID0gZmFsc2U7 CisKKy8qCisgKiBTdGFjayBmdW5jdGlvbnMKKyAqCisgKiBBdWRpdCBldmVudHMgY2FuIGdv IGRvd24gdG8gbXVsdGlwbGUgbGV2ZWxzIHNvIGEgc3RhY2sgaXMgbWFpbnRhaW5lZCB0byBr ZWVwCisgKiB0cmFjayBvZiB0aGVtLgorICovCisKKy8qCisgKiBSZXNwb25kIHRvIGNhbGxi YWNrcyByZWdpc3RlcmVkIHdpdGggTWVtb3J5Q29udGV4dFJlZ2lzdGVyUmVzZXRDYWxsYmFj aygpLgorICogUmVtb3ZlcyB0aGUgZXZlbnQocykgb2ZmIHRoZSBzdGFjayB0aGF0IGhhdmUg YmVjb21lIG9ic29sZXRlIG9uY2UgdGhlCisgKiBNZW1vcnlDb250ZXh0IGhhcyBiZWVuIGZy ZWVkLiAgVGhlIGNhbGxiYWNrIHNob3VsZCBhbHdheXMgYmUgZnJlZWluZyB0aGUgdG9wCisg KiBvZiB0aGUgc3RhY2ssIGJ1dCB0aGUgY29kZSBpcyB0b2xlcmFudCBvZiBvdXQtb2Ytb3Jk ZXIgY2FsbGJhY2tzLgorICovCitzdGF0aWMgdm9pZAorc3RhY2tfZnJlZSh2b2lkICpzdGFj a0ZyZWUpCit7CisJQXVkaXRFdmVudFN0YWNrSXRlbSAqbmV4dEl0ZW0gPSBhdWRpdEV2ZW50 U3RhY2s7CisKKwkvKiBPbmx5IHByb2Nlc3MgaWYgdGhlIHN0YWNrIGNvbnRhaW5zIGl0ZW1z ICovCisJd2hpbGUgKG5leHRJdGVtICE9IE5VTEwpCisJeworCQkvKiBDaGVjayBpZiB0aGlz IGl0ZW0gbWF0Y2hlcyB0aGUgaXRlbSB0byBiZSBmcmVlZCAqLworCQlpZiAobmV4dEl0ZW0g PT0gKEF1ZGl0RXZlbnRTdGFja0l0ZW0gKilzdGFja0ZyZWUpCisJCXsKKwkJCS8qIE1vdmUg dG9wIG9mIHN0YWNrIHRvIHRoZSBpdGVtIGFmdGVyIHRoZSBmcmVlZCBpdGVtICovCisJCQlh dWRpdEV2ZW50U3RhY2sgPSBuZXh0SXRlbS0+bmV4dDsKKworCQkJLyogSWYgdGhlIHN0YWNr IGlzIG5vdCBlbXB0eSAqLworCQkJaWYgKGF1ZGl0RXZlbnRTdGFjayA9PSBOVUxMKQorCQkJ eworCQkJCS8qIFJlc2V0IGludGVybmFsIHN0YXRlbWVudCBpbiBjYXNlIG9mIGVycm9yICov CisJCQkJaW50ZXJuYWxTdGF0ZW1lbnQgPSBmYWxzZTsKKworCQkJCS8qIFJlc2V0IHN1YiBz dGF0ZW1lbnQgdG90YWwgKi8KKwkJCQlzdWJzdGF0ZW1lbnRUb3RhbCA9IDA7CisKKwkJCQkv KiBSZXNldCBzdGF0ZW1lbnQgbG9nZ2VkIGZsYWcgdG90YWwgKi8KKwkJCQlzdGF0ZW1lbnRM b2dnZWQgPSBmYWxzZTsKKwkJCX0KKworCQkJcmV0dXJuOworCQl9CisKKwkJLyogU3RpbGwg bG9va2luZywgdGVzdCB0aGUgbmV4dCBpdGVtICovCisJCW5leHRJdGVtID0gbmV4dEl0ZW0t Pm5leHQ7CisJfQorfQorCisvKgorICogUHVzaCBhIG5ldyBhdWRpdCBldmVudCBvbnRvIHRo ZSBzdGFjayBhbmQgY3JlYXRlIGEgbmV3IG1lbW9yeSBjb250ZXh0IHRvCisgKiBzdG9yZSBp dC4KKyAqLworc3RhdGljIEF1ZGl0RXZlbnRTdGFja0l0ZW0gKgorc3RhY2tfcHVzaCgpCit7 CisJTWVtb3J5Q29udGV4dCBjb250ZXh0QXVkaXQ7CisJTWVtb3J5Q29udGV4dCBjb250ZXh0 T2xkOworCUF1ZGl0RXZlbnRTdGFja0l0ZW0gKnN0YWNrSXRlbTsKKworCS8qIENyZWF0ZSBh IG5ldyBtZW1vcnkgY29udGV4dCAqLworCWNvbnRleHRBdWRpdCA9IEFsbG9jU2V0Q29udGV4 dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkgInBnX2F1ZGl0IHN0 YWNrIGNvbnRleHQiLAorCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX01JTlNJWkUsCisJ CQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfSU5JVFNJWkUsCisJCQkJCQkJCQkJIEFMTE9D U0VUX0RFRkFVTFRfTUFYU0laRSk7CisJY29udGV4dE9sZCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhjb250ZXh0QXVkaXQpOworCisJLyogQWxsb2NhdGUgdGhlIHN0YWNrIGl0ZW0gKi8K KwlzdGFja0l0ZW0gPSBwYWxsb2MwKHNpemVvZihBdWRpdEV2ZW50U3RhY2tJdGVtKSk7CisK KwkvKiBTdG9yZSBtZW1vcnkgY29udGV4dHMgKi8KKwlzdGFja0l0ZW0tPmNvbnRleHRBdWRp dCA9IGNvbnRleHRBdWRpdDsKKworCS8qIElmIGl0ZW0gYWxyZWFkeSBvbiBzdGFjayB0aGVu IHB1c2ggaXQgZG93biAqLworCWlmIChhdWRpdEV2ZW50U3RhY2sgIT0gTlVMTCkKKwkJc3Rh Y2tJdGVtLT5uZXh0ID0gYXVkaXRFdmVudFN0YWNrOworCWVsc2UKKwkJc3RhY2tJdGVtLT5u ZXh0ID0gTlVMTDsKKworCS8qCisJICogQ3JlYXRlIHRoZSB1bmlxdWUgc3RhY2tJZCAtIHVz ZWQgdG8ga2VlcCB0aGUgc3RhY2sgc2FuZSB3aGVuIG1lbW9yeQorCSAqIGNvbnRleHRzIGFy ZSBmcmVlZCB1bmV4cGVjdGVkbHkuCisJICovCisJc3RhY2tJdGVtLT5zdGFja0lkID0gKytz dGFja1RvdGFsOworCisJLyoKKwkgKiBTZXR1cCBhIGNhbGxiYWNrIGluIGNhc2UgYW4gZXJy b3IgaGFwcGVucy4gIHN0YWNrX2ZyZWUoKSB3aWxsIHRydW5jYXRlCisJICogdGhlIHN0YWNr IGF0IHRoaXMgaXRlbS4KKwkgKi8KKwlzdGFja0l0ZW0tPmNvbnRleHRDYWxsYmFjay5mdW5j ID0gc3RhY2tfZnJlZTsKKwlzdGFja0l0ZW0tPmNvbnRleHRDYWxsYmFjay5hcmcgPSAodm9p ZCAqKXN0YWNrSXRlbTsKKwlNZW1vcnlDb250ZXh0UmVnaXN0ZXJSZXNldENhbGxiYWNrKGNv bnRleHRBdWRpdCwKKwkJCQkJCQkJCSAgICZzdGFja0l0ZW0tPmNvbnRleHRDYWxsYmFjayk7 CisKKwkvKiBQdXNoIGl0ZW0gb24gdGhlIHN0YWNrICovCisJYXVkaXRFdmVudFN0YWNrID0g c3RhY2tJdGVtOworCisJLyogUmV0dXJuIHRvIHRoZSBvbGQgbWVtb3J5IGNvbnRleHQgKi8K KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oY29udGV4dE9sZCk7CisKKwkvKiBSZXR1cm4gdGhl IHN0YWNrIGl0ZW0gKi8KKwlyZXR1cm4gc3RhY2tJdGVtOworfQorCisvKgorICogUG9wIGFu IGF1ZGl0IGV2ZW50IGZyb20gdGhlIHN0YWNrIGJ5IGRlbGV0aW5nIHRoZSBtZW1vcnkgY29u dGV4dCB0aGF0CisgKiBjb250YWlucyBpdC4gIFRoZSBjYWxsYmFjayB0byBzdGFja19mcmVl KCkgZG9lcyB0aGUgYWN0dWFsIHBvcC4KKyAqLworc3RhdGljIHZvaWQKK3N0YWNrX3BvcChp bnQ2NCBzdGFja0lkKQoreworCS8qIE1ha2Ugc3VyZSB3aGF0IHdlIHdhbnQgdG8gZGVsZXRl IGlzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrICovCisJaWYgKGF1ZGl0RXZlbnRTdGFjayAh PSBOVUxMICYmIGF1ZGl0RXZlbnRTdGFjay0+c3RhY2tJZCA9PSBzdGFja0lkKQorCXsKKwkJ TWVtb3J5Q29udGV4dERlbGV0ZShhdWRpdEV2ZW50U3RhY2stPmNvbnRleHRBdWRpdCk7CisJ fQorfQorCisvKgorICogQXBwZW5kcyBhIHByb3Blcmx5IHF1b3RlZCBDU1YgZmllbGQgdG8g U3RyaW5nSW5mby4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF92YWxpZF9jc3YoU3RyaW5n SW5mb0RhdGEgKmJ1ZmZlciwgY29uc3QgY2hhciAqYXBwZW5kU3RyKQoreworCWNvbnN0IGNo YXIgKnBDaGFyOworCisJLyoKKwkgKiBJZiB0aGUgYXBwZW5kIHN0cmluZyBpcyBudWxsIHRo ZW4gcmV0dXJuLiAgTlVMTCBmaWVsZHMgYXJlIG5vdCBxdW90ZWQKKwkgKiBpbiBDU1YKKwkg Ki8KKwlpZiAoYXBwZW5kU3RyID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIE9ubHkgZm9y bWF0IGZvciBDU1YgaWYgYXBwZW5kU3RyIGNvbnRhaW5zOiAiLCBjb21tYSwgXG4sIFxyICov CisJaWYgKHN0cnN0cihhcHBlbmRTdHIsICIsIikgfHwgc3Ryc3RyKGFwcGVuZFN0ciwgIlwi IikgfHwKKwkJc3Ryc3RyKGFwcGVuZFN0ciwgIlxuIikgfHwgc3Ryc3RyKGFwcGVuZFN0ciwg IlxyIikpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvQ2hhck1hY3JvKGJ1ZmZlciwgJyInKTsK KworCQlmb3IgKHBDaGFyID0gYXBwZW5kU3RyOyAqcENoYXI7IHBDaGFyKyspCisJCXsKKwkJ CWlmICgqcENoYXIgPT0gJyInKSAvKiBkb3VibGUgc2luZ2xlIHF1b3RlcyAqLworCQkJCWFw cGVuZFN0cmluZ0luZm9DaGFyTWFjcm8oYnVmZmVyLCAqcENoYXIpOworCisJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhck1hY3JvKGJ1ZmZlciwgKnBDaGFyKTsKKwkJfQorCisJCWFwcGVuZFN0 cmluZ0luZm9DaGFyTWFjcm8oYnVmZmVyLCAnIicpOworCX0KKwkvKiBFbHNlIGp1c3QgYXBw ZW5kICovCisJZWxzZQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWZmZXIsIGFw cGVuZFN0cik7CisJfQorfQorCisvKgorICogVGFrZXMgYW4gQXVkaXRFdmVudCwgY2xhc3Np ZmllcyBpdCwgdGhlbiBsb2dzIGl0IGlmIHBlcm1pc3Npb25zIHdlcmUgZ3JhbnRlZAorICog dmlhIHJvbGVzIG9yIGlmIHRoZSBzdGF0ZW1lbnQgYmVsb25ncyBpbiBhIGNsYXNzIHRoYXQg aXMgYmVpbmcgbG9nZ2VkLgorICovCitzdGF0aWMgdm9pZAorbG9nX2F1ZGl0X2V2ZW50KEF1 ZGl0RXZlbnRTdGFja0l0ZW0gKnN0YWNrSXRlbSkKK3sKKwlNZW1vcnlDb250ZXh0IGNvbnRl eHRPbGQ7CisJU3RyaW5nSW5mb0RhdGEgYXVkaXRTdHI7CisKKwkvKiBCeSBkZWZhdWx0IHB1 dCBldmVyeXRoaW5nIGluIHRoZSBNSVNDIGNsYXNzLiAqLworCWVudW0gTG9nQ2xhc3MgY2xh c3MgPSBMT0dfTUlTQzsKKwljb25zdCBjaGFyICpjbGFzc05hbWUgPSBDTEFTU19NSVNDOwor CisJLyogQ2xhc3NpZnkgdGhlIHN0YXRlbWVudCB1c2luZyBsb2cgc3RtdCBsZXZlbCBhbmQg dGhlIGNvbW1hbmQgdGFnICovCisJc3dpdGNoIChzdGFja0l0ZW0tPmF1ZGl0RXZlbnQubG9n U3RtdExldmVsKQorCXsKKwkJLyogQWxsIG1vZHMgZ28gaW4gV1JJVEUgY2xhc3MgKi8KKwkJ Y2FzZSBMT0dTVE1UX01PRDoKKwkJCWNsYXNzTmFtZSA9IENMQVNTX1dSSVRFOworCQkJY2xh c3MgPSBMT0dfV1JJVEU7CisJCQlicmVhazsKKworCQkvKiBTZXBhcmF0ZSBST0xFIGZyb20g b3RoZXIgRERMIHN0YXRlbWVudHMgKi8KKwkJY2FzZSBMT0dTVE1UX0RETDoKKwkJCS8qIElk ZW50aWZ5IHJvbGUgc3RhdGVtZW50cyAqLworCQkJaWYgKHN0YWNrSXRlbS0+YXVkaXRFdmVu dC5jb21tYW5kVGFnID09IFRfR3JhbnRTdG10IHx8CisJCQkJc3RhY2tJdGVtLT5hdWRpdEV2 ZW50LmNvbW1hbmRUYWcgPT0gVF9HcmFudFJvbGVTdG10IHx8CisJCQkJc3RhY2tJdGVtLT5h dWRpdEV2ZW50LmNvbW1hbmRUYWcgPT0gVF9DcmVhdGVSb2xlU3RtdCB8fAorCQkJCShzdGFj a0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZFRhZyA9PSBUX1JlbmFtZVN0bXQgJiYKKwkJCQkg cGdfc3RyY2FzZWNtcChzdGFja0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZCwKKwkJCQkJCQkg ICBDT01NQU5EX0FMVEVSX1JPTEUpID09IDApIHx8CisJCQkJKHN0YWNrSXRlbS0+YXVkaXRF dmVudC5jb21tYW5kVGFnID09IFRfRHJvcFN0bXQgJiYKKwkJCQkgcGdfc3RyY2FzZWNtcChz dGFja0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZCwKKwkJCQkJCQkgICBDT01NQU5EX0RST1Bf Uk9MRSkgPT0gMCkgfHwKKwkJCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZFRhZyA9 PSBUX0Ryb3BSb2xlU3RtdCB8fAorCQkJCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5jb21tYW5k VGFnID09IFRfQWx0ZXJSb2xlU3RtdCB8fAorCQkJCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5j b21tYW5kVGFnID09IFRfQWx0ZXJSb2xlU2V0U3RtdCkKKwkJCXsKKwkJCQljbGFzc05hbWUg PSBDTEFTU19ST0xFOworCQkJCWNsYXNzID0gTE9HX1JPTEU7CisJCQl9CisJCQkvKiBFbHNl IGxvZyBhcyBEREwgKi8KKwkJCWVsc2UKKwkJCXsKKwkJCQljbGFzc05hbWUgPSBDTEFTU19E REw7CisJCQkJY2xhc3MgPSBMT0dfRERMOworCQkJfQorCisJCS8qIEZpZ3VyZSBvdXQgdGhl IHJlc3QgKi8KKwkJY2FzZSBMT0dTVE1UX0FMTDoKKwkJCXN3aXRjaCAoc3RhY2tJdGVtLT5h dWRpdEV2ZW50LmNvbW1hbmRUYWcpCisJCQl7CisJCQkJLyogUkVBRCBzdGF0ZW1lbnRzICov CisJCQkJY2FzZSBUX0NvcHlTdG10OgorCQkJCWNhc2UgVF9TZWxlY3RTdG10OgorCQkJCWNh c2UgVF9QcmVwYXJlU3RtdDoKKwkJCQljYXNlIFRfUGxhbm5lZFN0bXQ6CisJCQkJY2FzZSBU X0V4ZWN1dGVTdG10OgorCQkJCQljbGFzc05hbWUgPSBDTEFTU19SRUFEOworCQkJCQljbGFz cyA9IExPR19SRUFEOworCQkJCQlicmVhazsKKworCQkJCS8qIFJlaW5kZXggaXMgRERMIChi ZWNhdXNlIGNsdXN0ZXIgaXMgRERMKSAqLworCQkJCWNhc2UgVF9SZWluZGV4U3RtdDoKKwkJ CQkJY2xhc3NOYW1lID0gQ0xBU1NfRERMOworCQkJCQljbGFzcyA9IExPR19EREw7CisJCQkJ CWJyZWFrOworCisJCQkJLyogRlVOQ1RJT04gc3RhdGVtZW50cyAqLworCQkJCWNhc2UgVF9E b1N0bXQ6CisJCQkJCWNsYXNzTmFtZSA9IENMQVNTX0ZVTkNUSU9OOworCQkJCQljbGFzcyA9 IExPR19GVU5DVElPTjsKKwkJCQkJYnJlYWs7CisKKwkJCQlkZWZhdWx0OgorCQkJCQlicmVh azsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgTE9HU1RNVF9OT05FOgorCQkJYnJlYWs7 CisJfQorCisJLyoKKwkgKiBPbmx5IGxvZyB0aGUgc3RhdGVtZW50IGlmOgorCSAqCisJICog MS4gSWYgcGVybWlzc2lvbnMgd2VyZSBncmFudGVkIHZpYSByb2xlcworCSAqIDIuIFRoZSBz dGF0ZW1lbnQgYmVsb25ncyB0byBhIGNsYXNzIHRoYXQgaXMgYmVpbmcgbG9nZ2VkCisJICov CisJaWYgKCFzdGFja0l0ZW0tPmF1ZGl0RXZlbnQuZ3JhbnRlZCAmJiAhKGF1ZGl0TG9nQml0 bWFwICYgY2xhc3MpKQorCQlyZXR1cm47CisKKwkvKiBVc2UgYXVkaXQgbWVtb3J5IGNvbnRl eHQgaW4gY2FzZSBzb21ldGhpbmcgaXMgbm90IGZyZWVkICovCisJY29udGV4dE9sZCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhzdGFja0l0ZW0tPmNvbnRleHRBdWRpdCk7CisKKwkvKiBT ZXQgc3RhdGVtZW50IGFuZCBzdWJzdGF0ZW1lbnQgSWRzICovCisJaWYgKHN0YWNrSXRlbS0+ YXVkaXRFdmVudC5zdGF0ZW1lbnRJZCA9PSAwKQorCXsKKwkJLyogSWYgbm90aGluZyBoYXMg YmVlbiBsb2dnZWQgeWV0IHRoZW4gY3JlYXRlIGEgbmV3IHN0YXRlbWVudCBJZCAqLworCQlp ZiAoIXN0YXRlbWVudExvZ2dlZCkKKwkJeworCQkJc3RhdGVtZW50VG90YWwrKzsKKwkJCXN0 YXRlbWVudExvZ2dlZCA9IHRydWU7CisJCX0KKworCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQu c3RhdGVtZW50SWQgPSBzdGF0ZW1lbnRUb3RhbDsKKwkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50 LnN1YnN0YXRlbWVudElkID0gKytzdWJzdGF0ZW1lbnRUb3RhbDsKKwl9CisKKwkvKiBDcmVh dGUgdGhlIGF1ZGl0IHN0cmluZyAqLworCWluaXRTdHJpbmdJbmZvKCZhdWRpdFN0cik7CisK KwlhcHBlbmRfdmFsaWRfY3N2KCZhdWRpdFN0ciwgc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNv bW1hbmQpOworCWFwcGVuZFN0cmluZ0luZm9DaGFyTWFjcm8oJmF1ZGl0U3RyLCAnLCcpOwor CisJYXBwZW5kX3ZhbGlkX2NzdigmYXVkaXRTdHIsIHN0YWNrSXRlbS0+YXVkaXRFdmVudC5v YmplY3RUeXBlKTsKKwlhcHBlbmRTdHJpbmdJbmZvQ2hhck1hY3JvKCZhdWRpdFN0ciwgJywn KTsKKworCWFwcGVuZF92YWxpZF9jc3YoJmF1ZGl0U3RyLCBzdGFja0l0ZW0tPmF1ZGl0RXZl bnQub2JqZWN0TmFtZSk7CisJYXBwZW5kU3RyaW5nSW5mb0NoYXJNYWNybygmYXVkaXRTdHIs ICcsJyk7CisKKwlhcHBlbmRfdmFsaWRfY3N2KCZhdWRpdFN0ciwgc3RhY2tJdGVtLT5hdWRp dEV2ZW50LmNvbW1hbmRUZXh0KTsKKworCS8qIElmIHBhcmFtZXRlciBsb2dnaW5nIGlzIHR1 cm5lZCBvbiBhbmQgdGhlcmUgYXJlIHBhcmFtZXRlcnMgdG8gbG9nICovCisJaWYgKGF1ZGl0 TG9nQml0bWFwICYgTE9HX1BBUkFNRVRFUiAmJgorCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQu cGFyYW1MaXN0ICE9IE5VTEwgJiYKKwkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LnBhcmFtTGlz dC0+bnVtUGFyYW1zID4gMCAmJgorCQkhSXNBYm9ydGVkVHJhbnNhY3Rpb25CbG9ja1N0YXRl KCkpCisJeworCQlQYXJhbUxpc3RJbmZvIHBhcmFtTGlzdCA9IHN0YWNrSXRlbS0+YXVkaXRF dmVudC5wYXJhbUxpc3Q7CisJCWludCBwYXJhbUlkeDsKKworCQkvKiBJdGVyYXRlIHRocm91 Z2ggYWxsIHBhcmFtcyAqLworCQlmb3IgKHBhcmFtSWR4ID0gMDsgcGFyYW1JZHggPCBwYXJh bUxpc3QtPm51bVBhcmFtczsgcGFyYW1JZHgrKykKKwkJeworCQkJUGFyYW1FeHRlcm5EYXRh ICpwcm0gPSAmcGFyYW1MaXN0LT5wYXJhbXNbcGFyYW1JZHhdOworCQkJT2lkIAkJCSB0eXBl T3V0cHV0OworCQkJYm9vbCAJCQkgdHlwZUlzVmFyTGVuYTsKKwkJCWNoYXIgCQkJKnBhcmFt U3RyOworCisJCQkvKiBBZGQgYSBjb21tYSBmb3IgZWFjaCBwYXJhbSAqLworCQkJYXBwZW5k U3RyaW5nSW5mb0NoYXJNYWNybygmYXVkaXRTdHIsICcsJyk7CisKKwkJCS8qIFNraXAgdGhp cyBwYXJhbSBpZiBudWxsIG9yIGlmIG9pZCBpcyBpbnZhbGlkICovCisJCQlpZiAocHJtLT5p c251bGwgfHwgIU9pZElzVmFsaWQocHJtLT5wdHlwZSkpCisJCQl7CisJCQkJY29udGludWU7 CisJCQl9CisKKwkJCS8qIE91dHB1dCB0aGUgc3RyaW5nICovCisJCQlnZXRUeXBlT3V0cHV0 SW5mbyhwcm0tPnB0eXBlLCAmdHlwZU91dHB1dCwgJnR5cGVJc1ZhckxlbmEpOworCQkJcGFy YW1TdHIgPSBPaWRPdXRwdXRGdW5jdGlvbkNhbGwodHlwZU91dHB1dCwgcHJtLT52YWx1ZSk7 CisKKwkJCWFwcGVuZF92YWxpZF9jc3YoJmF1ZGl0U3RyLCBwYXJhbVN0cik7CisJCQlwZnJl ZShwYXJhbVN0cik7CisJCX0KKwl9CisKKwkvKiBMb2cgdGhlIGF1ZGl0IHN0cmluZyAqLwor CWVsb2coYXVkaXRMb2dOb3RpY2UgPyBOT1RJQ0UgOiBMT0csCisJCSAiQVVESVQ6ICVzLCVs ZCwlbGQsJXMsJXMiLAorCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmdyYW50ZWQgPworCQkJ CUFVRElUX1RZUEVfT0JKRUNUIDogQVVESVRfVFlQRV9TRVNTSU9OLAorCQkJc3RhY2tJdGVt LT5hdWRpdEV2ZW50LnN0YXRlbWVudElkLAorCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LnN1 YnN0YXRlbWVudElkLAorCQkJY2xhc3NOYW1lLCBhdWRpdFN0ci5kYXRhKTsKKworCS8qIE1h cmsgdGhlIGF1ZGl0IGV2ZW50IGFzIGxvZ2dlZCAqLworCXN0YWNrSXRlbS0+YXVkaXRFdmVu dC5sb2dnZWQgPSB0cnVlOworCisJLyogU3dpdGNoIGJhY2sgdG8gdGhlIG9sZCBtZW1vcnkg Y29udGV4dCAqLworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjb250ZXh0T2xkKTsKK30KKwor LyoKKyAqIENoZWNrIGlmIHRoZSByb2xlIG9yIGFueSBpbmhlcml0ZWQgcm9sZSBoYXMgYW55 IHBlcm1pc3Npb24gaW4gdGhlIG1hc2suICBUaGUKKyAqIHB1YmxpYyByb2xlIGlzIGV4Y2x1 ZGVkIGZyb20gdGhpcyBjaGVjayBhbmQgc3VwZXJ1c2VyIHBlcm1pc3Npb25zIGFyZSBub3QK KyAqIGNvbnNpZGVyZWQuCisgKi8KK3N0YXRpYyBib29sCithdWRpdF9vbl9hY2woRGF0dW0g YWNsRGF0dW0sCisJCQkgT2lkIGF1ZGl0T2lkLAorCQkJIEFjbE1vZGUgbWFzaykKK3sKKwli b29sCQlyZXN1bHQgPSBmYWxzZTsKKwlBY2wJCSAgICphY2w7CisJQWNsSXRlbQkgICAqYWNs SXRlbURhdGE7CisJaW50CQkJYWNsSW5kZXg7CisJaW50CQkJYWNsVG90YWw7CisKKwkvKiBE ZXRvYXN0IGNvbHVtbidzIEFDTCBpZiBuZWNlc3NhcnkgKi8KKwlhY2wgPSBEYXR1bUdldEFj bFAoYWNsRGF0dW0pOworCisJLyogR2V0IHRoZSBhY2wgbGlzdCBhbmQgdG90YWwgKi8KKwlh Y2xUb3RhbCA9IEFDTF9OVU0oYWNsKTsKKwlhY2xJdGVtRGF0YSA9IEFDTF9EQVQoYWNsKTsK KworCS8qIENoZWNrIHByaXZpbGVnZXMgZ3JhbnRlZCBkaXJlY3RseSB0byBhdWRpdE9pZCAq LworCWZvciAoYWNsSW5kZXggPSAwOyBhY2xJbmRleCA8IGFjbFRvdGFsOyBhY2xJbmRleCsr KQorCXsKKwkJQWNsSXRlbSAqYWNsSXRlbSA9ICZhY2xJdGVtRGF0YVthY2xJbmRleF07CisK KwkJaWYgKGFjbEl0ZW0tPmFpX2dyYW50ZWUgPT0gYXVkaXRPaWQgJiYKKwkJCWFjbEl0ZW0t PmFpX3ByaXZzICYgbWFzaykKKwkJeworCQkJcmVzdWx0ID0gdHJ1ZTsKKwkJCWJyZWFrOwor CQl9CisJfQorCisJLyoKKwkgKiBDaGVjayBwcml2aWxlZ2VzIGdyYW50ZWQgaW5kaXJlY3Rs eSB2aWEgcm9sZSBtZW1iZXJzaGlwcy4gV2UgZG8gdGhpcyBpbgorCSAqIGEgc2VwYXJhdGUg cGFzcyB0byBtaW5pbWl6ZSBleHBlbnNpdmUgaW5kaXJlY3QgbWVtYmVyc2hpcCB0ZXN0cy4g IEluCisJICogcGFydGljdWxhciwgaXQncyB3b3J0aCB0ZXN0aW5nIHdoZXRoZXIgYSBnaXZl biBBQ0wgZW50cnkgZ3JhbnRzIGFueQorCSAqIHByaXZpbGVnZXMgc3RpbGwgb2YgaW50ZXJl c3QgYmVmb3JlIHdlIHBlcmZvcm0gdGhlIGhhc19wcml2c19vZl9yb2xlCisJICogdGVzdC4K KwkgKi8KKwlpZiAoIXJlc3VsdCkKKwl7CisJCWZvciAoYWNsSW5kZXggPSAwOyBhY2xJbmRl eCA8IGFjbFRvdGFsOyBhY2xJbmRleCsrKQorCQl7CisJCQlBY2xJdGVtICphY2xJdGVtID0g JmFjbEl0ZW1EYXRhW2FjbEluZGV4XTsKKworCQkJLyogRG9uJ3QgdGVzdCBwdWJsaWMgb3Ig YXVkaXRPaWQgKGl0IGhhcyBiZWVuIHRlc3RlZCBhbHJlYWR5KSAqLworCQkJaWYgKGFjbEl0 ZW0tPmFpX2dyYW50ZWUgPT0gQUNMX0lEX1BVQkxJQyB8fAorCQkJCWFjbEl0ZW0tPmFpX2dy YW50ZWUgPT0gYXVkaXRPaWQpCisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBDaGVj ayB0aGF0IHRoZSByb2xlIGhhcyB0aGUgcmVxdWlyZWQgcHJpdmlsZWdlcyBhbmQgdGhhdCBp dCBpcworCQkJICogaW5oZXJpdGVkIGJ5IGF1ZGl0T2lkLgorCQkJICovCisJCQlpZiAoYWNs SXRlbS0+YWlfcHJpdnMgJiBtYXNrICYmCisJCQkJaGFzX3ByaXZzX29mX3JvbGUoYXVkaXRP aWQsIGFjbEl0ZW0tPmFpX2dyYW50ZWUpKQorCQkJeworCQkJCXJlc3VsdCA9IHRydWU7CisJ CQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwkvKiBpZiB3ZSBoYXZlIGEgZGV0b2FzdGVk IGNvcHksIGZyZWUgaXQgKi8KKwlpZiAoYWNsICYmIChQb2ludGVyKSBhY2wgIT0gRGF0dW1H ZXRQb2ludGVyKGFjbERhdHVtKSkKKwkJcGZyZWUoYWNsKTsKKworCXJldHVybiByZXN1bHQ7 Cit9CisKKy8qCisgKiBDaGVjayBpZiBhIHJvbGUgaGFzIGFueSBvZiB0aGUgcGVybWlzc2lv bnMgaW4gdGhlIG1hc2sgb24gYSByZWxhdGlvbi4KKyAqLworc3RhdGljIGJvb2wKK2F1ZGl0 X29uX3JlbGF0aW9uKE9pZCByZWxPaWQsCisJCQkJICBPaWQgYXVkaXRPaWQsCisJCQkJICBB Y2xNb2RlIG1hc2spCit7CisJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisJSGVhcFR1cGxlCXR1 cGxlOworCURhdHVtCQlhY2xEYXR1bTsKKwlib29sCQlpc051bGw7CisKKwkvKiBHZXQgcmVs YXRpb24gdHVwbGUgZnJvbSBwZ19jbGFzcyAqLworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxPaWQpKTsKKworCS8qIFJldHVybiBmYWxz ZSBpZiB0dXBsZSBpcyBub3QgdmFsaWQgKi8KKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw bGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBHZXQgdGhlIHJlbGF0aW9uJ3MgQUNMICov CisJYWNsRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUkVMT0lELCB0dXBsZSwgQW51bV9wZ19j bGFzc19yZWxhY2wsCisJCQkJCQkJICAgJmlzTnVsbCk7CisKKwkvKiBJZiBub3QgbnVsbCB0 aGVuIHRlc3QgKi8KKwlpZiAoIWlzTnVsbCkKKwkJcmVzdWx0ID0gYXVkaXRfb25fYWNsKGFj bERhdHVtLCBhdWRpdE9pZCwgbWFzayk7CisKKwkvKiBGcmVlIHRoZSByZWxhdGlvbiB0dXBs ZSAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQor CisvKgorICogQ2hlY2sgaWYgYSByb2xlIGhhcyBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIGlu IHRoZSBtYXNrIG9uIGFuIGF0dHJpYnV0ZS4KKyAqLworc3RhdGljIGJvb2wKK2F1ZGl0X29u X2F0dHJpYnV0ZShPaWQgcmVsT2lkLAorCQkJCSAgIEF0dHJOdW1iZXIgYXR0TnVtLAorCQkJ CSAgIE9pZCBhdWRpdE9pZCwKKwkJCQkgICBBY2xNb2RlIG1hc2spCit7CisJYm9vbAkJcmVz dWx0ID0gZmFsc2U7CisJSGVhcFR1cGxlCWF0dFR1cGxlOworCURhdHVtCQlhY2xEYXR1bTsK Kwlib29sCQlpc051bGw7CisKKwkvKiBHZXQgdGhlIGF0dHJpYnV0ZSdzIEFDTCAqLworCWF0 dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5VTSwKKwkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKHJlbE9pZCksCisJCQkJCQkJICAgSW50MTZHZXREYXR1bShhdHROdW0pKTsKKwor CS8qIFJldHVybiBmYWxzZSBpZiBhdHRyaWJ1dGUgaXMgaW52YWxpZCAqLworCWlmICghSGVh cFR1cGxlSXNWYWxpZChhdHRUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIE9ubHkg cHJvY2VzcyBhdHRyaWJ1dGUgdGhhdCBoYXZlIG5vdCBiZWVuIGRyb3BwZWQgKi8KKwlpZiAo ISgoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChhdHRUdXBsZSkpLT5hdHRpc2Ryb3Bw ZWQpCisJeworCQlhY2xEYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihBVFROVU0sIGF0dFR1cGxl LCBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRhY2wsCisJCQkJCQkJCSAgICZpc051bGwpOworCisJ CWlmICghaXNOdWxsKQorCQkJcmVzdWx0ID0gYXVkaXRfb25fYWNsKGFjbERhdHVtLCBhdWRp dE9pZCwgbWFzayk7CisJfQorCisJLyogRnJlZSBhdHRyaWJ1dGUgKi8KKwlSZWxlYXNlU3lz Q2FjaGUoYXR0VHVwbGUpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIENoZWNr IGlmIGEgcm9sZSBoYXMgYW55IG9mIHRoZSBwZXJtaXNzaW9ucyBpbiB0aGUgbWFzayBvbiBh biBhdHRyaWJ1dGUgaW4KKyAqIHRoZSBwcm92aWRlZCBzZXQuICBJZiB0aGUgc2V0IGlzIGVt cHR5LCB0aGVuIGFsbCB2YWxpZCBhdHRyaWJ1dGVzIGluIHRoZQorICogcmVsYXRpb24gd2ls bCBiZSB0ZXN0ZWQuCisgKi8KK3N0YXRpYyBib29sCithdWRpdF9vbl9hbnlfYXR0cmlidXRl KE9pZCByZWxPaWQsCisJCQkJCSAgIE9pZCBhdWRpdE9pZCwKKwkJCQkJICAgQml0bWFwc2V0 ICphdHRyaWJ1dGVTZXQsCisJCQkJCSAgIEFjbE1vZGUgbW9kZSkKK3sKKwlib29sIHJlc3Vs dCA9IGZhbHNlOworCUF0dHJOdW1iZXIgY29sOworCUJpdG1hcHNldCAqdG1wU2V0OworCisJ LyogSWYgYm1zIGlzIGVtcHR5IHRoZW4gY2hlY2sgZm9yIGFueSBjb2x1bW4gbWF0Y2ggKi8K KwlpZiAoYm1zX2lzX2VtcHR5KGF0dHJpYnV0ZVNldCkpCisJeworCQlIZWFwVHVwbGUJY2xh c3NUdXBsZTsKKwkJQXR0ck51bWJlcgluYXR0cnM7CisJCUF0dHJOdW1iZXIJY3Vycl9hdHQ7 CisKKwkJLyogR2V0IHJlbGF0aW9uIHRvIGRldGVybWluZSB0b3RhbCBhdHRyaWJ1dGUgKi8K KwkJY2xhc3NUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0 dW0ocmVsT2lkKSk7CisKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYXNzVHVwbGUpKQor CQkJcmV0dXJuIGZhbHNlOworCisJCW5hdHRycyA9ICgoRm9ybV9wZ19jbGFzcykgR0VUU1RS VUNUKGNsYXNzVHVwbGUpKS0+cmVsbmF0dHM7CisJCVJlbGVhc2VTeXNDYWNoZShjbGFzc1R1 cGxlKTsKKworCQkvKiBDaGVjayBlYWNoIGNvbHVtbiAqLworCQlmb3IgKGN1cnJfYXR0ID0g MTsgY3Vycl9hdHQgPD0gbmF0dHJzOyBjdXJyX2F0dCsrKQorCQl7CisJCQlpZiAoYXVkaXRf b25fYXR0cmlidXRlKHJlbE9pZCwgY3Vycl9hdHQsIGF1ZGl0T2lkLCBtb2RlKSkKKwkJCQly ZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCS8qIGJtc19maXJzdF9tZW1iZXIgaXMgZGVzdHJ1 Y3RpdmUsIHNvIG1ha2UgYSBjb3B5IGJlZm9yZSB1c2luZyBpdC4gKi8KKwl0bXBTZXQgPSBi bXNfY29weShhdHRyaWJ1dGVTZXQpOworCisJLyogQ2hlY2sgZWFjaCBjb2x1bW4gKi8KKwl3 aGlsZSAoKGNvbCA9IGJtc19maXJzdF9tZW1iZXIodG1wU2V0KSkgPj0gMCkKKwl7CisJCWNv bCArPSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCWlmIChjb2wg IT0gSW52YWxpZEF0dHJOdW1iZXIgJiYKKwkJCWF1ZGl0X29uX2F0dHJpYnV0ZShyZWxPaWQs IGNvbCwgYXVkaXRPaWQsIG1vZGUpKQorCQl7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJl YWs7CisJCX0KKwl9CisKKwkvKiBGcmVlIHRoZSBjb2x1bW4gc2V0ICovCisJYm1zX2ZyZWUo dG1wU2V0KTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBDcmVhdGUgQXVkaXRF dmVudHMgZm9yIFNFTEVDVC9ETUwgb3BlcmF0aW9ucyB2aWEgZXhlY3V0b3IgcGVybWlzc2lv bnMgY2hlY2tzLgorICovCitzdGF0aWMgdm9pZAorbG9nX3NlbGVjdF9kbWwoT2lkIGF1ZGl0 T2lkLCBMaXN0ICpyYW5nZVRhYmxzKQoreworCUxpc3RDZWxsICpscjsKKwlib29sIGZpcnN0 ID0gdHJ1ZTsKKwlib29sIGZvdW5kID0gZmFsc2U7CisKKwkvKiBEbyBub3QgbG9nIGlmIHRo aXMgaXMgYW4gaW50ZXJuYWwgc3RhdGVtZW50ICovCisJaWYgKGludGVybmFsU3RhdGVtZW50 KQorCQlyZXR1cm47CisKKwlmb3JlYWNoKGxyLCByYW5nZVRhYmxzKQorCXsKKwkJT2lkIHJl bE9pZDsKKwkJUmVsYXRpb24gcmVsOworCQlSYW5nZVRibEVudHJ5ICpydGUgPSBsZmlyc3Qo bHIpOworCisJCS8qIFdlIG9ubHkgY2FyZSBhYm91dCB0YWJsZXMsIGFuZCBjYW4gaWdub3Jl IHN1YnF1ZXJpZXMgZXRjLiAqLworCQlpZiAocnRlLT5ydGVraW5kICE9IFJURV9SRUxBVElP TikKKwkJCWNvbnRpbnVlOworCisJCWZvdW5kID0gdHJ1ZTsKKworCQkvKgorCQkgKiBGaWx0 ZXIgb3V0IGFueSBzeXN0ZW0gcmVsYXRpb25zCisJCSAqLworCQlyZWxPaWQgPSBydGUtPnJl bGlkOworCQlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbE9pZCwgTm9Mb2NrKTsKKworCQlpZiAo SXNTeXN0ZW1OYW1lc3BhY2UoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSkpCisJCXsKKwkJ CXJlbGF0aW9uX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJ LyoKKwkJICogV2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIHBhcnNldHJlZSBoZXJlLCBz byB3ZSBoYXZlIHRvIGdlbmVyYXRlCisJCSAqIHRoZSBub2RlIHR5cGUsIG9iamVjdCB0eXBl LCBhbmQgY29tbWFuZCB0YWcgYnkgZGVjb2RpbmcKKwkJICogcnRlLT5yZXF1aXJlZFBlcm1z IGFuZCBydGUtPnJlbGtpbmQuCisJCSAqLworCQlpZiAocnRlLT5yZXF1aXJlZFBlcm1zICYg QUNMX0lOU0VSVCkKKwkJeworCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50LmxvZ1N0 bXRMZXZlbCA9IExPR1NUTVRfTU9EOworCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50 LmNvbW1hbmRUYWcgPSBUX0luc2VydFN0bXQ7CisJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0 RXZlbnQuY29tbWFuZCA9IENPTU1BTkRfSU5TRVJUOworCQl9CisJCWVsc2UgaWYgKHJ0ZS0+ cmVxdWlyZWRQZXJtcyAmIEFDTF9VUERBVEUpCisJCXsKKwkJCWF1ZGl0RXZlbnRTdGFjay0+ YXVkaXRFdmVudC5sb2dTdG10TGV2ZWwgPSBMT0dTVE1UX01PRDsKKwkJCWF1ZGl0RXZlbnRT dGFjay0+YXVkaXRFdmVudC5jb21tYW5kVGFnID0gVF9VcGRhdGVTdG10OworCQkJYXVkaXRF dmVudFN0YWNrLT5hdWRpdEV2ZW50LmNvbW1hbmQgPSBDT01NQU5EX1VQREFURTsKKwkJfQor CQllbHNlIGlmIChydGUtPnJlcXVpcmVkUGVybXMgJiBBQ0xfREVMRVRFKQorCQl7CisJCQlh dWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQubG9nU3RtdExldmVsID0gTE9HU1RNVF9NT0Q7 CisJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQuY29tbWFuZFRhZyA9IFRfRGVsZXRl U3RtdDsKKwkJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5jb21tYW5kID0gQ09NTUFO RF9ERUxFVEU7CisJCX0KKwkJZWxzZSBpZiAocnRlLT5yZXF1aXJlZFBlcm1zICYgQUNMX1NF TEVDVCkKKwkJeworCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50LmxvZ1N0bXRMZXZl bCA9IExPR1NUTVRfQUxMOworCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50LmNvbW1h bmRUYWcgPSBUX1NlbGVjdFN0bXQ7CisJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQu Y29tbWFuZCA9IENPTU1BTkRfU0VMRUNUOworCQl9CisJCWVsc2UKKwkJeworCQkJYXVkaXRF dmVudFN0YWNrLT5hdWRpdEV2ZW50LmxvZ1N0bXRMZXZlbCA9IExPR1NUTVRfQUxMOworCQkJ YXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50LmNvbW1hbmRUYWcgPSBUX0ludmFsaWQ7CisJ CQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQuY29tbWFuZCA9IENPTU1BTkRfVU5LTk9X TjsKKwkJfQorCisJCS8qCisJCSAqIEZpbGwgdmFsdWVzIGluIHRoZSBldmVudCBzdHJ1Y3Qg dGhhdCBhcmUgcmVxdWlyZWQgZm9yIHNlc3Npb24KKwkJICogbG9nZ2luZy4KKwkJICovCisJ CWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5ncmFudGVkID0gZmFsc2U7CisKKwkJLyoK KwkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgcnRlIHRoZW4gc2Vzc2lvbiBsb2cgdW5sZXNz IGF1ZGl0TG9nUmVsYXRpb24KKwkJICogaXMgc2V0LgorCQkgKi8KKwkJaWYgKGZpcnN0ICYm ICFhdWRpdExvZ1JlbGF0aW9uKQorCQl7CisJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZl bnQub2JqZWN0TmFtZSA9ICIiOworCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9i amVjdFR5cGUgPSAiIjsKKworCQkJbG9nX2F1ZGl0X2V2ZW50KGF1ZGl0RXZlbnRTdGFjayk7 CisKKwkJCWZpcnN0ID0gZmFsc2U7CisJCX0KKworCQkvKiBHZXQgdGhlIHJlbGF0aW9uIHR5 cGUgKi8KKwkJc3dpdGNoIChydGUtPnJlbGtpbmQpCisJCXsKKwkJCWNhc2UgUkVMS0lORF9S RUxBVElPTjoKKwkJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQub2JqZWN0VHlwZSA9 CisJCQkJCU9CSkVDVF9UWVBFX1RBQkxFOworCQkJCWJyZWFrOworCisJCQljYXNlIFJFTEtJ TkRfSU5ERVg6CisJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUg PQorCQkJCQlPQkpFQ1RfVFlQRV9JTkRFWDsKKwkJCQlicmVhazsKKworCQkJY2FzZSBSRUxL SU5EX1NFUVVFTkNFOgorCQkJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5vYmplY3RU eXBlID0KKwkJCQkJT0JKRUNUX1RZUEVfU0VRVUVOQ0U7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgUkVMS0lORF9UT0FTVFZBTFVFOgorCQkJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVu dC5vYmplY3RUeXBlID0KKwkJCQkJT0JKRUNUX1RZUEVfVE9BU1RWQUxVRTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBSRUxLSU5EX1ZJRVc6CisJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRp dEV2ZW50Lm9iamVjdFR5cGUgPQorCQkJCQlPQkpFQ1RfVFlQRV9WSUVXOworCQkJCWJyZWFr OworCisJCQljYXNlIFJFTEtJTkRfQ09NUE9TSVRFX1RZUEU6CisJCQkJYXVkaXRFdmVudFN0 YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPQorCQkJCQlPQkpFQ1RfVFlQRV9DT01QT1NJ VEVfVFlQRTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBSRUxLSU5EX0ZPUkVJR05fVEFCTEU6 CisJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPQorCQkJCQlP QkpFQ1RfVFlQRV9GT1JFSUdOX1RBQkxFOworCQkJCWJyZWFrOworCisJCQljYXNlIFJFTEtJ TkRfTUFUVklFVzoKKwkJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQub2JqZWN0VHlw ZSA9CisJCQkJCU9CSkVDVF9UWVBFX01BVFZJRVc7CisJCQkJYnJlYWs7CisKKwkJCWRlZmF1 bHQ6CisJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPQorCQkJ CQlPQkpFQ1RfVFlQRV9VTktOT1dOOworCQkJCWJyZWFrOworCQl9CisKKwkJLyogR2V0IHRo ZSByZWxhdGlvbiBuYW1lICovCisJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5vYmpl Y3ROYW1lID0KKwkJCXF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2Vf bmFtZSgKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJCQkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CisJCXJlbGF0aW9uX2Nsb3Nl KHJlbCwgTm9Mb2NrKTsKKworCQkvKiBQZXJmb3JtIG9iamVjdCBhdWRpdGluZyBvbmx5IGlm IHRoZSBhdWRpdCByb2xlIGlzIHZhbGlkICovCisJCWlmIChhdWRpdE9pZCAhPSBJbnZhbGlk T2lkKQorCQl7CisJCQlBY2xNb2RlIGF1ZGl0UGVybXMgPSAoQUNMX1NFTEVDVCB8IEFDTF9V UERBVEUgfCBBQ0xfSU5TRVJUKSAmCisJCQkJCQkJCSBydGUtPnJlcXVpcmVkUGVybXM7CisK KwkJCS8qCisJCQkgKiBJZiBhbnkgb2YgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb25zIGZvciB0 aGUgcmVsYXRpb24gYXJlIGdyYW50ZWQKKwkJCSAqIHRvIHRoZSBhdWRpdCByb2xlIHRoZW4g YXVkaXQgdGhlIHJlbGF0aW9uCisJCQkgKi8KKwkJCWlmIChhdWRpdF9vbl9yZWxhdGlvbihy ZWxPaWQsIGF1ZGl0T2lkLCBhdWRpdFBlcm1zKSkKKwkJCXsKKwkJCQlhdWRpdEV2ZW50U3Rh Y2stPmF1ZGl0RXZlbnQuZ3JhbnRlZCA9IHRydWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBF bHNlIGNoZWNrIGlmIHRoZSBhdWRpdCByb2xlIGhhcyBjb2x1bW4tbGV2ZWwgcGVybWlzc2lv bnMgZm9yCisJCQkgKiBzZWxlY3QsIGluc2VydCwgb3IgdXBkYXRlLgorCQkJICovCisJCQll bHNlIGlmIChhdWRpdFBlcm1zICE9IDApCisJCQl7CisJCQkJLyoKKwkJCQkgKiBDaGVjayB0 aGUgc2VsZWN0IGNvbHVtbnMgdG8gc2VlIGlmIHRoZSBhdWRpdCByb2xlIGhhcworCQkJCSAq IHByaXZlbGVnZXMgb24gYW55IG9mIHRoZW0uCisJCQkJICovCisJCQkJaWYgKGF1ZGl0UGVy bXMgJiBBQ0xfU0VMRUNUKQorCQkJCXsKKwkJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2 ZW50LmdyYW50ZWQgPQorCQkJCQkJYXVkaXRfb25fYW55X2F0dHJpYnV0ZShyZWxPaWQsIGF1 ZGl0T2lkLAorCQkJCQkJCQkJCQkgICBydGUtPnNlbGVjdGVkQ29scywKKwkJCQkJCQkJCQkJ ICAgQUNMX1NFTEVDVCk7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBDaGVjayB0aGUgbW9k aWZpZWQgY29sdW1ucyB0byBzZWUgaWYgdGhlIGF1ZGl0IHJvbGUgaGFzCisJCQkJICogcHJp dmlsZWdlcyBvbiBhbnkgb2YgdGhlbS4KKwkJCQkgKi8KKwkJCQlpZiAoIWF1ZGl0RXZlbnRT dGFjay0+YXVkaXRFdmVudC5ncmFudGVkKQorCQkJCXsKKwkJCQkJYXVkaXRQZXJtcyAmPSAo QUNMX0lOU0VSVCB8IEFDTF9VUERBVEUpOworCisJCQkJCWlmIChhdWRpdFBlcm1zKQorCQkJ CQl7CisJCQkJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQuZ3JhbnRlZCA9CisJCQkJ CQkJYXVkaXRfb25fYW55X2F0dHJpYnV0ZShyZWxPaWQsIGF1ZGl0T2lkLAorCQkJCQkJCQkJ CQkJICAgcnRlLT5tb2RpZmllZENvbHMsCisJCQkJCQkJCQkJCQkgICBhdWRpdFBlcm1zKTsK KwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCisJCS8qIERvIHJlbGF0aW9uIGxldmVsIGxv Z2dpbmcgaWYgYSBncmFudCB3YXMgZm91bmQgKi8KKwkJaWYgKGF1ZGl0RXZlbnRTdGFjay0+ YXVkaXRFdmVudC5ncmFudGVkKQorCQl7CisJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZl bnQubG9nZ2VkID0gZmFsc2U7CisJCQlsb2dfYXVkaXRfZXZlbnQoYXVkaXRFdmVudFN0YWNr KTsKKwkJfQorCisJCS8qIERvIHJlbGF0aW9uIGxldmVsIGxvZ2dpbmcgaWYgYXVkaXRMb2dS ZWxhdGlvbiBpcyBzZXQgKi8KKwkJaWYgKGF1ZGl0TG9nUmVsYXRpb24pCisJCXsKKwkJCWF1 ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5sb2dnZWQgPSBmYWxzZTsKKwkJCWF1ZGl0RXZl bnRTdGFjay0+YXVkaXRFdmVudC5ncmFudGVkID0gZmFsc2U7CisJCQlsb2dfYXVkaXRfZXZl bnQoYXVkaXRFdmVudFN0YWNrKTsKKwkJfQorCisJCXBmcmVlKGF1ZGl0RXZlbnRTdGFjay0+ YXVkaXRFdmVudC5vYmplY3ROYW1lKTsKKwl9CisKKwkvKgorCSAqIElmIG5vIHRhYmxlcyB3 ZXJlIGZvdW5kIHRoYXQgbWVhbnMgdGhhdCBSYW5nZVRibHMgd2FzIGVtcHR5IG9yIGFsbAor CSAqIHJlbGF0aW9ucyB3ZXJlIGluIHRoZSBzeXN0ZW0gc2NoZW1hLiAgSW4gdGhhdCBjYXNl IHN0aWxsIGxvZyBhCisJICogc2Vzc2lvbiByZWNvcmQuCisJICovCisJaWYgKCFmb3VuZCkK Kwl7CisJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5ncmFudGVkID0gZmFsc2U7CisJ CWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5sb2dnZWQgPSBmYWxzZTsKKworCQlsb2df YXVkaXRfZXZlbnQoYXVkaXRFdmVudFN0YWNrKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUg QXVkaXRFdmVudHMgZm9yIGNlcnRhaW4ga2luZHMgb2YgQ1JFQVRFLCBBTFRFUiwgYW5kIERF TEVURSBzdGF0ZW1lbnRzCisgKiB3aGVyZSB0aGUgb2JqZWN0IGNhbiBiZSBsb2dnZWQuCisg Ki8KK3N0YXRpYyB2b2lkCitsb2dfY3JlYXRlX2FsdGVyX2Ryb3AoT2lkIGNsYXNzSWQsCisJ CQkJCSAgT2lkIG9iamVjdElkKQoreworCS8qIE9ubHkgcGVyZm9ybSB3aGVuIGNsYXNzIGlz IHJlbGF0aW9uICovCisJaWYgKGNsYXNzSWQgPT0gUmVsYXRpb25SZWxhdGlvbklkKQorCXsK KwkJUmVsYXRpb24gcmVsOworCQlGb3JtX3BnX2NsYXNzIGNsYXNzOworCisJCS8qIE9wZW4g dGhlIHJlbGF0aW9uICovCisJCXJlbCA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIE5vTG9j ayk7CisKKwkJLyogRmlsdGVyIG91dCBhbnkgc3lzdGVtIHJlbGF0aW9ucyAqLworCQlpZiAo SXNUb2FzdE5hbWVzcGFjZShSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKSkKKwkJeworCQkJ cmVsYXRpb25fY2xvc2UocmVsLCBOb0xvY2spOworCQkJcmV0dXJuOworCQl9CisKKwkJLyog R2V0IHJlbCBpbmZvcm1hdGlvbiBhbmQgY2xvc2UgaXQgKi8KKwkJY2xhc3MgPSBSZWxhdGlv bkdldEZvcm0ocmVsKTsKKwkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdE5h bWUgPQorCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9uYW1l KAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSksCisJCQkJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKwkJcmVsYXRpb25fY2xvc2UocmVs LCBOb0xvY2spOworCisJCS8qIFNldCBvYmplY3QgdHlwZSBiYXNlZCBvbiByZWxraW5kICov CisJCXN3aXRjaCAoY2xhc3MtPnJlbGtpbmQpCisJCXsKKwkJCWNhc2UgUkVMS0lORF9SRUxB VElPTjoKKwkJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQub2JqZWN0VHlwZSA9CisJ CQkJCU9CSkVDVF9UWVBFX1RBQkxFOworCQkJCWJyZWFrOworCisJCQljYXNlIFJFTEtJTkRf SU5ERVg6CisJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPQor CQkJCQlPQkpFQ1RfVFlQRV9JTkRFWDsKKwkJCQlicmVhazsKKworCQkJY2FzZSBSRUxLSU5E X1NFUVVFTkNFOgorCQkJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5vYmplY3RUeXBl ID0KKwkJCQkJT0JKRUNUX1RZUEVfU0VRVUVOQ0U7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug UkVMS0lORF9WSUVXOgorCQkJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVudC5vYmplY3RU eXBlID0KKwkJCQkJT0JKRUNUX1RZUEVfVklFVzsKKwkJCQlicmVhazsKKworCQkJY2FzZSBS RUxLSU5EX0NPTVBPU0lURV9UWVBFOgorCQkJCWF1ZGl0RXZlbnRTdGFjay0+YXVkaXRFdmVu dC5vYmplY3RUeXBlID0KKwkJCQkJT0JKRUNUX1RZUEVfQ09NUE9TSVRFX1RZUEU7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgUkVMS0lORF9GT1JFSUdOX1RBQkxFOgorCQkJCWF1ZGl0RXZl bnRTdGFjay0+YXVkaXRFdmVudC5vYmplY3RUeXBlID0KKwkJCQkJT0JKRUNUX1RZUEVfRk9S RUlHTl9UQUJMRTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBSRUxLSU5EX01BVFZJRVc6CisJ CQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPQorCQkJCQlPQkpF Q1RfVFlQRV9NQVRWSUVXOworCQkJCWJyZWFrOworCisJCQkvKgorCQkJICogQW55IG90aGVy IGNhc2VzIHdpbGwgYmUgaGFuZGxlZCBieSBsb2dfdXRpbGl0eV9jb21tYW5kKCkuCisJCQkg Ki8KKwkJCWRlZmF1bHQ6CisJCQkJcmV0dXJuOworCQkJCWJyZWFrOworCQl9CisJfQorfQor CisvKgorICogQ3JlYXRlIEF1ZGl0RXZlbnRzIGZvciBub24tY2F0YWxvZyBmdW5jdGlvbiBl eGVjdXRpb24sIGFzIGRldGVjdGVkIGJ5CisgKiBsb2dfb2JqZWN0X2FjY2VzcygpIGJlbG93 LgorICovCitzdGF0aWMgdm9pZAorbG9nX2Z1bmN0aW9uX2V4ZWN1dGUoT2lkIG9iamVjdElk KQoreworCUhlYXBUdXBsZSBwcm9jdHVwOworCUZvcm1fcGdfcHJvYyBwcm9jOworCUF1ZGl0 RXZlbnRTdGFja0l0ZW0gKnN0YWNrSXRlbTsKKworCS8qIEdldCBpbmZvIGFib3V0IHRoZSBm dW5jdGlvbi4gKi8KKwlwcm9jdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsIE9iamVj dElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKworCWlmICghcHJvY3R1cCkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1Iiwgb2JqZWN0SWQpOwor CXByb2MgPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY3R1cCk7CisKKwkvKgorCSAq IExvZ2dpbmcgZXhlY3V0aW9uIG9mIGFsbCBwZ19jYXRhbG9nIGZ1bmN0aW9ucyB3b3VsZCBt YWtlIHRoZSBsb2cKKwkgKiB1bnVzYWJseSBub2lzeS4KKwkgKi8KKwlpZiAoSXNTeXN0ZW1O YW1lc3BhY2UocHJvYy0+cHJvbmFtZXNwYWNlKSkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZShw cm9jdHVwKTsKKwkJcmV0dXJuOworCX0KKworCS8qIFB1c2ggYXVkaXQgZXZlbnQgb250byB0 aGUgc3RhY2sgKi8KKwlzdGFja0l0ZW0gPSBzdGFja19wdXNoKCk7CisKKwkvKiBHZW5lcmF0 ZSB0aGUgZnVsbHktcXVhbGlmaWVkIGZ1bmN0aW9uIG5hbWUuICovCisJc3RhY2tJdGVtLT5h dWRpdEV2ZW50Lm9iamVjdE5hbWUgPQorCQlxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihn ZXRfbmFtZXNwYWNlX25hbWUocHJvYy0+cHJvbmFtZXNwYWNlKSwKKwkJCQkJCQkJICAgTmFt ZVN0cihwcm9jLT5wcm9uYW1lKSk7CisJUmVsZWFzZVN5c0NhY2hlKHByb2N0dXApOworCisJ LyogTG9nIHRoZSBmdW5jdGlvbiBjYWxsICovCisJc3RhY2tJdGVtLT5hdWRpdEV2ZW50Lmxv Z1N0bXRMZXZlbCA9IExPR1NUTVRfQUxMOworCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5jb21t YW5kVGFnID0gVF9Eb1N0bXQ7CisJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1hbmQgPSBD T01NQU5EX0VYRUNVVEU7CisJc3RhY2tJdGVtLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPSBP QkpFQ1RfVFlQRV9GVU5DVElPTjsKKwlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZFRl eHQgPSBzdGFja0l0ZW0tPm5leHQtPmF1ZGl0RXZlbnQuY29tbWFuZFRleHQ7CisKKwlsb2df YXVkaXRfZXZlbnQoc3RhY2tJdGVtKTsKKworCS8qIFBvcCBhdWRpdCBldmVudCBmcm9tIHRo ZSBzdGFjayAqLworCXN0YWNrX3BvcChzdGFja0l0ZW0tPnN0YWNrSWQpOworfQorCisvKgor ICogTG9nIG9iamVjdCBhY2Nlc3NlcyAod2hpY2ggaXMgbW9yZSBhYm91dCBEREwgdGhhbiBE TUwsIGV2ZW4gdGhvdWdoIGl0CisgKiBzb3VuZHMgbGlrZSB0aGUgbGF0dGVyKS4KKyAqLwor c3RhdGljIHZvaWQKK2xvZ19vYmplY3RfYWNjZXNzKE9iamVjdEFjY2Vzc1R5cGUgYWNjZXNz LAorCQkJCSAgT2lkIGNsYXNzSWQsCisJCQkJICBPaWQgb2JqZWN0SWQsCisJCQkJICBpbnQg c3ViSWQsCisJCQkJICB2b2lkICphcmcpCit7CisJc3dpdGNoIChhY2Nlc3MpCisJeworCQkv KiBMb2cgZXhlY3V0ZSAqLworCQljYXNlIE9BVF9GVU5DVElPTl9FWEVDVVRFOgorCQkJaWYg KGF1ZGl0TG9nQml0bWFwICYgTE9HX0ZVTkNUSU9OKQorCQkJCWxvZ19mdW5jdGlvbl9leGVj dXRlKG9iamVjdElkKTsKKwkJCWJyZWFrOworCisJCS8qIExvZyBjcmVhdGUgKi8KKwkJY2Fz ZSBPQVRfUE9TVF9DUkVBVEU6CisJCQlpZiAoYXVkaXRMb2dCaXRtYXAgJiBMT0dfRERMKQor CQkJeworCQkJCU9iamVjdEFjY2Vzc1Bvc3RDcmVhdGUgKnBjID0gYXJnOworCisJCQkJaWYg KHBjLT5pc19pbnRlcm5hbCkKKwkJCQkJcmV0dXJuOworCisJCQkJbG9nX2NyZWF0ZV9hbHRl cl9kcm9wKGNsYXNzSWQsIG9iamVjdElkKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCS8qIExv ZyBhbHRlciAqLworCQljYXNlIE9BVF9QT1NUX0FMVEVSOgorCQkJaWYgKGF1ZGl0TG9nQml0 bWFwICYgTE9HX0RETCkKKwkJCXsKKwkJCQlPYmplY3RBY2Nlc3NQb3N0QWx0ZXIgKnBhID0g YXJnOworCisJCQkJaWYgKHBhLT5pc19pbnRlcm5hbCkKKwkJCQkJcmV0dXJuOworCisJCQkJ bG9nX2NyZWF0ZV9hbHRlcl9kcm9wKGNsYXNzSWQsIG9iamVjdElkKTsKKwkJCX0KKwkJCWJy ZWFrOworCisJCS8qIExvZyBkcm9wICovCisJCWNhc2UgT0FUX0RST1A6CisJCQlpZiAoYXVk aXRMb2dCaXRtYXAgJiBMT0dfRERMKQorCQkJeworCQkJCU9iamVjdEFjY2Vzc0Ryb3AgKmRy b3AgPSBhcmc7CisKKwkJCQlpZiAoZHJvcC0+ZHJvcGZsYWdzICYgUEVSRk9STV9ERUxFVElP Tl9JTlRFUk5BTCkKKwkJCQkJcmV0dXJuOworCisJCQkJbG9nX2NyZWF0ZV9hbHRlcl9kcm9w KGNsYXNzSWQsIG9iamVjdElkKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCS8qIEFsbCBvdGhl cnMgcHJvY2Vzc2VkIGJ5IGxvZ191dGlsaXR5X2NvbW1hbmQoKSAqLworCQlkZWZhdWx0Ogor CQkJYnJlYWs7CisJfQorfQorCisvKgorICogSG9vayBmdW5jdGlvbnMKKyAqLworc3RhdGlj IEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rX3R5cGUgbmV4dF9FeGVjdXRvckNoZWNrUGVybXNf aG9vayA9IE5VTEw7CitzdGF0aWMgUHJvY2Vzc1V0aWxpdHlfaG9va190eXBlIG5leHRfUHJv Y2Vzc1V0aWxpdHlfaG9vayA9IE5VTEw7CitzdGF0aWMgb2JqZWN0X2FjY2Vzc19ob29rX3R5 cGUgbmV4dF9vYmplY3RfYWNjZXNzX2hvb2sgPSBOVUxMOworc3RhdGljIEV4ZWN1dG9yU3Rh cnRfaG9va190eXBlIG5leHRfRXhlY3V0b3JTdGFydF9ob29rID0gTlVMTDsKK3N0YXRpYyBF eGVjdXRvckVuZF9ob29rX3R5cGUgbmV4dF9FeGVjdXRvckVuZF9ob29rID0gTlVMTDsKKwor LyoKKyAqIEhvb2sgRXhlY3V0b3JTdGFydCB0byBnZXQgdGhlIHF1ZXJ5IHRleHQgYW5kIGJh c2ljIGNvbW1hbmQgdHlwZSBmb3IgcXVlcmllcworICogdGhhdCBkbyBub3QgY29udGFpbiBh IHRhYmxlIHNvIGNhbid0IGJlIGlkZW5pdGlmaWVkIGFjY3VyYXRlbHkgaW4KKyAqIEV4ZWN1 dG9yQ2hlY2tQZXJtcy4KKyAqLworc3RhdGljIHZvaWQKK3BnX2F1ZGl0X0V4ZWN1dG9yU3Rh cnRfaG9vayhRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwlBdWRpdEV2 ZW50U3RhY2tJdGVtICpzdGFja0l0ZW0gPSBOVUxMOworCisJaWYgKCFpbnRlcm5hbFN0YXRl bWVudCkKKwl7CisJCS8qIEFsbG9jYXRlIHRoZSBhdWRpdCBldmVudCAqLworCQlzdGFja0l0 ZW0gPSBzdGFja19wdXNoKCk7CisKKwkJLyogSW5pdGlhbGl6ZSBjb21tYW5kICovCisJCXN3 aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCisJCXsKKwkJCWNhc2UgQ01EX1NFTEVDVDoK KwkJCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQubG9nU3RtdExldmVsID0gTE9HU1RNVF9BTEw7 CisJCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1hbmRUYWcgPSBUX1NlbGVjdFN0bXQ7 CisJCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1hbmQgPSBDT01NQU5EX1NFTEVDVDsK KwkJCQlicmVhazsKKworCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCXN0YWNrSXRlbS0+YXVk aXRFdmVudC5sb2dTdG10TGV2ZWwgPSBMT0dTVE1UX01PRDsKKwkJCQlzdGFja0l0ZW0tPmF1 ZGl0RXZlbnQuY29tbWFuZFRhZyA9IFRfSW5zZXJ0U3RtdDsKKwkJCQlzdGFja0l0ZW0tPmF1 ZGl0RXZlbnQuY29tbWFuZCA9IENPTU1BTkRfSU5TRVJUOworCQkJCWJyZWFrOworCisJCQlj YXNlIENNRF9VUERBVEU6CisJCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmxvZ1N0bXRMZXZl bCA9IExPR1NUTVRfTU9EOworCQkJCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5jb21tYW5kVGFn ID0gVF9VcGRhdGVTdG10OworCQkJCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5jb21tYW5kID0g Q09NTUFORF9VUERBVEU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQ01EX0RFTEVURToKKwkJ CQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQubG9nU3RtdExldmVsID0gTE9HU1RNVF9NT0Q7CisJ CQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1hbmRUYWcgPSBUX0RlbGV0ZVN0bXQ7CisJ CQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1hbmQgPSBDT01NQU5EX0RFTEVURTsKKwkJ CQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQubG9n U3RtdExldmVsID0gTE9HU1RNVF9BTEw7CisJCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNv bW1hbmRUYWcgPSBUX0ludmFsaWQ7CisJCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1h bmQgPSBDT01NQU5EX1VOS05PV047CisJCQkJYnJlYWs7CisJCX0KKworCQkvKiBJbml0aWFs aXplIHRoZSBhdWRpdCBldmVudCAqLworCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQub2JqZWN0 TmFtZSA9ICIiOworCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQub2JqZWN0VHlwZSA9ICIiOwor CQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZFRleHQgPSBxdWVyeURlc2MtPnNvdXJj ZVRleHQ7CisJCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5wYXJhbUxpc3QgPSBxdWVyeURlc2Mt PnBhcmFtczsKKwl9CisKKwkvKiBDYWxsIHRoZSBwcmV2aW91cyBob29rIG9yIHN0YW5kYXJk IGZ1bmN0aW9uICovCisJaWYgKG5leHRfRXhlY3V0b3JTdGFydF9ob29rKQorCQluZXh0X0V4 ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlzdGFuZGFy ZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKK30KKworLyoKKyAqIEhvb2sg RXhlY3V0b3JDaGVja1Blcm1zIHRvIGRvIHNlc3Npb24gYW5kIG9iamVjdCBhdWRpdGluZyBm b3IgRE1MLgorICovCitzdGF0aWMgYm9vbAorcGdfYXVkaXRfRXhlY3V0b3JDaGVja1Blcm1z X2hvb2soTGlzdCAqcmFuZ2VUYWJscywgYm9vbCBhYm9ydCkKK3sKKwlPaWQgYXVkaXRPaWQ7 CisKKwkvKiBHZXQgdGhlIGF1ZGl0IG9pZCBpZiB0aGUgcm9sZSBleGlzdHMuICovCisJYXVk aXRPaWQgPSBnZXRfcm9sZV9vaWQoYXVkaXRSb2xlLCB0cnVlKTsKKworCS8qIExvZyBETUwg aWYgdGhlIGF1ZGl0IHJvbGUgaXMgdmFsaWQgb3Igc2Vzc2lvbiBsb2dnaW5nIGlzIGVuYWJs ZWQuICovCisJaWYgKChhdWRpdE9pZCAhPSBJbnZhbGlkT2lkIHx8IGF1ZGl0TG9nQml0bWFw ICE9IDApICYmCisJCSFJc0Fib3J0ZWRUcmFuc2FjdGlvbkJsb2NrU3RhdGUoKSkKKwkJbG9n X3NlbGVjdF9kbWwoYXVkaXRPaWQsIHJhbmdlVGFibHMpOworCisJLyogQ2FsbCB0aGUgbmV4 dCBob29rIGZ1bmN0aW9uLiAqLworCWlmIChuZXh0X0V4ZWN1dG9yQ2hlY2tQZXJtc19ob29r ICYmCisJCSEoKm5leHRfRXhlY3V0b3JDaGVja1Blcm1zX2hvb2spIChyYW5nZVRhYmxzLCBh Ym9ydCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICog SG9vayBFeGVjdXRvckVuZCB0byBwb3Agc3RhdGVtZW50IGF1ZGl0IGV2ZW50IG9mZiB0aGUg c3RhY2suCisgKi8KK3N0YXRpYyB2b2lkCitwZ19hdWRpdF9FeGVjdXRvckVuZF9ob29rKFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjKQoreworCS8qIENhbGwgdGhlIG5leHQgaG9vayBvciBzdGFu ZGFyZCBmdW5jdGlvbiAqLworCWlmIChuZXh0X0V4ZWN1dG9yRW5kX2hvb2spCisJCW5leHRf RXhlY3V0b3JFbmRfaG9vayhxdWVyeURlc2MpOworCWVsc2UKKwkJc3RhbmRhcmRfRXhlY3V0 b3JFbmQocXVlcnlEZXNjKTsKKworCS8qIFBvcCB0aGUgYXVkaXQgZXZlbnQgb2ZmIHRoZSBz dGFjayAqLworCWlmICghaW50ZXJuYWxTdGF0ZW1lbnQpCisJeworCQlzdGFja19wb3AoYXVk aXRFdmVudFN0YWNrLT5zdGFja0lkKTsKKwl9Cit9CisKKy8qCisgKiBIb29rIFByb2Nlc3NV dGlsaXR5IHRvIGRvIHNlc3Npb24gYXVkaXRpbmcgZm9yIERETCBhbmQgdXRpbGl0eSBjb21t YW5kcy4KKyAqLworc3RhdGljIHZvaWQKK3BnX2F1ZGl0X1Byb2Nlc3NVdGlsaXR5X2hvb2so Tm9kZSAqcGFyc2V0cmVlLAorCQkJCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKKwkJ CQkJCQkgUHJvY2Vzc1V0aWxpdHlDb250ZXh0IGNvbnRleHQsCisJCQkJCQkJIFBhcmFtTGlz dEluZm8gcGFyYW1zLAorCQkJCQkJCSBEZXN0UmVjZWl2ZXIgKmRlc3QsCisJCQkJCQkJIGNo YXIgKmNvbXBsZXRpb25UYWcpCit7CisJQXVkaXRFdmVudFN0YWNrSXRlbSAqc3RhY2tJdGVt ID0gTlVMTDsKKwlpbnQ2NCBzdGFja0lkOworCisJLyogQWxsb2NhdGUgdGhlIGF1ZGl0IGV2 ZW50ICovCisJaWYgKCFJc0Fib3J0ZWRUcmFuc2FjdGlvbkJsb2NrU3RhdGUoKSkKKwl7CisJ CS8qIFByb2Nlc3MgdG9wIGxldmVsIHV0aWxpdHkgc3RhdGVtZW50ICovCisJCWlmIChjb250 ZXh0ID09IFBST0NFU1NfVVRJTElUWV9UT1BMRVZFTCkKKwkJeworCQkJaWYgKGF1ZGl0RXZl bnRTdGFjayAhPSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJwZ19hdWRpdCBzdGFjayBpcyBu b3QgZW1wdHkiKTsKKworCQkJLyogU2V0IHBhcmFtcyAqLworCQkJc3RhY2tJdGVtID0gc3Rh Y2tfcHVzaCgpOworCQkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50LnBhcmFtTGlzdCA9IHBhcmFt czsKKwkJfQorCQllbHNlCisJCQlzdGFja0l0ZW0gPSBzdGFja19wdXNoKCk7CisKKwkJc3Rh Y2tJZCA9IHN0YWNrSXRlbS0+c3RhY2tJZDsKKwkJc3RhY2tJdGVtLT5hdWRpdEV2ZW50Lmxv Z1N0bXRMZXZlbCA9IEdldENvbW1hbmRMb2dMZXZlbChwYXJzZXRyZWUpOworCQlzdGFja0l0 ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZFRhZyA9IG5vZGVUYWcocGFyc2V0cmVlKTsKKwkJc3Rh Y2tJdGVtLT5hdWRpdEV2ZW50LmNvbW1hbmQgPSBDcmVhdGVDb21tYW5kVGFnKHBhcnNldHJl ZSk7CisJCXN0YWNrSXRlbS0+YXVkaXRFdmVudC5vYmplY3ROYW1lID0gIiI7CisJCXN0YWNr SXRlbS0+YXVkaXRFdmVudC5vYmplY3RUeXBlID0gIiI7CisJCXN0YWNrSXRlbS0+YXVkaXRF dmVudC5jb21tYW5kVGV4dCA9IHF1ZXJ5U3RyaW5nOworCisJCS8qCisJCSAqIElmIHRoaXMg aXMgYSBETyBibG9jayBsb2cgaXQgYmVmb3JlIGNhbGxpbmcgdGhlIG5leHQgUHJvY2Vzc1V0 aWxpdHkKKwkJICogaG9vay4KKwkJICovCisJCWlmIChhdWRpdExvZ0JpdG1hcCAhPSAwICYm CisJCQlzdGFja0l0ZW0tPmF1ZGl0RXZlbnQuY29tbWFuZFRhZyA9PSBUX0RvU3RtdCAmJgor CQkJIUlzQWJvcnRlZFRyYW5zYWN0aW9uQmxvY2tTdGF0ZSgpKQorCQl7CisJCQlsb2dfYXVk aXRfZXZlbnQoc3RhY2tJdGVtKTsKKwkJfQorCX0KKworCS8qIENhbGwgdGhlIHN0YW5kYXJk IHByb2Nlc3MgdXRpbGl0eSBjaGFpbi4gKi8KKwlpZiAobmV4dF9Qcm9jZXNzVXRpbGl0eV9o b29rKQorCQkoKm5leHRfUHJvY2Vzc1V0aWxpdHlfaG9vaykgKHBhcnNldHJlZSwgcXVlcnlT dHJpbmcsIGNvbnRleHQsCisJCQkJCQkJCQkgcGFyYW1zLCBkZXN0LCBjb21wbGV0aW9uVGFn KTsKKwllbHNlCisJCXN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KHBhcnNldHJlZSwgcXVlcnlT dHJpbmcsIGNvbnRleHQsCisJCQkJCQkJCXBhcmFtcywgZGVzdCwgY29tcGxldGlvblRhZyk7 CisKKwkvKiBQcm9jZXNzIHRoZSBhdWRpdCBldmVudCBpZiB0aGVyZSBpcyBvbmUuICovCisJ aWYgKHN0YWNrSXRlbSAhPSBOVUxMKQorCXsKKwkJLyogTG9nIHRoZSB1dGlsaXR5IGNvbW1h bmQgaWYgbG9nZ2luZyBpcyBvbiwgdGhlIGNvbW1hbmQgaGFzIG5vdCBhbHJlYWR5CisJCSAq IGJlZW4gbG9nZ2VkIGJ5IGFub3RoZXIgaG9vaywgYW5kIHRoZSB0cmFuc2FjdGlvbiBpcyBu b3QgYWJvcnRlZC4gKi8KKwkJaWYgKGF1ZGl0TG9nQml0bWFwICE9IDAgJiYgIXN0YWNrSXRl bS0+YXVkaXRFdmVudC5sb2dnZWQgJiYKKwkJCSFJc0Fib3J0ZWRUcmFuc2FjdGlvbkJsb2Nr U3RhdGUoKSkKKwkJCWxvZ19hdWRpdF9ldmVudChzdGFja0l0ZW0pOworCisJCXN0YWNrX3Bv cChzdGFja0lkKTsKKwl9Cit9CisKKy8qCisgKiBIb29rIG9iamVjdF9hY2Nlc3NfaG9vayB0 byBwcm92aWRlIGZ1bGx5LXF1YWxpZmllZCBvYmplY3QgbmFtZXMgZm9yIGV4ZWN1dGUsCisg KiBjcmVhdGUsIGRyb3AsIGFuZCBhbHRlciBjb21tYW5kcy4gIE1vc3Qgb2YgdGhlIGF1ZGl0 IGluZm9ybWF0aW9uIGlzIGZpbGxlZCBpbgorICogYnkgbG9nX3V0aWxpdHlfY29tbWFuZCgp LgorICovCitzdGF0aWMgdm9pZAorcGdfYXVkaXRfb2JqZWN0X2FjY2Vzc19ob29rKE9iamVj dEFjY2Vzc1R5cGUgYWNjZXNzLAorCQkJCQkJCU9pZCBjbGFzc0lkLAorCQkJCQkJCU9pZCBv YmplY3RJZCwKKwkJCQkJCQlpbnQgc3ViSWQsCisJCQkJCQkJdm9pZCAqYXJnKQoreworCWlm IChhdWRpdExvZ0JpdG1hcCAhPSAwICYmICFJc0Fib3J0ZWRUcmFuc2FjdGlvbkJsb2NrU3Rh dGUoKSAmJgorCQlhdWRpdExvZ0JpdG1hcCAmIChMT0dfRERMIHwgTE9HX0ZVTkNUSU9OKSAm JiBhdWRpdEV2ZW50U3RhY2spCisJCWxvZ19vYmplY3RfYWNjZXNzKGFjY2VzcywgY2xhc3NJ ZCwgb2JqZWN0SWQsIHN1YklkLCBhcmcpOworCisJaWYgKG5leHRfb2JqZWN0X2FjY2Vzc19o b29rKQorCQkoKm5leHRfb2JqZWN0X2FjY2Vzc19ob29rKSAoYWNjZXNzLCBjbGFzc0lkLCBv YmplY3RJZCwgc3ViSWQsIGFyZyk7Cit9CisKKy8qCisgKiBFdmVudCB0cmlnZ2VyIGZ1bmN0 aW9ucworICovCisKKy8qCisgKiBTdXBwbHkgYWRkaXRpb25hbCBkYXRhIGZvciAobm9uIGRy b3ApIHN0YXRlbWVudHMgdGhhdCBoYXZlIGV2ZW50IHRyaWdnZXIKKyAqIHN1cHBvcnQgYW5k IGNhbiBiZSBkZXBhcnNlZC4KKyAqLworRGF0dW0KK3BnX2F1ZGl0X2RkbF9jb21tYW5kX2Vu ZChQR19GVU5DVElPTl9BUkdTKQoreworI2lmZGVmIERFUEFSU0UKKwkvKiBDb250aW51ZSBv bmx5IGlmIHNlc3Npb24gRERMIGxvZ2dpbmcgaXMgZW5hYmxlZCAqLworCWlmIChhdWRpdExv Z0JpdG1hcCAmIExPR19EREwpCisJeworCQlFdmVudFRyaWdnZXJEYXRhICpldmVudERhdGE7 CisJCWludAkJCQkgIHJlc3VsdCwgcm93OworCQlUdXBsZURlc2MJCSAgc3BpVHVwRGVzYzsK KwkJY29uc3QgY2hhcgkJICpxdWVyeTsKKwkJTWVtb3J5Q29udGV4dCAJICBjb250ZXh0UXVl cnk7CisJCU1lbW9yeUNvbnRleHQgCSAgY29udGV4dE9sZDsKKworCQkvKiBCZSBzdXJlIHRo ZSBtb2R1bGUgd2FzIGxvYWRlZCAqLworCQlpZiAoIWF1ZGl0RXZlbnRTdGFjaykKKwkJewor CQkJZWxvZyhFUlJPUiwgInBnX2F1ZGl0IG5vdCBsb2FkZWQgYmVmb3JlIGNhbGwgdG8gcGdf YXVkaXRfZGRsX2NvbW1hbmRfZW5kKCkiKTsKKwkJfQorCisJCS8qIFRoaXMgaXMgYW4gaW50 ZXJuYWwgc3RhdGVtZW50IC0gZG8gbm90IGxvZyBpdCAqLworCQlpbnRlcm5hbFN0YXRlbWVu dCA9IHRydWU7CisKKwkJLyogTWFrZSBzdXJlIHRoZSBmdWN0aW9uIHdhcyBmaXJlZCBhcyBh IHRyaWdnZXIgKi8KKwkJaWYgKCFDQUxMRURfQVNfRVZFTlRfVFJJR0dFUihmY2luZm8pKQor CQkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsK KworCQkvKiBTd2l0Y2ggbWVtb3J5IGNvbnRleHQgKi8KKwkJY29udGV4dFF1ZXJ5ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKAorCQkJCQkJQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJ CQkicGdfYXVkaXRfZnVuY19kZGxfY29tbWFuZF9lbmQgdGVtcG9yYXJ5IGNvbnRleHQiLAor CQkJCQkJQUxMT0NTRVRfREVGQVVMVF9NSU5TSVpFLAorCQkJCQkJQUxMT0NTRVRfREVGQVVM VF9JTklUU0laRSwKKwkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfTUFYU0laRSk7CisJCWNvbnRl eHRPbGQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY29udGV4dFF1ZXJ5KTsKKworCQkvKiBH ZXQgaW5mb3JtYXRpb24gYWJvdXQgdHJpZ2dlcmVkIGV2ZW50cyAqLworCQlldmVudERhdGEg PSAoRXZlbnRUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisKKwkJYXVkaXRFdmVu dFN0YWNrLT5hdWRpdEV2ZW50LmxvZ1N0bXRMZXZlbCA9CisJCQlHZXRDb21tYW5kTG9nTGV2 ZWwoZXZlbnREYXRhLT5wYXJzZXRyZWUpOworCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZl bnQuY29tbWFuZFRhZyA9CisJCQlub2RlVGFnKGV2ZW50RGF0YS0+cGFyc2V0cmVlKTsKKwkJ YXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50LmNvbW1hbmQgPQorCQkJQ3JlYXRlQ29tbWFu ZFRhZyhldmVudERhdGEtPnBhcnNldHJlZSk7CisKKwkJLyogUmV0dXJuIG9iamVjdHMgYWZm ZWN0ZWQgYnkgdGhlIChub24gZHJvcCkgRERMIHN0YXRlbWVudCAqLworCQlxdWVyeSA9ICJT RUxFQ1QgY2xhc3NpZCwgb2JqaWQsIG9ianN1YmlkLCBVUFBFUihvYmplY3RfdHlwZSksIHNj aGVtYSxcbiIKKwkJCQkiICAgICAgIGlkZW50aXR5LCBjb21tYW5kXG4iCisJCQkJIiAgRlJP TSBwZ19ldmVudF90cmlnZ2VyX2RkbF9jb21tYW5kcygpIjsKKworCQkvKiBBdHRlbXB0IHRv IGNvbm5lY3QgKi8KKwkJcmVzdWx0ID0gU1BJX2Nvbm5lY3QoKTsKKworCQlpZiAocmVzdWx0 IDwgMCkKKwkJCWVsb2coRVJST1IsICJwZ19hdWRpdF9kZGxfY29tbWFuZF9lbmQ6IFNQSV9j b25uZWN0IHJldHVybmVkICVkIiwKKwkJCQkJCXJlc3VsdCk7CisKKwkJLyogRXhlY3V0ZSB0 aGUgcXVlcnkgKi8KKwkJcmVzdWx0ID0gU1BJX2V4ZWN1dGUocXVlcnksIHRydWUsIDApOwor CisJCWlmIChyZXN1bHQgIT0gU1BJX09LX1NFTEVDVCkKKwkJCWVsb2coRVJST1IsICJwZ19h dWRpdF9kZGxfY29tbWFuZF9lbmQ6IFNQSV9leGVjdXRlIHJldHVybmVkICVkIiwKKwkJCQkJ CXJlc3VsdCk7CisKKwkJLyogSXRlcmF0ZSByZXR1cm5lZCByb3dzICovCisJCXNwaVR1cERl c2MgPSBTUElfdHVwdGFibGUtPnR1cGRlc2M7CisKKwkJZm9yIChyb3cgPSAwOyByb3cgPCBT UElfcHJvY2Vzc2VkOyByb3crKykKKwkJeworCQkJSGVhcFR1cGxlICBzcGlUdXBsZTsKKwor CQkJc3BpVHVwbGUgPSBTUElfdHVwdGFibGUtPnZhbHNbcm93XTsKKworCQkJLyogU3VwcGx5 IG9iamVjdCBuYW1lIGFuZCB0eXBlIGZvciBhdWRpdCBldmVudCAqLworCQkJYXVkaXRFdmVu dFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdE5hbWUgPQorCQkJCVNQSV9nZXR2YWx1ZShzcGlU dXBsZSwgc3BpVHVwRGVzYywgNik7CisJCQlhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQu b2JqZWN0VHlwZSA9CisJCQkJU1BJX2dldHZhbHVlKHNwaVR1cGxlLCBzcGlUdXBEZXNjLCA0 KTsKKworCQkJLyogTG9nIHRoZSBhdWRpdCBldmVudCAqLworCQkJbG9nX2F1ZGl0X2V2ZW50 KGF1ZGl0RXZlbnRTdGFjayk7CisJCX0KKworCQkvKiBDb21wbGV0ZSB0aGUgcXVlcnkgKi8K KwkJU1BJX2ZpbmlzaCgpOworCisJCS8qIFN3aXRjaCB0byB0aGUgb2xkIG1lbW9yeSBjb250 ZXh0ICovCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjb250ZXh0T2xkKTsKKwkJTWVtb3J5 Q29udGV4dERlbGV0ZShjb250ZXh0UXVlcnkpOworCisJCS8qIE5vIGxvbmdlciBpbiBhbiBp bnRlcm5hbCBzdGF0ZW1lbnQgKi8KKwkJaW50ZXJuYWxTdGF0ZW1lbnQgPSBmYWxzZTsKKwl9 CisjZW5kaWYKKworCVBHX1JFVFVSTl9OVUxMKCk7Cit9CisKKy8qCisgKiBTdXBwbHkgYWRk aXRpb25hbCBkYXRhIGZvciBkcm9wIHN0YXRlbWVudHMgdGhhdCBoYXZlIGV2ZW50IHRyaWdn ZXIgc3VwcG9ydC4KKyAqLworRGF0dW0KK3BnX2F1ZGl0X3NxbF9kcm9wKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJaWYgKGF1ZGl0TG9nQml0bWFwICYgTE9HX0RETCkKKwl7CisJCWludAkJ CQkgIHJlc3VsdCwgcm93OworCQlUdXBsZURlc2MJCSAgc3BpVHVwRGVzYzsKKwkJY29uc3Qg Y2hhcgkJICpxdWVyeTsKKwkJTWVtb3J5Q29udGV4dCAJICBjb250ZXh0UXVlcnk7CisJCU1l bW9yeUNvbnRleHQgCSAgY29udGV4dE9sZDsKKworCQkvKiBCZSBzdXJlIHRoZSBtb2R1bGUg d2FzIGxvYWRlZCAqLworCQlpZiAoIWF1ZGl0RXZlbnRTdGFjaykKKwkJeworCQkJZWxvZyhF UlJPUiwgInBnX2F1ZGl0IG5vdCBsb2FkZWQgYmVmb3JlIGNhbGwgdG8gcGdfYXVkaXRfc3Fs X2Ryb3AoKSIpOworCQl9CisKKwkJLyogVGhpcyBpcyBhbiBpbnRlcm5hbCBzdGF0ZW1lbnQg LSBkbyBub3QgbG9nIGl0ICovCisJCWludGVybmFsU3RhdGVtZW50ID0gdHJ1ZTsKKworCQkv KiBNYWtlIHN1cmUgdGhlIGZ1Y3Rpb24gd2FzIGZpcmVkIGFzIGEgdHJpZ2dlciAqLworCQlp ZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykpCisJCQllbG9nKEVSUk9SLCAi bm90IGZpcmVkIGJ5IGV2ZW50IHRyaWdnZXIgbWFuYWdlciIpOworCisJCS8qIFN3aXRjaCBt ZW1vcnkgY29udGV4dCAqLworCQljb250ZXh0UXVlcnkgPSBBbGxvY1NldENvbnRleHRDcmVh dGUoCisJCQkJCQlDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCSJwZ19hdWRpdF9mdW5j X2RkbF9jb21tYW5kX2VuZCB0ZW1wb3JhcnkgY29udGV4dCIsCisJCQkJCQlBTExPQ1NFVF9E RUZBVUxUX01JTlNJWkUsCisJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX0lOSVRTSVpFLAorCQkJ CQkJQUxMT0NTRVRfREVGQVVMVF9NQVhTSVpFKTsKKwkJY29udGV4dE9sZCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhjb250ZXh0UXVlcnkpOworCisJCS8qIFJldHVybiBvYmplY3RzIGFm ZmVjdGVkIGJ5IHRoZSBkcm9wIHN0YXRlbWVudCAqLworCQlxdWVyeSA9ICJTRUxFQ1QgY2xh c3NpZCwgb2JqaWQsIG9ianN1YmlkLCBVUFBFUihvYmplY3RfdHlwZSksXG4iCisJCQkJIiAg ICAgICBzY2hlbWFfbmFtZSwgb2JqZWN0X25hbWUsIG9iamVjdF9pZGVudGl0eVxuIgorCQkJ CSIgIEZST00gcGdfZXZlbnRfdHJpZ2dlcl9kcm9wcGVkX29iamVjdHMoKSI7CisKKwkJLyog QXR0ZW1wdCB0byBjb25uZWN0ICovCisJCXJlc3VsdCA9IFNQSV9jb25uZWN0KCk7CisKKwkJ aWYgKHJlc3VsdCA8IDApCisJCQllbG9nKEVSUk9SLCAicGdfYXVkaXRfZGRsX2Ryb3A6IFNQ SV9jb25uZWN0IHJldHVybmVkICVkIiwKKwkJCQkJCXJlc3VsdCk7CisKKwkJLyogRXhlY3V0 ZSB0aGUgcXVlcnkgKi8KKwkJcmVzdWx0ID0gU1BJX2V4ZWN1dGUocXVlcnksIHRydWUsIDAp OworCisJCWlmIChyZXN1bHQgIT0gU1BJX09LX1NFTEVDVCkKKwkJCWVsb2coRVJST1IsICJw Z19hdWRpdF9kZGxfZHJvcDogU1BJX2V4ZWN1dGUgcmV0dXJuZWQgJWQiLAorCQkJCQkJcmVz dWx0KTsKKworCQkvKiBJdGVyYXRlIHJldHVybmVkIHJvd3MgKi8KKwkJc3BpVHVwRGVzYyA9 IFNQSV90dXB0YWJsZS0+dHVwZGVzYzsKKworCQlmb3IgKHJvdyA9IDA7IHJvdyA8IFNQSV9w cm9jZXNzZWQ7IHJvdysrKQorCQl7CisJCQlIZWFwVHVwbGUgIHNwaVR1cGxlOworCQkJY2hh ciAqc2NoZW1hTmFtZTsKKworCQkJc3BpVHVwbGUgPSBTUElfdHVwdGFibGUtPnZhbHNbcm93 XTsKKworCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRpdEV2ZW50Lm9iamVjdFR5cGUgPQorCQkJ CVNQSV9nZXR2YWx1ZShzcGlUdXBsZSwgc3BpVHVwRGVzYywgNCk7CisJCQlzY2hlbWFOYW1l ID0gU1BJX2dldHZhbHVlKHNwaVR1cGxlLCBzcGlUdXBEZXNjLCA1KTsKKworCQkJaWYgKCEo cGdfc3RyY2FzZWNtcChhdWRpdEV2ZW50U3RhY2stPmF1ZGl0RXZlbnQub2JqZWN0VHlwZSwK KwkJCQkJCQkiVFlQRSIpID09IDAgfHwKKwkJCQkgIHBnX3N0cmNhc2VjbXAoc2NoZW1hTmFt ZSwgInBnX3RvYXN0IikgPT0gMCkpCisJCQl7CisJCQkJYXVkaXRFdmVudFN0YWNrLT5hdWRp dEV2ZW50Lm9iamVjdE5hbWUgPQorCQkJCQkJU1BJX2dldHZhbHVlKHNwaVR1cGxlLCBzcGlU dXBEZXNjLCA3KTsKKworCQkJCWxvZ19hdWRpdF9ldmVudChhdWRpdEV2ZW50U3RhY2spOwor CQkJfQorCQl9CisKKwkJLyogQ29tcGxldGUgdGhlIHF1ZXJ5ICovCisJCVNQSV9maW5pc2go KTsKKworCQkvKiBTd2l0Y2ggdG8gdGhlIG9sZCBtZW1vcnkgY29udGV4dCAqLworCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8oY29udGV4dE9sZCk7CisJCU1lbW9yeUNvbnRleHREZWxldGUo Y29udGV4dFF1ZXJ5KTsKKworCQkvKiBObyBsb25nZXIgaW4gYW4gaW50ZXJuYWwgc3RhdGVt ZW50ICovCisJCWludGVybmFsU3RhdGVtZW50ID0gZmFsc2U7CisJfQorCisJUEdfUkVUVVJO X05VTEwoKTsKK30KKworLyoKKyAqIEdVQyBjaGVjayBhbmQgYXNzaWduIGZ1bmN0aW9ucwor ICovCisKKy8qCisgKiBUYWtlIGEgcGdfYXVkaXQubG9nIHZhbHVlIHN1Y2ggYXMgInJlYWQs IHdyaXRlLCBkbWwiLCB2ZXJpZnkgdGhhdCBlYWNoIG9mIHRoZQorICogY29tbWEtc2VwYXJh dGVkIHRva2VucyBjb3JyZXNwb25kcyB0byBhIExvZ0NsYXNzIHZhbHVlLCBhbmQgY29udmVy dCB0aGVtIGludG8KKyAqIGEgYml0bWFwIHRoYXQgbG9nX2F1ZGl0X2V2ZW50IGNhbiBjaGVj ay4KKyAqLworc3RhdGljIGJvb2wKK2NoZWNrX3BnX2F1ZGl0X2xvZyhjaGFyICoqbmV3dmFs LCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCit7CisJTGlzdCAqZmxhZ3M7CisJ Y2hhciAqcmF3dmFsOworCUxpc3RDZWxsICpsdDsKKwl1aW50NjQgKmY7CisKKwkvKiBNYWtl IHN1cmUgbmV3dmFsIGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdG9rZW5zLiAqLwor CXJhd3ZhbCA9IHBzdHJkdXAoKm5ld3ZhbCk7CisJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJp bmcocmF3dmFsLCAnLCcsICZmbGFncykpCisJeworCQlHVUNfY2hlY2tfZXJyZGV0YWlsKCJM aXN0IHN5bnRheCBpcyBpbnZhbGlkIik7CisJCWxpc3RfZnJlZShmbGFncyk7CisJCXBmcmVl KHJhd3ZhbCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgorCSAqIENoZWNrIHRoYXQg d2UgcmVjb2duaXNlIGVhY2ggdG9rZW4sIGFuZCBhZGQgaXQgdG8gdGhlIGJpdG1hcCB3ZSdy ZQorCSAqIGJ1aWxkaW5nIHVwIGluIGEgbmV3bHktYWxsb2NhdGVkIHVpbnQ2NCAqZi4KKwkg Ki8KKwlmID0gKHVpbnQ2NCAqKSBtYWxsb2Moc2l6ZW9mKHVpbnQ2NCkpOworCWlmICghZikK KwkJcmV0dXJuIGZhbHNlOworCSpmID0gMDsKKworCWZvcmVhY2gobHQsIGZsYWdzKQorCXsK KwkJYm9vbCBzdWJ0cmFjdCA9IGZhbHNlOworCQl1aW50NjQgY2xhc3M7CisKKwkJLyogUmV0 cmlldmUgYSB0b2tlbiAqLworCQljaGFyICp0b2tlbiA9IChjaGFyICopbGZpcnN0KGx0KTsK KworCQkvKiBJZiB0b2tlbiBpcyBwcmVjZWRlZCBieSAtLCB0aGVuIHRoZW4gdG9rZW4gaXMg c3VidHJhY3RpdmUuICovCisJCWlmIChzdHJzdHIodG9rZW4sICItIikgPT0gdG9rZW4pCisJ CXsKKwkJCXRva2VuID0gdG9rZW4gKyAxOworCQkJc3VidHJhY3QgPSB0cnVlOworCQl9CisK KwkJLyogVGVzdCBlYWNoIHRva2VuLiAqLworCQlpZiAocGdfc3RyY2FzZWNtcCh0b2tlbiwg Q0xBU1NfTk9ORSkgPT0gMCkKKwkJCWNsYXNzID0gTE9HX05PTkU7CisJCWVsc2UgaWYgKHBn X3N0cmNhc2VjbXAodG9rZW4sIENMQVNTX0FMTCkgPT0gMCkKKwkJCWNsYXNzID0gTE9HX0FM TDsKKwkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh0b2tlbiwgQ0xBU1NfRERMKSA9PSAwKQor CQkJY2xhc3MgPSBMT0dfRERMOworCQllbHNlIGlmIChwZ19zdHJjYXNlY21wKHRva2VuLCBD TEFTU19GVU5DVElPTikgPT0gMCkKKwkJCWNsYXNzID0gTE9HX0ZVTkNUSU9OOworCQllbHNl IGlmIChwZ19zdHJjYXNlY21wKHRva2VuLCBDTEFTU19NSVNDKSA9PSAwKQorCQkJY2xhc3Mg PSBMT0dfTUlTQzsKKwkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh0b2tlbiwgQ0xBU1NfUEFS QU1FVEVSKSA9PSAwKQorCQkJY2xhc3MgPSBMT0dfUEFSQU1FVEVSOworCQllbHNlIGlmIChw Z19zdHJjYXNlY21wKHRva2VuLCBDTEFTU19SRUFEKSA9PSAwKQorCQkJY2xhc3MgPSBMT0df UkVBRDsKKwkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh0b2tlbiwgQ0xBU1NfUk9MRSkgPT0g MCkKKwkJCWNsYXNzID0gTE9HX1JPTEU7CisJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodG9r ZW4sIENMQVNTX1dSSVRFKSA9PSAwKQorCQkJY2xhc3MgPSBMT0dfV1JJVEU7CisJCWVsc2UK KwkJeworCQkJZnJlZShmKTsKKwkJCXBmcmVlKHJhd3ZhbCk7CisJCQlsaXN0X2ZyZWUoZmxh Z3MpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJLyogQWRkIG9yIHN1YnRyYWN0IGNs YXNzIGJpdHMgZnJvbSB0aGUgbG9nIGJpdG1hcC4gKi8KKwkJaWYgKHN1YnRyYWN0KQorCQkJ KmYgJj0gfmNsYXNzOworCQllbHNlCisJCQkqZiB8PSBjbGFzczsKKwl9CisKKwlwZnJlZShy YXd2YWwpOworCWxpc3RfZnJlZShmbGFncyk7CisKKwkvKgorCSAqIFN0b3JlIHRoZSBiaXRt YXAgZm9yIGFzc2lnbl9wZ19hdWRpdF9sb2cuCisJICovCisJKmV4dHJhID0gZjsKKworCXJl dHVybiB0cnVlOworfQorCisvKgorICogU2V0IHBnX2F1ZGl0X2xvZyBmcm9tIGV4dHJhIChp Z25vcmluZyBuZXd2YWwsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4KKyAqIGNvbnZlcnRlZCB0 byBhIGJpdG1hcCBhYm92ZSkuIE5vdGUgdGhhdCBleHRyYSBtYXkgbm90IGJlIHNldCBpZiB0 aGUKKyAqIGFzc2lnbm1lbnQgaXMgdG8gYmUgc3VwcHJlc3NlZC4KKyAqLworc3RhdGljIHZv aWQKK2Fzc2lnbl9wZ19hdWRpdF9sb2coY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRy YSkKK3sKKwlpZiAoZXh0cmEpCisJCWF1ZGl0TG9nQml0bWFwID0gKih1aW50NjQgKilleHRy YTsKK30KKworLyoKKyAqIERlZmluZSBHVUMgdmFyaWFibGVzIGFuZCBpbnN0YWxsIGhvb2tz IHVwb24gbW9kdWxlIGxvYWQuCisgKi8KK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJaWYg KElzVW5kZXJQb3N0bWFzdGVyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQllcnJtc2coInBn X2F1ZGl0IG11c3QgYmUgbG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKSkp OworCisJLyoKKwkgKiBwZ19hdWRpdC5yb2xlID0gImF1ZGl0IgorCSAqCisJICogRGVmaW5l cyBhIHJvbGUgdG8gYmUgdXNlZCBmb3IgYXVkaXRpbmcuCisJICovCisJRGVmaW5lQ3VzdG9t U3RyaW5nVmFyaWFibGUoInBnX2F1ZGl0LnJvbGUiLAorCQkJCQkJCSAgICJFbmFibGUgb2Jq ZWN0IGF1ZGl0aW5nIGZvciByb2xlIiwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgICZh dWRpdFJvbGUsCisJCQkJCQkJICAgIiIsCisJCQkJCQkJICAgUEdDX1NVU0VULAorCQkJCQkJ CSAgIEdVQ19OT1RfSU5fU0FNUExFLAorCQkJCQkJCSAgIE5VTEwsIE5VTEwsIE5VTEwpOwor CisJLyoKKwkgKiBwZ19hdWRpdC5sb2cgPSAicmVhZCwgd3JpdGUsIGRkbCIKKwkgKgorCSAq IENvbnRyb2xzIHdoYXQgY2xhc3NlcyBvZiBjb21tYW5kcyBhcmUgbG9nZ2VkLgorCSAqLwor CURlZmluZUN1c3RvbVN0cmluZ1ZhcmlhYmxlKCJwZ19hdWRpdC5sb2ciLAorCQkJCQkJCSAg ICJFbmFibGUgc2Vzc2lvbiBhdWRpdGluZyBmb3IgY2xhc3NlcyBvZiBjb21tYW5kcyIsCisJ CQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICAmYXVkaXRMb2csCisJCQkJCQkJICAgIm5vbmUi LAorCQkJCQkJCSAgIFBHQ19TVVNFVCwKKwkJCQkJCQkgICBHVUNfTElTVF9JTlBVVCB8IEdV Q19OT1RfSU5fU0FNUExFLAorCQkJCQkJCSAgIGNoZWNrX3BnX2F1ZGl0X2xvZywKKwkJCQkJ CQkgICBhc3NpZ25fcGdfYXVkaXRfbG9nLAorCQkJCQkJCSAgIE5VTEwpOworCisJLyoKKwkg KiBwZ19hdWRpdC5sb2dfcmVsYXRpb24gPSBvbgorCSAqCisJICogQ29udHJvbHMgd2hldGhl ciByZWxhdGlvbnMgZ2V0IHNlcGFyYXRlIGxvZyBlbnRyaWVzIGR1cmluZyBzZXNzaW9uCisJ ICogbG9nZ2luZyBvZiBSRUFEIGFuZCBXUklURSBjbGFzc2VzLiAgVGhpcyB3b3JrcyBhcyBp ZiBhbGwgcmVsYXRpb25zIGluIHRoZQorCSAqIGRhdGFiYXNlIGhhZCBiZWVuIGFkZGVkIHRv IHRoZSBhdWRpdCByb2xlIGFuZCBwcm92aWRlcyBhIHNob3J0Y3V0IHdoZW4KKwkgKiByZWFs bHkgZGV0YWlsZWQgbG9nZ2luZyBvZiBhYnNvbHV0ZWx5IGV2ZXJ5IHJlbGF0aW9uIGlzIHJl cXVpcmVkLgorCSAqLworCURlZmluZUN1c3RvbUJvb2xWYXJpYWJsZSgicGdfYXVkaXQubG9n X3JlbGF0aW9uIiwKKwkJCQkJCQkgIkVuYWJsZSBzZXNzaW9uIHJlbGF0aW9uIGxvZ2dpbmci LAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSAmYXVkaXRMb2dSZWxhdGlvbiwKKwkJCQkJCQkg ZmFsc2UsCisJCQkJCQkJIFBHQ19TVVNFVCwKKwkJCQkJCQkgR1VDX05PVF9JTl9TQU1QTEUs CisJCQkJCQkJIE5VTEwsIE5VTEwsIE5VTEwpOworCisKKwkvKgorCSAqIHBnX2F1ZGl0Lmxv Z19ub3RpY2UgPSBvbgorCSAqCisJICogQXVkaXQgbG9nZ2luZyBpcyByYWlzZWQgYXMgbm90 aWNlcyB0aGF0IGNhbiBiZSBzZWVuIG9uIHRoZSBjbGllbnQuICBUaGlzIGlzCisJICogaW50 ZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisJICovCisJRGVmaW5lQ3VzdG9tQm9vbFZh cmlhYmxlKCJwZ19hdWRpdC5sb2dfbm90aWNlIiwKKwkJCQkJCQkgIlJhaXNlIGEgbm90aWNl IHdoZW4gbG9nZ2luZyIsCisJCQkJCQkJIE5VTEwsCisJCQkJCQkJICZhdWRpdExvZ05vdGlj ZSwKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIFBHQ19TVVNFVCwKKwkJCQkJCQkgR1VDX05P VF9JTl9TQU1QTEUsCisJCQkJCQkJIE5VTEwsIE5VTEwsIE5VTEwpOworCisJLyoKKwkgKiBJ bnN0YWxsIG91ciBob29rIGZ1bmN0aW9ucyBhZnRlciBzYXZpbmcgdGhlIGV4aXN0aW5nIHBv aW50ZXJzIHRvIHByZXNlcnZlCisJICogdGhlIGNoYWluLgorCSAqLworCW5leHRfRXhlY3V0 b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9v ayA9IHBnX2F1ZGl0X0V4ZWN1dG9yU3RhcnRfaG9vazsKKworCW5leHRfRXhlY3V0b3JDaGVj a1Blcm1zX2hvb2sgPSBFeGVjdXRvckNoZWNrUGVybXNfaG9vazsKKwlFeGVjdXRvckNoZWNr UGVybXNfaG9vayA9IHBnX2F1ZGl0X0V4ZWN1dG9yQ2hlY2tQZXJtc19ob29rOworCisJbmV4 dF9FeGVjdXRvckVuZF9ob29rID0gRXhlY3V0b3JFbmRfaG9vazsKKwlFeGVjdXRvckVuZF9o b29rID0gcGdfYXVkaXRfRXhlY3V0b3JFbmRfaG9vazsKKworCW5leHRfUHJvY2Vzc1V0aWxp dHlfaG9vayA9IFByb2Nlc3NVdGlsaXR5X2hvb2s7CisJUHJvY2Vzc1V0aWxpdHlfaG9vayA9 IHBnX2F1ZGl0X1Byb2Nlc3NVdGlsaXR5X2hvb2s7CisKKwluZXh0X29iamVjdF9hY2Nlc3Nf aG9vayA9IG9iamVjdF9hY2Nlc3NfaG9vazsKKwlvYmplY3RfYWNjZXNzX2hvb2sgPSBwZ19h dWRpdF9vYmplY3RfYWNjZXNzX2hvb2s7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2F1 ZGl0L3BnX2F1ZGl0LmNvbmYgYi9jb250cmliL3BnX2F1ZGl0L3BnX2F1ZGl0LmNvbmYKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmNGEyMgotLS0gL2Rldi9udWxs CisrKyBiL2NvbnRyaWIvcGdfYXVkaXQvcGdfYXVkaXQuY29uZgpAQCAtMCwwICsxIEBACitz aGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSBwZ19hdWRpdApkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ19hdWRpdC9wZ19hdWRpdC5jb250cm9sIGIvY29udHJpYi9wZ19hdWRpdC9wZ19hdWRp dC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MzBjNjgK LS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX2F1ZGl0L3BnX2F1ZGl0LmNvbnRyb2wK QEAgLTAsMCArMSw1IEBACisjIHBnX2F1ZGl0IGV4dGVuc2lvbgorY29tbWVudCA9ICdwcm92 aWRlcyBhdWRpdGluZyBmdW5jdGlvbmFsaXR5JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMC4w JworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvcGdfYXVkaXQnCityZWxvY2F0YWJsZSA9 IHRydWUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfYXVkaXQvc3FsL3BnX2F1ZGl0LnNxbCBi L2NvbnRyaWIvcGdfYXVkaXQvc3FsL3BnX2F1ZGl0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wZTlhZTBhCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9w Z19hdWRpdC9zcWwvcGdfYXVkaXQuc3FsCkBAIC0wLDAgKzEsNTI3IEBACistLSBMb2FkIHBn X2F1ZGl0IG1vZHVsZQorY3JlYXRlIGV4dGVuc2lvbiBwZ19hdWRpdDsKKworLS0KKy0tIENy ZWF0ZSBhIHN1cGVydXNlciByb2xlIHRoYXQgd2Uga25vdyB0aGUgbmFtZSBvZiBmb3IgdGVz dGluZworQ1JFQVRFIFVTRVIgc3VwZXIgU1VQRVJVU0VSOworXGNvbm5lY3QgY29udHJpYl9y ZWdyZXNzaW9uIHN1cGVyOworCistLQorLS0gQ3JlYXRlIGF1ZGl0b3Igcm9sZQorQ1JFQVRF IFJPTEUgYXVkaXRvcjsKKworLS0KKy0tIENyZWF0ZSBmaXJzdCB0ZXN0IHVzZXIKK0NSRUFU RSBVU0VSIHVzZXIxOworQUxURVIgUk9MRSB1c2VyMSBTRVQgcGdfYXVkaXQubG9nID0gJ2Rk bCwgUk9MRSc7CitBTFRFUiBST0xFIHVzZXIxIFNFVCBwZ19hdWRpdC5sb2dfbm90aWNlID0g b247CisKKy0tCistLSBDcmVhdGUsIHNlbGVjdCwgZHJvcCAoc2VsZWN0IHdpbGwgbm90IGJl IGF1ZGl0ZWQpCitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gdXNlcjEKK0NSRUFURSBU QUJMRSBwdWJsaWMudGVzdCAoaWQgSU5UKTsKK1NFTEVDVCAqIEZST00gdGVzdDsKK0RST1Ag VEFCTEUgdGVzdDsKKworLS0KKy0tIENyZWF0ZSBzZWNvbmQgdGVzdCB1c2VyCitcY29ubmVj dCBjb250cmliX3JlZ3Jlc3Npb24gc3VwZXIKKworQ1JFQVRFIFVTRVIgdXNlcjI7CitBTFRF UiBST0xFIHVzZXIyIFNFVCBwZ19hdWRpdC5sb2cgPSAnUmVhZCwgd3JpdEUnOworQUxURVIg Uk9MRSB1c2VyMiBTRVQgcGdfYXVkaXQubG9nX25vdGljZSA9IG9uOworQUxURVIgUk9MRSB1 c2VyMiBTRVQgcGdfYXVkaXQucm9sZSA9IGF1ZGl0b3I7CisKK1xjb25uZWN0IGNvbnRyaWJf cmVncmVzc2lvbiB1c2VyMgorQ1JFQVRFIFRBQkxFIHRlc3QyIChpZCBJTlQpOworR1JBTlQg U0VMRUNUIE9OIFRBQkxFIHB1YmxpYy50ZXN0MiBUTyBhdWRpdG9yOworCistLQorLS0gUm9s ZS1iYXNlZCB0ZXN0cworQ1JFQVRFIFRBQkxFIHRlc3QzCisoCisJaWQgSU5UCispOworCitT RUxFQ1QgY291bnQoKikKKyAgRlJPTQorKAorCVNFTEVDVCByZWxuYW1lCisJICBGUk9NIHBn X2NsYXNzCisJICBMSU1JVCAxCispIFNVQlFVRVJZOworCitTRUxFQ1QgKgorICBGUk9NIHRl c3QzLCB0ZXN0MjsKKworR1JBTlQgSU5TRVJUCisgICBPTiBUQUJMRSBwdWJsaWMudGVzdDMK KyAgIFRPIGF1ZGl0b3I7CisKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6Cist LSBpbnNlcnQgb24gdGVzdDMKKy0tIHNlbGVjdCBvbiB0ZXN0MgorV0lUSCBDVEUgQVMKKygK KwlTRUxFQ1QgaWQKKwkgIEZST00gdGVzdDIKKykKK0lOU0VSVCBJTlRPIHRlc3QzCitTRUxF Q1QgaWQKKyAgRlJPTSBjdGU7CisKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6 CistLSBpbnNlcnQgb24gdGVzdDMKK1dJVEggQ1RFIEFTCisoCisJSU5TRVJUIElOVE8gdGVz dDMgVkFMVUVTICgxKQorCSAgICAgICAgICAgICAgIFJFVFVSTklORyBpZAorKQorSU5TRVJU IElOVE8gdGVzdDIKK1NFTEVDVCBpZAorICBGUk9NIGN0ZTsKKworR1JBTlQgVVBEQVRFIE9O IFRBQkxFIHB1YmxpYy50ZXN0MiBUTyBhdWRpdG9yOworCistLQorLS0gT2JqZWN0IGxvZ2dl ZCBiZWNhdXNlIG9mOgorLS0gaW5zZXJ0IG9uIHRlc3QzCistLSB1cGRhdGUgb24gdGVzdDIK K1dJVEggQ1RFIEFTCisoCisJVVBEQVRFIHRlc3QyCisJICAgU0VUIGlkID0gMQorCVJFVFVS TklORyBpZAorKQorSU5TRVJUIElOVE8gdGVzdDMKK1NFTEVDVCBpZAorICBGUk9NIGN0ZTsK KworLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIGluc2VydCBvbiB0ZXN0 MgorV0lUSCBDVEUgQVMKKygKKwlJTlNFUlQgSU5UTyB0ZXN0MiBWQUxVRVMgKDEpCisJICAg ICAgICAgICAgICAgUkVUVVJOSU5HIGlkCispCitVUERBVEUgdGVzdDMKKyAgIFNFVCBpZCA9 IGN0ZS5pZAorICBGUk9NIGN0ZQorIFdIRVJFIHRlc3QzLmlkIDw+IGN0ZS5pZDsKKworLS0K Ky0tIENoYW5nZSBwZXJtaXNzaW9ucyBvZiB1c2VyIDIgc28gdGhhdCBvbmx5IG9iamVjdCBs b2dnaW5nIHdpbGwgYmUgZG9uZQorXGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9uIHN1cGVy CithbHRlciByb2xlIHVzZXIyIHNldCBwZ19hdWRpdC5sb2cgPSAnTk9ORSc7CisKK1xjb25u ZWN0IGNvbnRyaWJfcmVncmVzc2lvbiB1c2VyMgorCistLQorLS0gQ3JlYXRlIHRlc3Q0IGFu ZCBhZGQgcGVybWlzc2lvbnMKK0NSRUFURSBUQUJMRSB0ZXN0NAorKAorCWlkIGludCwKKwlu YW1lIHRleHQKKyk7CisKK0dSQU5UIFNFTEVDVCAobmFtZSkKKyAgIE9OIFRBQkxFIHB1Ymxp Yy50ZXN0NAorICAgVE8gYXVkaXRvcjsKKworR1JBTlQgVVBEQVRFIChpZCkKKyAgIE9OIFRB QkxFIHB1YmxpYy50ZXN0NAorICAgVE8gYXVkaXRvcjsKKworR1JBTlQgaW5zZXJ0IChuYW1l KQorICAgT04gVEFCTEUgcHVibGljLnRlc3Q0CisgICBUTyBhdWRpdG9yOworCistLQorLS0g Tm90IG9iamVjdCBsb2dnZWQKK1NFTEVDVCBpZAorICBGUk9NIHB1YmxpYy50ZXN0NDsKKwor LS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHNlbGVjdCAobmFtZSkgb24g dGVzdDQKK1NFTEVDVCBuYW1lCisgIEZST00gcHVibGljLnRlc3Q0OworCistLQorLS0gTm90 IG9iamVjdCBsb2dnZWQKK0lOU0VSVCBJTlRPIHB1YmxpYy50ZXN0NCAoaWQpCisgICAgICAg ICAgICAgICAgICBWQUxVRVMgKDEpOworCistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNl IG9mOgorLS0gaW5zZXJ0IChuYW1lKSBvbiB0ZXN0NAorSU5TRVJUIElOVE8gcHVibGljLnRl c3Q0IChuYW1lKQorICAgICAgICAgICAgICAgICAgVkFMVUVTICgndGVzdCcpOworCistLQor LS0gTm90IG9iamVjdCBsb2dnZWQKK1VQREFURSBwdWJsaWMudGVzdDQKKyAgIFNFVCBuYW1l ID0gJ2Zvbyc7CisKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSB1cGRh dGUgKGlkKSBvbiB0ZXN0NAorVVBEQVRFIHB1YmxpYy50ZXN0NAorICAgU0VUIGlkID0gMTsK KworLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHVwZGF0ZSAobmFtZSkg b24gdGVzdDQKKy0tIHVwZGF0ZSAobmFtZSkgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHNlbGVj dCAobmFtZSkgZHVlIHRvIG9yZGVyaW5nCit1cGRhdGUgcHVibGljLnRlc3Q0IHNldCBuYW1l ID0gJ2Zvbycgd2hlcmUgbmFtZSA9ICdiYXInOworCistLQorLS0gRHJvcCB0ZXN0IHRhYmxl cworZHJvcCB0YWJsZSB0ZXN0MjsKK2Ryb3AgdGFibGUgdGVzdDM7Citkcm9wIHRhYmxlIHRl c3Q0OworCistLQorLS0gQ2hhbmdlIHBlcm1pc3Npb25zIG9mIHVzZXIgMSBzbyB0aGF0IHNl c3Npb24gbG9nZ2luZyB3aWxsIGJlIGRvbmUKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lv biBzdXBlcgorYWx0ZXIgcm9sZSB1c2VyMSBzZXQgcGdfYXVkaXQubG9nID0gJ0RETCwgUkVB RCc7CitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gdXNlcjEKKworLS0KKy0tIENyZWF0 ZSB0YWJsZSBpcyBzZXNzaW9uIGxvZ2dlZAorQ1JFQVRFIFRBQkxFIHB1YmxpYy5hY2NvdW50 CisoCisJaWQgSU5ULAorCW5hbWUgVEVYVCwKKwlwYXNzd29yZCBURVhULAorCWRlc2NyaXB0 aW9uIFRFWFQKKyk7CisKKy0tCistLSBTZWxlY3QgaXMgc2Vzc2lvbiBsb2dnZWQKK1NFTEVD VCAqCisgIEZST00gYWNjb3VudDsKKworLS0KKy0tIEluc2VydCBpcyBub3QgbG9nZ2VkCitJ TlNFUlQgSU5UTyBhY2NvdW50IChpZCwgbmFtZSwgcGFzc3dvcmQsIGRlc2NyaXB0aW9uKQor CQkJIFZBTFVFUyAoMSwgJ3VzZXIxJywgJ0hBU0gxJywgJ2JsYWgsIGJsYWgnKTsKKworLS0K Ky0tIENoYW5nZSBwZXJtaXNzaW9ucyBvZiB1c2VyIDEgc28gdGhhdCBvbmx5IG9iamVjdCBs b2dnaW5nIHdpbGwgYmUgZG9uZQorXGNvbm5lY3QgY29udHJpYl9yZWdyZXNzaW9uIHN1cGVy CithbHRlciByb2xlIHVzZXIxIHNldCBwZ19hdWRpdC5sb2cgPSAnbm9uZSc7CithbHRlciBy b2xlIHVzZXIxIHNldCBwZ19hdWRpdC5yb2xlID0gJ2F1ZGl0b3InOworXGNvbm5lY3QgY29u dHJpYl9yZWdyZXNzaW9uIHVzZXIxCisKKy0tCistLSBBdWRpdG9yIGdyYW50cyBub3QgbG9n Z2VkCitHUkFOVCBTRUxFQ1QgKHBhc3N3b3JkKSwKKwkgIFVQREFURSAobmFtZSwgcGFzc3dv cmQpCisgICBPTiBUQUJMRSBwdWJsaWMuYWNjb3VudAorICAgVE8gYXVkaXRvcjsKKworLS0K Ky0tIE5vdCBvYmplY3QgbG9nZ2VkCitTRUxFQ1QgaWQsCisJICAgbmFtZQorICBGUk9NIGFj Y291bnQ7CisKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBzZWxlY3Qg KHBhc3N3b3JkKSBvbiBhY2NvdW50CitTRUxFQ1QgcGFzc3dvcmQKKyAgRlJPTSBhY2NvdW50 OworCistLQorLS0gTm90IG9iamVjdCBsb2dnZWQKK1VQREFURSBhY2NvdW50CisgICBTRVQg ZGVzY3JpcHRpb24gPSAneWFkYSwgeWFkYSc7CisKKy0tCistLSBPYmplY3QgbG9nZ2VkIGJl Y2F1c2Ugb2Y6CistLSB1cGRhdGUgKHBhc3N3b3JkKSBvbiBhY2NvdW50CitVUERBVEUgYWNj b3VudAorICAgU0VUIHBhc3N3b3JkID0gJ0hBU0gyJzsKKworLS0KKy0tIENoYW5nZSBwZXJt aXNzaW9ucyBvZiB1c2VyIDEgc28gdGhhdCBzZXNzaW9uIHJlbGF0aW9uIGxvZ2dpbmcgd2ls bCBiZSBkb25lCitcY29ubmVjdCBjb250cmliX3JlZ3Jlc3Npb24gc3VwZXIKK2FsdGVyIHJv bGUgdXNlcjEgc2V0IHBnX2F1ZGl0LmxvZ19yZWxhdGlvbiA9IG9uOworYWx0ZXIgcm9sZSB1 c2VyMSBzZXQgcGdfYXVkaXQubG9nID0gJ3JlYWQsIFdSSVRFJzsKK1xjb25uZWN0IGNvbnRy aWJfcmVncmVzc2lvbiB1c2VyMQorCistLQorLS0gTm90IGxvZ2dlZAorY3JlYXRlIHRhYmxl IEFDQ09VTlRfUk9MRV9NQVAKKygKKwlhY2NvdW50X2lkIElOVCwKKwlyb2xlX2lkIElOVAor KTsKKworLS0KKy0tIEF1ZGl0b3IgZ3JhbnRzIG5vdCBsb2dnZWQKK0dSQU5UIFNFTEVDVAor ICAgT04gVEFCTEUgcHVibGljLmFjY291bnRfcm9sZV9tYXAKKyAgIFRPIGF1ZGl0b3I7CisK Ky0tCistLSBPYmplY3QgbG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSBzZWxlY3QgKHBhc3N3b3Jk KSBvbiBhY2NvdW50CistLSBzZWxlY3Qgb24gYWNjb3VudF9yb2xlX21hcAorLS0gU2Vzc2lv biBsb2dnZWQgb24gYWxsIHRhYmxlcyBiZWNhdXNlIGxvZyA9IHJlYWQgYW5kIGxvZ19yZWxh dGlvbiA9IG9uCitTRUxFQ1QgYWNjb3VudC5wYXNzd29yZCwKKwkgICBhY2NvdW50X3JvbGVf bWFwLnJvbGVfaWQKKyAgRlJPTSBhY2NvdW50CisJICAgSU5ORVIgSk9JTiBhY2NvdW50X3Jv bGVfbWFwCisJCQlvbiBhY2NvdW50LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lk OworCistLQorLS0gT2JqZWN0IGxvZ2dlZCBiZWNhdXNlIG9mOgorLS0gc2VsZWN0IChwYXNz d29yZCkgb24gYWNjb3VudAorLS0gU2Vzc2lvbiBsb2dnZWQgb24gYWxsIHRhYmxlcyBiZWNh dXNlIGxvZyA9IHJlYWQgYW5kIGxvZ19yZWxhdGlvbiA9IG9uCitTRUxFQ1QgcGFzc3dvcmQK KyAgRlJPTSBhY2NvdW50OworCistLQorLS0gTm90IG9iamVjdCBsb2dnZWQKKy0tIFNlc3Np b24gbG9nZ2VkIG9uIGFsbCB0YWJsZXMgYmVjYXVzZSBsb2cgPSByZWFkIGFuZCBsb2dfcmVs YXRpb24gPSBvbgorVVBEQVRFIGFjY291bnQKKyAgIFNFVCBkZXNjcmlwdGlvbiA9ICd5YWRh LCB5YWRhJzsKKworLS0KKy0tIE9iamVjdCBsb2dnZWQgYmVjYXVzZSBvZjoKKy0tIHNlbGVj dCAocGFzc3dvcmQpIG9uIGFjY291bnQgKGluIHRoZSB3aGVyZSBjbGF1c2UpCistLSBTZXNz aW9uIGxvZ2dlZCBvbiBhbGwgdGFibGVzIGJlY2F1c2UgbG9nID0gcmVhZCBhbmQgbG9nX3Jl bGF0aW9uID0gb24KK1VQREFURSBhY2NvdW50CisgICBTRVQgZGVzY3JpcHRpb24gPSAneWFk YSwgeWFkYScKKyB3aGVyZSBwYXNzd29yZCA9ICdIQVNIMic7CisKKy0tCistLSBPYmplY3Qg bG9nZ2VkIGJlY2F1c2Ugb2Y6CistLSB1cGRhdGUgKHBhc3N3b3JkKSBvbiBhY2NvdW50Cist LSBTZXNzaW9uIGxvZ2dlZCBvbiBhbGwgdGFibGVzIGJlY2F1c2UgbG9nID0gcmVhZCBhbmQg bG9nX3JlbGF0aW9uID0gb24KK1VQREFURSBhY2NvdW50CisgICBTRVQgcGFzc3dvcmQgPSAn SEFTSDInOworCistLQorLS0gQ2hhbmdlIGJhY2sgdG8gc3VwZXJ1c2VyIHRvIGRvIGV4aGF1 c3RpdmUgdGVzdHMKK1xjb25uZWN0IGNvbnRyaWJfcmVncmVzc2lvbiBzdXBlcgorU0VUIHBn X2F1ZGl0LmxvZyA9ICdBTEwnOworU0VUIHBnX2F1ZGl0LmxvZ19ub3RpY2UgPSBPTjsKK1NF VCBwZ19hdWRpdC5sb2dfcmVsYXRpb24gPSBPTjsKKworLS0KKy0tIFNpbXBsZSBETyBibG9j aworRE8gJCQKK0JFR0lOCisJcmFpc2Ugbm90aWNlICd0ZXN0JzsKK0VORCAkJDsKKworLS0K Ky0tIENyZWF0ZSB0ZXN0IHNjaGVtYQorQ1JFQVRFIFNDSEVNQSB0ZXN0OworCistLQorLS0g Q29weSBwZ19jbGFzcyB0byBzdGRvdXQKK0NPUFkgYWNjb3VudCBUTyBzdGRvdXQ7CisKKy0t CistLSBDcmVhdGUgYSB0YWJsZSBmcm9tIGEgcXVlcnkKK0NSRUFURSBUQUJMRSB0ZXN0LmFj Y291bnRfY29weSBBUworU0VMRUNUICoKKyAgRlJPTSBhY2NvdW50OworCistLQorLS0gQ29w eSBmcm9tIHN0ZGluIHRvIGFjY291bnQgY29weQorQ09QWSB0ZXN0LmFjY291bnRfY29weSBm cm9tIHN0ZGluOworMQl1c2VyMQlIQVNIMgl5YWRhLCB5YWRhCitcLgorCistLQorLS0gVGVz dCBwcmVwYXJlZCBzdGF0ZW1lbnQKK1BSRVBBUkUgcGdjbGFzc3N0bXQgKG9pZCkgQVMKK1NF TEVDVCAqCisgIEZST00gYWNjb3VudAorIFdIRVJFIGlkID0gJDE7CisKK0VYRUNVVEUgcGdj bGFzc3N0bXQgKDEpOworREVBTExPQ0FURSBwZ2NsYXNzc3RtdDsKKworLS0KKy0tIFRlc3Qg Y3Vyc29yIC0gbm8gdGFibGVzIHdpbGwgYmUgbG9nZ2VkIHNpbmNlIHBnX2NsYXNzIGlzIGEg c3lzdGVtIHRhYmxlCitCRUdJTjsKKworREVDTEFSRSBjdGVzdCBTQ1JPTEwgQ1VSU09SIEZP UgorU0VMRUNUIGNvdW50KCopCisgIEZST00KKygKKwlTRUxFQ1QgcmVsbmFtZQorCSAgRlJP TSBwZ19jbGFzcworCSBMSU1JVCAxCisgKSBzdWJxdWVyeTsKKworRkVUQ0ggTkVYVCBGUk9N IGN0ZXN0OworQ0xPU0UgY3Rlc3Q7CitDT01NSVQ7CisKKy0tCistLSBUZXN0IHByZXBhcmVk IGluc2VydAorQ1JFQVRFIFRBQkxFIHRlc3QudGVzdF9pbnNlcnQKKygKKwlpZCBJTlQKKyk7 CisKK1BSRVBBUkUgcGdjbGFzc3N0bXQgKG9pZCkgQVMKK0lOU0VSVCBJTlRPIHRlc3QudGVz dF9pbnNlcnQgKGlkKQorICAgICAgICAgICAgICAgICAgICAgIFZBTFVFUyAoJDEpOworRVhF Q1VURSBwZ2NsYXNzc3RtdCAoMSk7CisKKy0tCistLSBDaGVjayB0aGF0IHByaW1hcnkga2V5 IGNyZWF0aW9uIGlzIGxvZ2dlZAorQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0CisoCisJaWQg SU5ULAorCW5hbWUgVEVYVCwKKwlkZXNjcmlwdGlvbiBURVhULAorCUNPTlNUUkFJTlQgdGVz dF9wa2V5IFBSSU1BUlkgS0VZIChpZCkKKyk7CisKKy0tCistLSBDaGVjayB0aGF0IGFuYWx5 emUgaXMgbG9nZ2VkCitBTkFMWVpFIHRlc3Q7CisKKy0tCistLSBHcmFudHMgdG8gcHVibGlj IHNob3VsZCBub3QgY2F1c2Ugb2JqZWN0IGxvZ2dpbmcgKHNlc3Npb24gbG9nZ2luZyB3aWxs CistLSBzdGlsbCBoYXBwZW4pCitHUkFOVCBTRUxFQ1QKKyAgT04gVEFCTEUgcHVibGljLnRl c3QKKyAgVE8gUFVCTElDOworCitTRUxFQ1QgKgorICBGUk9NIHRlc3Q7CisKKy0tIENoZWNr IHRoYXQgc3RhdGVtZW50cyB3aXRob3V0IGNvbHVtbnMgbG9nCitTRUxFQ1QKKyAgRlJPTSB0 ZXN0OworCitTRUxFQ1QgMSwKKwkgICBjdXJyZW50X3VzZXI7CisKK0RPICQkCitERUNMQVJF CisJdGVzdCBJTlQ7CitCRUdJTgorCVNFTEVDVCAxCisJICBJTlRPIHRlc3Q7CitFTkQgJCQ7 CisKK2V4cGxhaW4gc2VsZWN0IDE7CisKKy0tCistLSBUZXN0IHRoYXQgbG9va3MgaW5zaWRl IG9mIGRvIGJsb2NrcyBsb2cKK0lOU0VSVCBJTlRPIFRFU1QgKGlkKQorCQkgIFZBTFVFUyAo MSk7CitJTlNFUlQgSU5UTyBURVNUIChpZCkKKwkJICBWQUxVRVMgKDIpOworSU5TRVJUIElO VE8gVEVTVCAoaWQpCisJCSAgVkFMVUVTICgzKTsKKworRE8gJCQKK0RFQ0xBUkUKKwlyZXN1 bHQgUkVDT1JEOworQkVHSU4KKwlGT1IgcmVzdWx0IElOCisJCVNFTEVDVCBpZAorCQkgIEZS T00gdGVzdAorCUxPT1AKKwkJSU5TRVJUIElOVE8gdGVzdCAoaWQpCisJCSAgICAgVkFMVUVT IChyZXN1bHQuaWQgKyAxMDApOworCUVORCBMT09QOworRU5EICQkOworCistLQorLS0gVGVz dCBjdXJzb3JzIGFuZCBmdW5jdGlvbnMgaW4gYSBkbyBibG9jaworQ1JFQVRFIEZVTkNUSU9O IHB1YmxpYy50ZXN0KCkKKwlSRVRVUk5TIElOVCBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitE RUNMQVJFCisJY3VyMSBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gdGVzdDsKKwl0bXAgSU5U OworQkVHSU4KKwlPUEVOIGN1cjE7CisJRkVUQ0ggY3VyMSBJTlRPIHRtcDsKKwlDTE9TRSBj dXIxOworCVJFVFVSTiB0bXA7CitlbmQgJCQ7CisKK1NFTEVDVCBwdWJsaWMudGVzdCgpOwor CistLQorLS0gVGVzdCBvYmZ1c2NhdGVkIGR5bmFtaWMgc3FsIGZvciBjbGVhbiBsb2dnaW5n CitETyAkJAorREVDTEFSRQorCXRhYmxlX25hbWUgVEVYVCA9ICdkb190YWJsZSc7CitCRUdJ TgorCUVYRUNVVEUgJ0NSRUFURSBUQUJMRSAnIHx8IHRhYmxlX25hbWUgfHwgJyAoIndlaXJk IG5hbWUiIElOVCknOworCUVYRUNVVEUgJ0RST1AgdGFibGUgJyB8fCB0YWJsZV9uYW1lOwor RU5EICQkOworCistLQorLS0gR2VuZXJhdGUgYW4gZXJyb3IgYW5kIG1ha2Ugc3VyZSB0aGUg c3RhY2sgZ2V0cyBjbGVhcmVkCitETyAkJAorQkVHSU4KKwlDUkVBVEUgVEFCTEUgYm9ndXMu dGVzdF9ibG9jaworCSgKKwkJaWQgSU5UCisJKTsKK0VORCAkJDsKKworLS0KKy0tIFRlc3Qg YWx0ZXIgdGFibGUgc3RhdGVtZW50cworQUxURVIgVEFCTEUgcHVibGljLnRlc3QKKwlEUk9Q IENPTFVNTiBkZXNjcmlwdGlvbiA7CisKK0FMVEVSIFRBQkxFIHB1YmxpYy50ZXN0CisJUkVO QU1FIFRPIHRlc3QyOworCitBTFRFUiBUQUJMRSBwdWJsaWMudGVzdDIKKwlTRVQgU0NIRU1B IHRlc3Q7CisKK0FMVEVSIFRBQkxFIHRlc3QudGVzdDIKKwlBREQgQ09MVU1OIGRlc2NyaXB0 aW9uIFRFWFQ7CisKK0FMVEVSIFRBQkxFIHRlc3QudGVzdDIKKwlEUk9QIENPTFVNTiBkZXNj cmlwdGlvbjsKKworRFJPUCBUQUJMRSB0ZXN0LnRlc3QyOworCistLQorLS0gVGVzdCBhZ2dy ZWdhdGUKK0NSRUFURSBGVU5DVElPTiBwdWJsaWMuaW50X2FkZAorKAorCWEgSU5ULAorCWIg SU5UCispCisJUkVUVVJOUyBJTlQgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKwly ZXR1cm4gYSArIGI7CitFTkQgJCQ7CisKK1NFTEVDVCBpbnRfYWRkKDEsIDEpOworCitDUkVB VEUgQUdHUkVHQVRFIHB1YmxpYy5zdW1fdGVzdChJTlQpIChTRlVOQz1wdWJsaWMuaW50X2Fk ZCwgU1RZUEU9SU5ULCBJTklUQ09ORD0nMCcpOworQUxURVIgQUdHUkVHQVRFIHB1YmxpYy5z dW1fdGVzdChpbnRlZ2VyKSBSRU5BTUUgVE8gc3VtX3Rlc3QyOworCistLQorLS0gVGVzdCBj b252ZXJzaW9uCitDUkVBVEUgQ09OVkVSU0lPTiBwdWJsaWMuY29udmVyc2lvbl90ZXN0IEZP UiAnU1FMX0FTQ0lJJyBUTyAnTVVMRV9JTlRFUk5BTCcgRlJPTSBwZ19jYXRhbG9nLmFzY2lp X3RvX21pYzsKK0FMVEVSIENPTlZFUlNJT04gcHVibGljLmNvbnZlcnNpb25fdGVzdCBSRU5B TUUgVE8gY29udmVyc2lvbl90ZXN0MjsKKworLS0KKy0tIFRlc3QgY3JlYXRlL2FsdGVyL2Ry b3AgZGF0YWJhc2UKK0NSRUFURSBEQVRBQkFTRSBjb250cmliX3JlZ3Jlc3Npb25fcGdhdWRp dDsKK0FMVEVSIERBVEFCQVNFIGNvbnRyaWJfcmVncmVzc2lvbl9wZ2F1ZGl0IFJFTkFNRSBU TyBjb250cmliX3JlZ3Jlc3Npb25fcGdhdWRpdDI7CitEUk9QIERBVEFCQVNFIGNvbnRyaWJf cmVncmVzc2lvbl9wZ2F1ZGl0MjsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb250cmli LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29udHJpYi5zZ21sCmluZGV4IGYyMWZhMTQuLmY0MThl OTMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb250cmliLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NvbnRyaWIuc2dtbApAQCAtMTI0LDYgKzEyNCw3IEBAIENSRUFURSBFWFRFTlNJ T04gPHJlcGxhY2VhYmxlPm1vZHVsZV9uYW1lPC8+IEZST00gdW5wYWNrYWdlZDsKICAmbHRy ZWU7CiAgJnBhZ2VpbnNwZWN0OwogICZwYXNzd29yZGNoZWNrOworICZwZ2F1ZGl0OwogICZw Z2J1ZmZlcmNhY2hlOwogICZwZ2NyeXB0bzsKICAmcGdmcmVlc3BhY2VtYXA7CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvZmlsZWxpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9maWxlbGlz dC5zZ21sCmluZGV4IDhiOWQ2YTkuLmU4ZGMyNmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9maWxlbGlzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9maWxlbGlzdC5zZ21sCkBAIC0x MjUsNiArMTI1LDcgQEAKIDwhRU5USVRZIG9pZDJuYW1lICAgICAgICBTWVNURU0gIm9pZDJu YW1lLnNnbWwiPgogPCFFTlRJVFkgcGFnZWluc3BlY3QgICAgIFNZU1RFTSAicGFnZWluc3Bl Y3Quc2dtbCI+CiA8IUVOVElUWSBwYXNzd29yZGNoZWNrICAgU1lTVEVNICJwYXNzd29yZGNo ZWNrLnNnbWwiPgorPCFFTlRJVFkgcGdhdWRpdCAgICAgICAgIFNZU1RFTSAicGdhdWRpdC5z Z21sIj4KIDwhRU5USVRZIHBnYmVuY2ggICAgICAgICBTWVNURU0gInBnYmVuY2guc2dtbCI+ CiA8IUVOVElUWSBwZ2J1ZmZlcmNhY2hlICAgU1lTVEVNICJwZ2J1ZmZlcmNhY2hlLnNnbWwi PgogPCFFTlRJVFkgcGdjcnlwdG8gICAgICAgIFNZU1RFTSAicGdjcnlwdG8uc2dtbCI+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGdhdWRpdC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Bn YXVkaXQuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGI0ZmQx Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3BnYXVkaXQuc2dtbApAQCAtMCww ICsxLDYwMyBAQAorPCEtLSBkb2Mvc3JjL3NnbWwvcGdhdWRpdC5zZ21sIC0tPgorCis8c2Vj dDEgaWQ9InBnYXVkaXQiIHhyZWZsYWJlbD0icGdhdWRpdCI+CisgIDx0aXRsZT5wZ19hdWRp dDwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJwZ2F1ZGl0Ij4KKyAgICA8cHJpbWFy eT5wZ19hdWRpdDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICAg VGhlIDxmaWxlbmFtZT5wZ19hdWRpdDwvZmlsZW5hbWU+IGV4dGVuc3Rpb24gcHJvdmlkZXMg ZGV0YWlsZWQgc2Vzc2lvbgorICAgIGFuZC9vciBvYmplY3QgYXVkaXQgbG9nZ2luZyB2aWEg dGhlIHN0YW5kYXJkIGxvZ2dpbmcgZmFjaWxpdHkuICBUaGUgZ29hbAorICAgIGlzIHRvIHBy b3ZpZGUgdGhlIHRvb2xzIG5lZWRlZCB0byBwcm9kdWNlIGF1ZGl0IGxvZ3MgcmVxdWlyZWQg dG8gcGFzcyBhbnkKKyAgICBnb3Zlcm1lbnQsIGZpbmFuY2lhbCwgb3IgSVNPIGNlcnRpZmlj YXRpb24gYXVkaXQuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgICBBbiBhdWRpdCBpcyBh biBvZmZpY2lhbCBpbnNwZWN0aW9uIG9mIGFuIGluZGl2aWR1YWwncyBvciBvcmdhbml6YXRp b24ncworICAgIGFjY291bnRzLCB0eXBpY2FsbHkgYnkgYW4gaW5kZXBlbmRlbnQgYm9keS4g IFRoZSBpbmZvcm1hdGlvbiBnYXRoZXJlZCBieQorICAgIDxmaWxlbmFtZT5wZ19hdWRpdDwv ZmlsZW5hbWU+IGlzIHByb3Blcmx5IGNhbGxlZCBhbiBhdWRpdCB0cmFpbCBvciBhdWRpdAor ICAgIGxvZy4gIFRoZSB0ZXJtIGF1ZGl0IGxvZyBpcyB1c2VkIGluIHRoaXMgZG9jdW1lbnRh dGlvbi4KKyAgPC9wYXJhPgorCisgIDxzZWN0Mj4KKyAgICA8dGl0bGU+V2h5IDxsaXRlcmFs PnBnX2F1ZGl0PC8+PzwvdGl0bGU+CisgIAorICAgIDxwYXJhPgorICAgICAgQmFzaWMgc3Rh dGVtZW50IGxvZ2dpbmcgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZSBzdGFuZGFyZCBsb2dnaW5n IGZhY2lsaXR5CisgICAgICB1c2luZyA8bGl0ZXJhbD5sb2dfc3RhdGVtZW50cyA9IGFsbDwv Pi4gIFRoaXMgaXMgYWNjZXB0YWJsZSBmb3IgbW9uaXRvcmluZworICAgICAgYW5kIG90aGVy IHVzYWdlcyBidXQgZG9lcyBub3QgcHJvdmlkZSB0aGUgbGV2ZWwgb2YgZGV0YWlsIGdlbmVy YWxseQorICAgICAgcmVxdWlyZWQgZm9yIGFuIGF1ZGl0LiAgSXQgaXMgbm90IGVub3VnaCB0 byBoYXZlIGEgbGlzdCBvZiBhbGwgdGhlCisgICAgICBvcGVyYXRpb25zIHBlcmZvcm1lZCBh Z2FpbnN0IHRoZSBkYXRhYmFzZS4gSXQgbXVzdCBhbHNvIGJlIHBvc3NpYmxlIHRvCisgICAg ICBmaW5kIHBhcnRpY3VsYXIgc3RhdGVtZW50cyB0aGF0IGFyZSBvZiBpbnRlcmVzdCB0byBh biBhdWRpdG9yLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgRm9yIGV4YW1w bGUsIGFuIGF1ZGl0b3IgbWF5IHdhbnQgdG8gdmVyaWZ5IHRoYXQgYSBwYXJ0aWN1bGFyIHRh YmxlIHdhcworICAgICAgY3JlYXRlZCBpbnNpZGUgYSBkb2N1bWVudGVkIG1haW50ZW5jZSB3 aW5kb3cuICBUaGlzIG1pZ2h0IHNlZW0gbGlrZSBhCisgICAgICBzaW1wbGUgam9iIGZvciBn cmVwLCBidXQgd2hhdCBpZiB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIHNvbWV0aGluZyBsaWtl CisgICAgICB0aGlzIChpbnRlbnRpb25hbGx5IG9iZnVzY2F0ZWQpIGV4YW1wbGU6CisgICAg PC9wYXJhPgorCisgICAgPHByb2dyYW1saXN0aW5nPgorRE8gJCQKK0JFR0lOCisgICAgRVhF Q1VURSAnQ1JFQVRFIFRBQkxFIGltcG9ydCcgfHwgJ2FudF90YWJsZSAoaWQgSU5UKSc7CitF TkQgJCQ7CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAKKyAgICA8cGFyYT4KKyAgICAg IFN0YW5kYXJkIGxvZ2dpbmcgd2lsbCBnaXZlIHlvdSB0aGlzOgorICAgIDwvcGFyYT4KKwor ICAgIDxwcm9ncmFtbGlzdGluZz4KK0xPRzogIHN0YXRlbWVudDogRE8gJCQKK0JFR0lOCisg ICAgRVhFQ1VURSAnQ1JFQVRFIFRBQkxFIGltcG9ydCcgfHwgJ2FudF90YWJsZSAoaWQgSU5U KSc7CitFTkQgJCQ7CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAKKyAgICA8cGFyYT4K KyAgICAgIEl0IGFwcGVhcnMgdGhhdCBmaW5kaW5nIHRoZSB0YWJsZSBvZiBpbnRlcmVzdCBt YXkgcmVxdWlyZSBzb21lIGtub3dsZWRnZQorICAgICAgb2YgdGhlIGNvZGUgaW4gY2FzZXMg d2hlcmUgdGFibGVzIGFyZSBjcmVhdGVkIGR5bmFtaWNhbGx5LiAgVGhpcyBpcyBub3QKKyAg ICAgIGlkZWFsIHNpbmNlIGl0IHdvdWxkIGJlIHByZWZlcnJhYmxlIHRvIGp1c3Qgc2VhcmNo IG9uIHRoZSB0YWJsZSBuYW1lLgorICAgICAgVGhpcyBpcyB3aGVyZSA8bGl0ZXJhbD5wZ19h dWRpdDwvPiBjb21lcyBpbi4gIEZvciB0aGUgc2FtZSBpbnB1dCwKKyAgICAgIGl0IHdpbGwg cHJvZHVjZSB0aGlzIG91dHB1dCBpbiB0aGUgbG9nOgorICAgIDwvcGFyYT4KKworICAgIDxw cm9ncmFtbGlzdGluZz4KK0FVRElUOiBTRVNTSU9OLDMzLDEsRlVOQ1RJT04sRE8sLCwiRE8g JCQKK0JFR0lOCisgICAgRVhFQ1VURSAnQ1JFQVRFIFRBQkxFIGltcG9ydCcgfHwgJ2FudF90 YWJsZSAoaWQgSU5UKSc7CitFTkQgJCQ7IgorQVVESVQ6IFNFU1NJT04sMzMsMixEREwsQ1JF QVRFIFRBQkxFLFRBQkxFLHB1YmxpYy5pbXBvcnRhbnRfdGFibGUsQ1JFQVRFIFRBQkxFIGlt cG9ydGFudF90YWJsZSAoaWQgSU5UKQorICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICA8 cGFyYT4KKyAgICAgIE5vdCBvbmx5IGlzIHRoZSA8bGl0ZXJhbD5ETzwvPiBibG9jayBsb2dn ZWQsIGJ1dCBzdWJzdGF0ZW1lbnQgMiBjb250YWlucworICAgICAgdGhlIGZ1bGwgdGV4dCBv ZiB0aGUgPGxpdGVyYWw+Q1JFQVRFIFRBQkxFPC8+IHdpdGggdGhlIHN0YXRlbWVudCB0eXBl LAorICAgICAgb2JqZWN0IHR5cGUsIGFuZCBmdWxsLXF1YWxpZmllZCBuYW1lIHRvIG1ha2Ug c2VhcmNoZXMgZWFzeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIFdoZW4g bG9nZ2luZyA8bGl0ZXJhbD5TRUxFQ1Q8Lz4gYW5kIDxsaXRlcmFsPkRNTDwvPiBzdGF0ZW1l bnRzLAorICAgICAgPGxpdGVyYWw+cGdfYXVkaXQ8Lz4gY2FuIGJlIGNvbmZpZ3VyZWQgdG8g bG9nIGEgc2VwYXJhdGUgZW50cnkgZm9yIGVhY2gKKyAgICAgIHJlbGF0aW9uIHJlZmVyZW5j ZWQgaW4gYSBzdGF0ZW1lbnQuICBObyBwYXJzaW5nIGlzIHJlcXVpcmVkIHRvIGZpbmQgYWxs CisgICAgICBzdGF0ZW1lbnRzIHRoYXQgdG91Y2ggYSBwYXJ0aWN1bGFyIHRhYmxlLiAgSW4g ZmFjdCwgdGhlIGdvYWwgaXMgdGhhdCB0aGUKKyAgICAgIHN0YXRlbWVudCB0ZXh0IGlzIHBy b3ZpZGVkIHByaW1hcmlseSBmb3IgZGVlcCBmb3JlbnNpY3MgYW5kIHNob3VsZCBub3QgYmUK KyAgICAgIHRoZSBkaXJlY3RseSByZXF1aXJlZCBmb3IgYW55IHNlYXJjaC4KKyAgICA8L3Bh cmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyPgorICAgIDx0aXRsZT5Vc2FnZSBDb25zaWRl cmF0aW9uczwvdGl0bGU+CisgICAgCisgICAgPHBhcmE+CisgICAgICBEZXBlbmRpbmcgb24g c2V0dGluZ3MsIGl0IGlzIHBvc3NpYmxlIGZvciA8bGl0ZXJhbD5wZ19hdWRpdDwvbGl0ZXJh bD4gdG8KKyAgICAgIGdlbmVyYXRlIGFuIGVub3Jtb3VzIHZvbHVtZSBvZiBsb2dnaW5nLiAg QmUgY2FyZWZ1bCB0byBkZXRlcm1pbmUKKyAgICAgIGV4YWN0bHkgd2hhdCBuZWVkcyB0byBi ZSBhdWRpdCBsb2dnZWQgaW4geW91ciBlbnZpcm9ubWVudCB0byBhdm9pZAorICAgICAgbG9n Z2luZyB0b28gbXVjaC4KKyAgICA8L3BhcmE+CisgICAgCisgICAgPHBhcmE+CisgICAgICBG b3IgZXhhbXBsZSwgd2hlbiB3b3JraW5nIGluIGFuIE9MQVAgZW52aXJvbm1lbnQgaXQgd291 bGQgcHJvYmFibHkgbm90IGJlCisgICAgICB3aXNlIHRvIGF1ZGl0IGxvZyBpbnNlcnRzIGlu dG8gYSBsYXJnZSBmYWN0IHRhYmxlLiAgVGhlIHNpemUgb2YgdGhlIGxvZworICAgICAgZmls ZSB3aWxsIGxpa2VseSBiZSBtYW55IHRpbWVzIHRoZSBhY3R1YWwgZGF0YSBzaXplIG9mIHRo ZSBpbnNlcnRzIGJlY2F1c2UKKyAgICAgIHRoZSBsb2cgZmlsZSBpcyBleHByZXNzZWQgYXMg dGV4dC4gIFNpbmNlIGxvZ3MgYXJlIGdlbmVyYWxseSBzdG9yZWQgd2l0aAorICAgICAgdGhl IE9TIHRoaXMgbWF5IGxlYWQgdG8gZGlzayBzcGFjZSBiZWluZyBleGhhdXN0ZWQgdmVyeQor ICAgICAgcXVpY2tseS4gIEluIGNhc2VzIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBs aW1pdCBhdWRpdCBsb2dnaW5nIHRvCisgICAgICBjZXJ0YWluIHRhYmxlcywgYmUgc3VyZSB0 byBhc3Nlc3MgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCB3aGlsZSB0ZXN0aW5nCisgICAgICBh bmQgYWxsb2NhdGUgcGxlbnR5IG9mIHNwYWNlIG9uIHRoZSBsb2cgdm9sdW1lLiAgVGhpcyBt YXkgYWxzbyBiZSB0cnVlIGZvcgorICAgICAgT0xUUCBlbnZpcm9ubWVudHMuICBFdmVuIGlm IHRoZSBpbnNlcnQgdm9sdW1lIGlzIG5vdCBhcyBoaWdoLCB0aGUKKyAgICAgIHBlcmZvcm1h bmNlIGltcGFjdCBvZiBhdWRpdCBsb2dnaW5nIG1heSBzdGlsbCBub3RpY2VhYmx5IGFmZmVj dCBsYXRlbmN5LgorICAgIDwvcGFyYT4KKyAgICAKKyAgICA8cGFyYT4KKyAgICAgIFRvIGxp bWl0IHRoZSBudW1iZXIgb2YgcmVsYXRpb25zIGF1ZGl0IGxvZ2dlZCBmb3IgPGxpdGVyYWw+ U0VMRUNUPC8+CisgICAgICBhbmQgPGxpdGVyYWw+RE1MPC8+IHN0YXRtZW50cywgY29uc2lk ZXIgdXNpbmcgb2JqZWN0IGF1ZGl0IGxvZ2dpbmcKKyAgICAgIChzZWUgPHhyZWYgbGlua2Vu ZD0icGdhdWRpdC1vYmplY3QtYXVkaXQtbG9nZ2luZyI+KS4gIE9iamVjdCBhdWRpdCBsb2dn aW5nCisgICAgICBhbGxvd3Mgc2VsZWN0aW9uIG9mIHRoZSByZWxhdGlvbnMgdG8gYmUgbG9n Z2VkIGFsbG93aW5nIGZvciByZWR1Y3Rpb24KKyAgICAgIG9mIHRoZSBvdmVyYWxsIGxvZyB2 b2x1bWUuICBIb3dldmVyLCB3aGVuIG5ldyByZWxhdGlvbnMgYXJlIGFkZGVkIHRoZXkKKyAg ICAgIG11c3QgYmUgZXhwbGljaXRseSBhZGRlZCB0byBvYmplY3QgYXVkaXQgbG9nZ2luZy4g IEEgcHJvZ3JhbW1hdGljCisgICAgICBzb2x1dGlvbiB3aGVyZSBzcGVjaWZpZWQgdGFibGVz IGFyZSBleGNsdWRlZCBmcm9tIGxvZ2dpbmcgYW5kIGFsbCBvdGhlcnMKKyAgICAgIGFyZSBp bmNsdWRlZCBtYXkgYmUgYSBnb29kIG9wdGlvbiBpbiB0aGlzIGNhc2UuCisgICAgPC9wYXJh PgorICA8L3NlY3QyPgorICAKKyAgPHNlY3QyPgorICAgIDx0aXRsZT5TZXR0aW5nczwvdGl0 bGU+CisgICAgCisgICAgPHBhcmE+CisgICAgICBTZXR0aW5ncyBtYXkgYmUgbW9kaWZpZWQg b25seSBieSBhIHN1cGVydXNlci4gQWxsb3dpbmcgbm9ybWFsIHVzZXJzIHRvCisgICAgICBj aGFuZ2UgdGhlaXIgc2V0dGluZ3Mgd291bGQgZGVmZWF0IHRoZSBwb2ludCBvZiBhbiBhdWRp dCBsb2cuCisgICAgPC9wYXJhPgorICAgICAgCisgICAgPHBhcmE+CisgICAgICBTZXR0aW5n cyBjYW4gYmUgc3BlY2lmaWVkIGdsb2JhbGx5IChpbgorICAgICAgPGZpbGVuYW1lPnBvc3Rn cmVzcWwuY29uZjwvZmlsZW5hbWU+IG9yIHVzaW5nCisgICAgICA8bGl0ZXJhbD5BTFRFUiBT WVNURU0gLi4uIFNFVDwvPiksIGF0IHRoZSBkYXRhYmFzZSBsZXZlbCAodXNpbmcKKyAgICAg IDxsaXRlcmFsPkFMVEVSIERBVEFCQVNFIC4uLiBTRVQ8L2xpdGVyYWw+KSwgb3IgYXQgdGhl IHJvbGUgbGV2ZWwgKHVzaW5nCisgICAgICA8bGl0ZXJhbD5BTFRFUiBST0xFIC4uLiBTRVQ8 L2xpdGVyYWw+KS4gIE5vdGUgdGhhdCBzZXR0aW5ncyBhcmUgbm90CisgICAgICBpbmhlcml0 ZWQgdGhyb3VnaCBub3JtYWwgcm9sZSBpbmhlcml0YW5jZSBhbmQgPGxpdGVyYWw+U0VUIFJP TEU8Lz4gd2lsbAorICAgICAgbm90IGFsdGVyIGEgdXNlcidzIDxsaXRlcmFsPnBnX2F1ZGl0 PC8+IHNldHRpbmdzLiAgVGhpcyBpcyBhIGxpbWl0YXRpb24KKyAgICAgIG9mIHRoZSByb2xl cyBzeXN0ZW0gYW5kIG5vdCBpbmhlcmVudCB0byA8bGl0ZXJhbD5wZ19hdWRpdDwvPi4KKyAg ICA8L3BhcmE+CisgICAgICAKKyAgICA8cGFyYT4KKyAgICAgIFRoZSA8bGl0ZXJhbD5wZ19h dWRpdDwvPiBleHRlbnNpb24gbXVzdCBiZSBsb2FkZWQgaW4KKyAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1zaGFyZWQtcHJlbG9hZC1saWJyYXJpZXMiPi4gIE90aGVyd2lzZSwgYW4gZXJy b3IKKyAgICAgIHdpbGwgYmUgcmFpc2VkIGF0IGxvYWQgdGltZSBhbmQgbm8gYXVkaXQgbG9n Z2luZyB3aWxsIG9jY3VyLgorICAgIDwvcGFyYT4KKworICAgIDx2YXJpYWJsZWxpc3Q+Cisg ICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcGdhdWRpdC1sb2ciIHhyZWZsYWJlbD0icGdf YXVkaXQubG9nIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+cGdfYXVkaXQubG9nPC92YXJu YW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKKyAgICAgICAgICA8aW5kZXh0ZXJtPgorICAg ICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cGdfYXVkaXQubG9nPC8+IGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg ICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgIFNwZWNpZmllcyB3aGljaCBjbGFzc2VzIG9mIHN0YXRlbWVudHMgd2lsbCBiZSBs b2dnZWQgYnkgc2Vzc2lvbgorICAgICAgICAgICAgYXVkaXQgbG9nZ2luZy4gIFBvc3NpYmxl IHZhbHVlcyBhcmU6CisgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgPGl0ZW1pemVk bGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICAgICAgPGxpdGVyYWw+UkVBRDwvbGl0ZXJhbD4gLSA8bGl0ZXJhbD5TRUxF Q1Q8L2xpdGVyYWw+IGFuZAorICAgICAgICAgICAgICAgIDxsaXRlcmFsPkNPUFk8L2xpdGVy YWw+IHdoZW4gdGhlIHNvdXJjZSBpcyBhIHJlbGF0aW9uIG9yIGEKKyAgICAgICAgICAgICAg ICBxdWVyeS4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRl bT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgICAgICAgPGxpdGVyYWw+V1JJVEU8L2xpdGVyYWw+IC0gPGxpdGVyYWw+SU5TRVJU PC9saXRlcmFsPiwKKyAgICAgICAgICAgICAgICA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+ LCA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+LAorICAgICAgICAgICAgICAgIDxsaXRlcmFs PlRSVU5DQVRFPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPkNPUFk8L2xpdGVyYWw+IHdoZW4g dGhlCisgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gaXMgYSByZWxhdGlvbi4KKyAgICAg ICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGxp dGVyYWw+RlVOQ1RJT048L2xpdGVyYWw+IC0gRnVuY3Rpb24gY2FsbHMgYW5kCisgICAgICAg ICAgICAgICAgPGxpdGVyYWw+RE88L2xpdGVyYWw+IGJsb2Nrcy4KKyAgICAgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgPGxpdGVyYWw+Uk9M RTwvbGl0ZXJhbD4gLSBTdGF0ZW1lbnRzIHJlbGF0ZWQgdG8gcm9sZXMgYW5kCisgICAgICAg ICAgICAgICAgcHJpdmlsZWdlczogPGxpdGVyYWw+R1JBTlQ8L2xpdGVyYWw+LAorICAgICAg ICAgICAgICAgIDxsaXRlcmFsPlJFVk9LRTwvbGl0ZXJhbD4sCisgICAgICAgICAgICAgICAg PGxpdGVyYWw+Q1JFQVRFL0FMVEVSL0RST1AgUk9MRTwvbGl0ZXJhbD4uCisgICAgICAgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIDxsaXRlcmFs PkRETDwvbGl0ZXJhbD4gLSBBbGwgPGxpdGVyYWw+RERMPC8+IHRoYXQgaXMgbm90IGluY2x1 ZGVkCisgICAgICAgICAgICAgICAgaW4gdGhlIDxsaXRlcmFsPlJPTEU8Lz4gY2xhc3MgcGx1 cyA8bGl0ZXJhbD5SRUlOREVYPC8+LgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAg ICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgICAgICA8bGl0ZXJhbD5QQVJBTUVURVI8L2xpdGVyYWw+ IC0gUGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIGZvciB0aGUKKyAgICAgICAgICAgICAg ICBzdGF0ZW1lbnQuICBQYXJhbWV0ZXJzIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgc3RhdGVt ZW50IHRleHQuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAg ICAgICAgICAgICAgIDxsaXRlcmFsPk1JU0M8L2xpdGVyYWw+IC0gTWlzY2VsbGFuZW91cyBj b21tYW5kcywgZS5nLgorICAgICAgICAgICAgICAgIDxsaXRlcmFsPkRJU0NBUkQ8L2xpdGVy YWw+LCA8bGl0ZXJhbD5GRVRDSDwvbGl0ZXJhbD4sCisgICAgICAgICAgICAgICAgPGxpdGVy YWw+Q0hFQ0tQT0lOVDwvbGl0ZXJhbD4sIDxsaXRlcmFsPlZBQ1VVTTwvbGl0ZXJhbD4uCisg ICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAg ICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAKKyAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICAgIE11bHRpcGxlIGNsYXNzZXMgY2FuIGJlIHByb3ZpZGVkIHVzaW5nIGEgY29t bWEtc2VwYXJhdGVkIGxpc3QgYW5kCisgICAgICAgICAgICBjbGFzc2VzIGNhbiBiZSBzdWJ0 cmFjdGVkIGJ5IHByZWZhY2luZyB0aGUgY2xhc3Mgd2l0aCBhCisgICAgICAgICAgICA8bGl0 ZXJhbD4tPC8+IHNpZ24gKHNlZSA8eHJlZiBsaW5rZW5kPSJwZ2F1ZGl0LXNlc3Npb24tYXVk aXQtbG9nZ2luZyI+KS4KKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPm5v bmU8Lz4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg PC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1wZ2F1ZGl0 LWxvZy1ub3RpY2UiIHhyZWZsYWJlbD0icGdfYXVkaXQubG9nX25vdGljZSI+CisgICAgICAg IDx0ZXJtPjx2YXJuYW1lPnBnX2F1ZGl0LmxvZ19ub3RpY2U8L3Zhcm5hbWU+ICg8dHlwZT5i b29sZWFuPC90eXBlPikKKyAgICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgICAgPHBy aW1hcnk+PHZhcm5hbWU+cGdfYXVkaXQubG9nX25vdGljZTwvPiBjb25maWd1cmF0aW9uIHBh cmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPC90 ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAg ICBTcGVjaWZpZXMgdGhhdCB0aGUgYXVkaXQgbG9nIG1lc3NhZ2VzIHNob3VsZCBiZSByYWlz ZWQgYXMKKyAgICAgICAgICAgIDxsaXRlcmFsPk5PVElDRTwvPiBpbnN0ZWFkIG9mIDxsaXRl cmFsPkxPRzwvPi4gIFRoZSBwcmltYXJ5CisgICAgICAgICAgICBhZHZhbnRhZ2UgaXMgdGhh dCA8bGl0ZXJhbD5OT1RJQ0U8Lz4gbWVzc2FnZXMgY2FuIGJlIGV4cG9zZWQKKyAgICAgICAg ICAgIHRocm91Z2ggdGhlIHVzZXIgaW50ZXJmYWNlLiAgVGhpcyBzZXR0aW5nIGlzIHVzZWQg Zm9yIHJlZ3Jlc3Npb24KKyAgICAgICAgICAgIHRlc3RpbmcgYW5kIG1heSBhbHNvIGJlIHVz ZWZ1bCB0byBlbmQgdXNlcnMgZm9yIHRlc3RpbmcuICBJdCBpcyBub3QKKyAgICAgICAgICAg IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50IGFzIGl0 IHdpbGwgbGVhaworICAgICAgICAgICAgd2hpY2ggc3RhdGVtZW50cyBhcmUgYmVpbmcgbG9n Z2VkIHRvIHRoZSB1c2VyLiBUaGUgZGVmYXVsdCBpcworICAgICAgICAgICAgPGxpdGVyYWw+ b2ZmPC8+LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcGdhdWRp dC1sb2ctcmVsYXRpb24iIHhyZWZsYWJlbD0icGdfYXVkaXQubG9nX3JlbGF0aW9uIj4KKyAg ICAgICAgPHRlcm0+PHZhcm5hbWU+cGdfYXVkaXQubG9nX3JlbGF0aW9uPC92YXJuYW1lPiAo PHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnBnX2F1ZGl0LmxvZ19yZWxhdGlvbjwvPiBjb25maWd1 cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgICAgICA8L2luZGV4dGVybT4KKyAg ICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+Cisg ICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciBzZXNzaW9uIGF1ZGl0IGxvZ2dpbmcgc2hv dWxkIGNyZWF0ZSBhIHNlcGFyYXRlCisgICAgICAgICAgICBsb2cgZW50cnkgZm9yIGVhY2gg cmVsYXRpb24gcmVmZXJlbmNlZCBpbiBhIDxsaXRlcmFsPlNFTEVDVDwvPiBvcgorICAgICAg ICAgICAgPGxpdGVyYWw+RE1MPC8+IHN0YXRlbWVudC4gIFRoaXMgaXMgYSB1c2VmdWwgc2hv cnRjdXQgZm9yIGV4aGF1c3RpdmUKKyAgICAgICAgICAgIGxvZ2dpbmcgd2l0aG91dCB1c2lu ZyBvYmplY3QgYXVkaXQgbG9nZ2luZy4gIFRoZSBkZWZhdWx0IGlzCisgICAgICAgICAgICA8 bGl0ZXJhbD5vZmY8Lz4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVt PgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1 Yy1wZ2F1ZGl0LXJvbGUiIHhyZWZsYWJlbD0icGdfYXVkaXQucm9sZSI+CisgICAgICAgIDx0 ZXJtPjx2YXJuYW1lPnBnX2F1ZGl0LnJvbGU8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5 cGU+KQorICAgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICAgICA8cHJpbWFyeT48dmFy bmFtZT5wZ19hdWRpdC5yb2xlPC8+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5 PgorICAgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFNwZWNpZmllcyB0aGUg bWFzdGVyIHJvbGUgdG8gdXNlIGZvciBvYmplY3QgYXVkaXQgbG9nZ2luZy4gIE11bGlwbGUK KyAgICAgICAgICAgIGF1ZGl0IHJvbGVzIGNhbiBiZSBkZWZpbmVkIGJ5IGdyYW50aW5nIHRo ZW0gdG8gdGhlIG1hc3RlciByb2xlLgorICAgICAgICAgICAgVGhpcyBhbGxvd3MgbXVsdGlw bGUgZ3JvdXBzIHRvIGJlIGluIGNoYXJnZSBvZiBkaWZmZXJlbnQgYXNwZWN0cworICAgICAg ICAgICAgb2YgYXVkaXQgbG9nZ2luZy4gIFRoZXJlIGlzIG5vIGRlZmF1bHQuCisgICAgICAg ICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+ CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJwZ2F1 ZGl0LXNlc3Npb24tYXVkaXQtbG9nZ2luZyI+CisgICAgPHRpdGxlPlNlc3Npb24gQXVkaXQg TG9nZ2luZzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFNlc3Npb24gYXVkaXQgbG9n Z2luZyBwcm92aWRlcyBkZXRhaWxlZCBsb2dzIG9mIGFsbCBzdGF0ZW1lbnRzIGV4ZWN1dGVk CisgICAgICBieSBhIHVzZXIgaW4gdGhlIGJhY2tlbmQuCisgICAgPC9wYXJhPgorCisgICAg PHNlY3QzPgorICAgICAgPHRpdGxlPkNvbmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICA8 cGFyYT4KKyAgICAgICAgU2Vzc2lvbiBsb2dnaW5nIGlzIGVuYWJsZWQgd2l0aCB0aGUgPHhy ZWYgbGlua2VuZD0iZ3VjLXBnYXVkaXQtbG9nIj4KKyAgICAgICAgc2V0dGluZy4KKworICAg ICAgICBFbmFibGUgc2Vzc2lvbiBsb2dnaW5nIGZvciBhbGwgPGxpdGVyYWw+RE1MPC8+IGFu ZCA8bGl0ZXJhbD5EREw8Lz4gYW5kCisgICAgICAgIGxvZyBhbGwgcmVsYXRpb25zIGluIDxs aXRlcmFsPkRNTDwvPiBzdGF0ZW1lbnRzOgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4K K3NldCBwZ19hdWRpdC5sb2cgPSAnd3JpdGUsIGRkbCc7CitzZXQgcGdfYXVkaXQubG9nX3Jl bGF0aW9uID0gb247CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvcGFy YT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJsZSBzZXNzaW9uIGxvZ2dpbmcgZm9y IGFsbCBjb21tYW5kcyBleGNlcHQgPGxpdGVyYWw+TUlTQzwvPiBhbmQKKyAgICAgICAgcmFp c2UgYXVkaXQgbG9nIG1lc3NhZ2VzIGFzIDxsaXRlcmFsPk5PVElDRTwvPjoKKyAgICAgICAg ICA8cHJvZ3JhbWxpc3Rpbmc+CitzZXQgcGdfYXVkaXQubG9nID0gJ2FsbCwgLW1pc2MnOwor c2V0IHBnX2F1ZGl0LmxvZ19ub3RpY2UgPSBvbjsKKyAgICAgICAgICA8L3Byb2dyYW1saXN0 aW5nPgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDM+CisKKyAgICA8c2VjdDM+CisgICAg ICA8dGl0bGU+RXhhbXBsZTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBJbiB0 aGlzIGV4YW1wbGUgc2Vzc2lvbiBhdWRpdCBsb2dnaW5nIGlzIHVzZWQgdG8gZm9yIGxvZ2dp bmcKKyAgICAgICAgPGxpdGVyYWw+RERMPC8+IGFuZCA8bGl0ZXJhbD5TRUxFQ1Q8Lz4gc3Rh dGVtZW50cy4gIE5vdGUgdGhhdCB0aGUKKyAgICAgICAgaW5zZXJ0IHN0YXRlbWVudCBpcyBu b3QgbG9nZ2VkIHNpbmNlIHRoZSA8bGl0ZXJhbD5XUklURTwvPiBjbGFzcworICAgICAgICBp cyBub3QgZW5hYmxlZAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAg U1FMOgorICAgICAgPC9wYXJhPgorICAgICAgPHByb2dyYW1saXN0aW5nPgorc2V0IHBnX2F1 ZGl0LmxvZyA9ICdyZWFkLCBkZGwnOworCitjcmVhdGUgdGFibGUgYWNjb3VudAorKAorICAg IGlkIGludCwKKyAgICBuYW1lIHRleHQsCisgICAgcGFzc3dvcmQgdGV4dCwKKyAgICBkZXNj cmlwdGlvbiB0ZXh0CispOworCitpbnNlcnQgaW50byBhY2NvdW50IChpZCwgbmFtZSwgcGFz c3dvcmQsIGRlc2NyaXB0aW9uKQorICAgICAgICAgICAgIHZhbHVlcyAoMSwgJ3VzZXIxJywg J0hBU0gxJywgJ2JsYWgsIGJsYWgnKTsKKworc2VsZWN0ICoKKyAgICBmcm9tIGFjY291bnQ7 CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgTG9n IE91dHB1dDoKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgorQVVE SVQ6IFNFU1NJT04sMSwxLERETCxDUkVBVEUgVEFCTEUsVEFCTEUscHVibGljLmFjY291bnQs Y3JlYXRlIHRhYmxlIGFjY291bnQKKygKKyAgICBpZCBpbnQsCisgICAgbmFtZSB0ZXh0LAor ICAgIHBhc3N3b3JkIHRleHQsCisgICAgZGVzY3JpcHRpb24gdGV4dAorKTsKK0FVRElUOiBT RVNTSU9OLDIsMSxSRUFELFNFTEVDVCwsLHNlbGVjdCAqCisgICAgZnJvbSBhY2NvdW50Cisg ICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvc2VjdDM+CisgIDwvc2VjdDI+CisKKyAg PHNlY3QyIGlkPSJwZ2F1ZGl0LW9iamVjdC1hdWRpdC1sb2dnaW5nIj4KKyAgICA8dGl0bGU+ T2JqZWN0IEF1ZGl0aW5nPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgT2JqZWN0IGF1 ZGl0IGxvZ2dpbmcgbG9ncyBzdGF0ZW1lbnRzIHRoYXQgYWZmZWN0IGEgcGFydGljdWxhciBy ZWxhdGlvbi4KKyAgICAgIE9ubHkgPGxpdGVyYWw+U0VMRUNUPC8+LCA8bGl0ZXJhbD5JTlNF UlQ8Lz4sIDxsaXRlcmFsPlVQREFURTwvPiBhbmQKKyAgICAgIDxsaXRlcmFsPkRFTEVURTwv PiBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLiAgPGxpdGVyYWw+VFJVTkNBVEU8Lz4gaXMgbm90 CisgICAgICBpbmNsdWRlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIHNwZWNpZmljIHByaXZpbGVn ZSBmb3IgaXQuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3QzPgorICAgICAgPHRpdGxlPkNv bmZpZ3VyYXRpb248L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgT2JqZWN0LWxl dmVsIGF1ZGl0IGxvZ2dpbmcgaXMgaW1wbGVtZW50ZWQgdmlhIHRoZSByb2xlcyBzeXN0ZW0u ICBUaGUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLXBnYXVkaXQtcm9sZSI+IHNldHRp bmcgZGVmaW5lcyB0aGUgcm9sZSB0aGF0CisgICAgICAgIHdpbGwgYmUgdXNlZCBmb3IgYXVk aXQgbG9nZ2luZy4gIEFuIG9iamVjdCB3aWxsIGJlIGF1ZGl0IGxvZ2dlZCB3aGVuIHRoZQor ICAgICAgICBhdWRpdCByb2xlIGhhcyBwZXJtaXNzaW9ucyBmb3IgdGhlIGNvbW1hbmQgZXhl Y3V0ZWQgb3IgaW5oZXJpdHMgdGhlCisgICAgICAgIHBlcm1pc3Npb25zIGZyb20gYW5vdGhl ciByb2xlLiAgVGhpcyBhbGxvd3MgeW91IHRvIGVmZmVjdGl2ZWx5CisgICAgICAgIGhhdmUg bXVsdGlwbGUgYXVkaXQgcm9sZXMgZXZlbiB0aG91Z2ggdGhlcmUgaXMgYSBzaW5nbGUgbWFz dGVyIHJvbGUKKyAgICAgICAgaW4gYW55IGNvbnRleHQuCisgICAgICA8L3BhcmE+CisKKyAg ICAgIDxwYXJhPgorICAgICAgU2V0IDx4cmVmIGxpbmtlbmQ9Imd1Yy1wZ2F1ZGl0LXJvbGUi PiB0byA8bGl0ZXJhbD5hdWRpdG9yPC8+IGFuZAorICAgICAgZ3JhbnQgPGxpdGVyYWw+U0VM RUNUPC8+IGFuZCA8bGl0ZXJhbD5ERUxFVEU8Lz4gcHJpdmlsZWdlcyBvbiB0aGUKKyAgICAg IDxsaXRlcmFsPmFjY291bnQ8Lz4gdGFibGUuICBBbnkgPGxpdGVyYWw+U0VMRUNUPC8+IG9y CisgICAgICA8bGl0ZXJhbD5ERUxFVEU8Lz4gc3RhdGVtZW50cyBvbiA8bGl0ZXJhbD5hY2Nv dW50PC8+IHdpbGwgbm93IGJlCisgICAgICBsb2dnZWQ6CisgICAgICA8L3BhcmE+CisgICAg ICAKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KK3NldCBwZ19hdWRpdC5yb2xlID0gJ2F1ZGl0 b3InOworCitncmFudCBzZWxlY3QsIGRlbGV0ZQorICAgb24gcHVibGljLmFjY291bnQKKyAg IHRvIGF1ZGl0b3I7CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvc2VjdDM+CisK KyAgICA8c2VjdDM+CisgICAgICA8dGl0bGU+RXhhbXBsZTwvdGl0bGU+CisKKyAgICAgIDxw YXJhPgorICAgICAgICBJbiB0aGlzIGV4YW1wbGUgb2JqZWN0IGF1ZGl0IGxvZ2dpbmcgaXMg dXNlZCB0byBpbGx1c3RyYXRlIGhvdyBhCisgICAgICAgIGdyYW51bGFyIGFwcHJvYWNoIG1h eSBiZSB0YWtlbiB0b3dhcmRzIGxvZ2dpbmcgb2YgPGxpdGVyYWw+U0VMRUNUPC8+CisgICAg ICAgIGFuZCA8bGl0ZXJhbD5ETUw8Lz4gc3RhdGVtZW50cy4gIE5vdGUgdGhhdCBsb2dnaW5n IG9uIHRoZQorICAgICAgICA8bGl0ZXJhbD5hY2NvdW50PC8+IHRhYmxlIGlzIGNvbnRyb2xs ZWQgYnkgY29sdW1uLWxldmVsIHBlcm1pc3Npb25zLAorICAgICAgICB3aGlsZSBsb2dnaW5n IG9uIDxsaXRlcmFsPmFjY291bnRfcm9sZV9tYXA8Lz4gaXMgdGFibGUtbGV2ZWwuCisgICAg ICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBTUUw6CisgICAgICA8L3BhcmE+ CisKKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorc2V0IHBnX2F1ZGl0LnJvbGUgPSAnYXVk aXRvcic7CisKK2NyZWF0ZSB0YWJsZSBhY2NvdW50CisoCisgICAgaWQgaW50LAorICAgIG5h bWUgdGV4dCwKKyAgICBwYXNzd29yZCB0ZXh0LAorICAgIGRlc2NyaXB0aW9uIHRleHQKKyk7 CisKK2dyYW50IHNlbGVjdCAocGFzc3dvcmQpCisgICBvbiBwdWJsaWMuYWNjb3VudAorICAg dG8gYXVkaXRvcjsKKworc2VsZWN0IGlkLCBuYW1lCisgIGZyb20gYWNjb3VudDsKKworc2Vs ZWN0IHBhc3N3b3JkCisgIGZyb20gYWNjb3VudDsKKworZ3JhbnQgdXBkYXRlIChuYW1lLCBw YXNzd29yZCkKKyAgIG9uIHB1YmxpYy5hY2NvdW50CisgICB0byBhdWRpdG9yOworCit1cGRh dGUgYWNjb3VudAorICAgc2V0IGRlc2NyaXB0aW9uID0gJ3lhZGEsIHlhZGEnOworCit1cGRh dGUgYWNjb3VudAorICAgc2V0IHBhc3N3b3JkID0gJ0hBU0gyJzsKKworY3JlYXRlIHRhYmxl IGFjY291bnRfcm9sZV9tYXAKKygKKyAgICBhY2NvdW50X2lkIGludCwKKyAgICByb2xlX2lk IGludAorKTsKKworZ3JhbnQgc2VsZWN0CisgICBvbiBwdWJsaWMuYWNjb3VudF9yb2xlX21h cAorICAgdG8gYXVkaXRvcjsKKworc2VsZWN0IGFjY291bnQucGFzc3dvcmQsCisgICAgICAg YWNjb3VudF9yb2xlX21hcC5yb2xlX2lkCisgIGZyb20gYWNjb3VudAorICAgICAgIGlubmVy IGpvaW4gYWNjb3VudF9yb2xlX21hcAorICAgICAgICAgICAgb24gYWNjb3VudC5pZCA9IGFj Y291bnRfcm9sZV9tYXAuYWNjb3VudF9pZAorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgor CisgICAgICA8cGFyYT4KKyAgICAgICAgTG9nIE91dHB1dDoKKyAgICAgIDwvcGFyYT4KKwor ICAgICAgPHByb2dyYW1saXN0aW5nPgorQVVESVQ6IE9CSkVDVCwxLDEsUkVBRCxTRUxFQ1Qs VEFCTEUscHVibGljLmFjY291bnQsc2VsZWN0IHBhc3N3b3JkCisgIGZyb20gYWNjb3VudAor QVVESVQ6IE9CSkVDVCwyLDEsV1JJVEUsVVBEQVRFLFRBQkxFLHB1YmxpYy5hY2NvdW50LHVw ZGF0ZSBhY2NvdW50CisgICBzZXQgcGFzc3dvcmQgPSAnSEFTSDInCitBVURJVDogT0JKRUNU LDMsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNjb3VudCxzZWxlY3QgYWNjb3VudC5w YXNzd29yZCwKKyAgICAgICBhY2NvdW50X3JvbGVfbWFwLnJvbGVfaWQKKyAgZnJvbSBhY2Nv dW50CisgICAgICAgaW5uZXIgam9pbiBhY2NvdW50X3JvbGVfbWFwCisgICAgICAgICAgICBv biBhY2NvdW50LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lkCitBVURJVDogT0JK RUNULDMsMSxSRUFELFNFTEVDVCxUQUJMRSxwdWJsaWMuYWNjb3VudF9yb2xlX21hcCxzZWxl Y3QgYWNjb3VudC5wYXNzd29yZCwKKyAgICAgICBhY2NvdW50X3JvbGVfbWFwLnJvbGVfaWQK KyAgZnJvbSBhY2NvdW50CisgICAgICAgaW5uZXIgam9pbiBhY2NvdW50X3JvbGVfbWFwCisg ICAgICAgICAgICBvbiBhY2NvdW50LmlkID0gYWNjb3VudF9yb2xlX21hcC5hY2NvdW50X2lk CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvc2VjdDM+CisgIDwvc2VjdDI+CisK KyAgPHNlY3QyPgorICAgIDx0aXRsZT5Gb3JtYXQ8L3RpdGxlPgorCisgICAgPHBhcmE+Cisg ICAgICBBdWRpdCBlbnRyaWVzIGFyZSB3cml0dGVuIHRvIHRoZSBzdGFuZGFyZCBsb2dnaW5n IGZhY2lsaXR5IGFuZCBjb250YWluCisgICAgICB0aGUgZm9sbG93aW5nIGNvbHVtbnMgaW4g Y29tbWEtc2VwYXJhdGVkIGZvcm1hdDoKKworICAgICAgPG5vdGU+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgIE91dHB1dCBpcyBjb21wbGlhbnQgQ1NWIGZvcm1hdCBvbmx5IGlmIHRo ZSBsb2cgbGluZSBwcmVmaXggcG9ydGlvbgorICAgICAgICAgIG9mIGVhY2ggbG9nIGVudHJ5 IGlzIHJlbW92ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbm90ZT4KKworICAgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgor ICAgICAgICAgICAgPGxpdGVyYWw+QVVESVRfVFlQRTwvPiAtIDxsaXRlcmFsPlNFU1NJT048 Lz4gb3IKKyAgICAgICAgICAgIDxsaXRlcmFsPk9CSkVDVDwvPi4KKyAgICAgICAgICA8L3Bh cmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRlcmFsPlNUQVRFTUVOVF9JRDwvPiAtIFVuaXF1 ZSBzdGF0ZW1lbnQgSUQgZm9yIHRoaXMgc2Vzc2lvbi4KKyAgICAgICAgICAgIEVhY2ggc3Rh dGVtZW50IElEIHJlcHJlc2VudHMgYSBiYWNrZW5kIGNhbGwuICBTdGF0ZW1lbnQgSURzIGFy ZQorICAgICAgICAgICAgc2VxdWVudGFsIGV2ZW4gaWYgc29tZSBzdGF0ZW1lbnRzIGFyZSBu b3QgbG9nZ2VkLiAgVGhlcmUgbWF5IGJlCisgICAgICAgICAgICBtdWx0aXBsZSBlbnRyaWVz IGZvciBhIHN0YXRlbWVudCBJRCB3aGVuIG1vcmUgdGhhbiBvbmUgcmVsYXRpb24KKyAgICAg ICAgICAgIGlzIGxvZ2dlZC4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAg IDxsaXRlcmFsPlNVQlNUQVRFTUVOVF9JRDwvPiAtIFNlcXVlbnRpYWwgSUQgZm9yIGVhY2gK KyAgICAgICAgICAgIHN1YnN0YXRlbWVudCB3aXRoaW4gdGhlIG1haW4gc3RhdGVtZW50LiAg Rm9yIGV4YW1wbGUsIGNhbGxpbmcKKyAgICAgICAgICAgIGEgZnVuY3Rpb24gZnJvbSBhIHF1 ZXJ5LiAgU3Vic3RhdGVtZW50IElEcyBhcmUgY29udGludW91cworICAgICAgICAgICAgZXZl biBpZiBzb21lIHN1YnN0YXRlbWVudHMgYXJlIG5vdCBsb2dnZWQuICBUaGVyZSBtYXkgYmUg bXVsdGlwbGUKKyAgICAgICAgICAgIGVudHJpZXMgZm9yIGEgc3Vic3RhdGVtZW50IElEIHdo ZW4gbW9yZSB0aGFuIG9uZSByZWxhdGlvbiBpcyBsb2dnZWQuCisgICAgICAgICAgPC9wYXJh PgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5DTEFTUzwvPiAtIGUuZy4gKDxsaXRlcmFs PlJFQUQ8Lz4sCisgICAgICAgICAgICA8bGl0ZXJhbD5ST0xFPC8+KSAoc2VlIDx4cmVmIGxp bmtlbmQ9Imd1Yy1wZ2F1ZGl0LWxvZyI+KS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICAgIDxsaXRlcmFsPkNPTU1BTkQ8Lz4gLSBlLmcuIDxsaXRlcmFsPkFMVEVSIFRB QkxFPC8+LAorICAgICAgICAgICAgPGxpdGVyYWw+U0VMRUNUPC8+LgorICAgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAg ICAgIDxwYXJhPgorICAgICAgICAgICAgPGxpdGVyYWw+T0JKRUNUX1RZUEU8Lz4gLSA8bGl0 ZXJhbD5UQUJMRTwvPiwKKyAgICAgICAgICAgIDxsaXRlcmFsPklOREVYPC8+LCA8bGl0ZXJh bD5WSUVXPC8+LCBldGMuCisgICAgICAgICAgICBBdmFpbGFibGUgZm9yIDxsaXRlcmFsPlNF TEVDVDwvPiwgPGxpdGVyYWw+RE1MPC8+IGFuZCBtb3N0CisgICAgICAgICAgICA8bGl0ZXJh bD5EREw8Lz4gc3RhdGVtZW50cy4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlz dGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAg ICAgIDxsaXRlcmFsPk9CSkVDVF9OQU1FPC8+IC0gVGhlIGZ1bGx5LXF1YWxpZmllZCBvYmpl Y3QgbmFtZQorICAgICAgICAgICAgKGUuZy4gcHVibGljLmFjY291bnQpLiAgQXZhaWxhYmxl IGZvciA8bGl0ZXJhbD5TRUxFQ1Q8Lz4sCisgICAgICAgICAgICA8bGl0ZXJhbD5ETUw8Lz4g YW5kIG1vc3QgPGxpdGVyYWw+RERMPC8+IHN0YXRlbWVudHMuCisgICAgICAgICAgPC9wYXJh PgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5TVEFURU1FTlQ8Lz4gLSBTdGF0ZW1lbnQg ZXhlY3V0ZWQgb24gdGhlIGJhY2tlbmQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAg PHBhcmE+CisgICAgICBVc2UgPHhyZWYgbGlua2VuZD0iZ3VjLWxvZy1saW5lLXByZWZpeCI+ IHRvIGFkZCBhbnkgb3RoZXIgZmllbGRzIHRoYXQKKyAgICAgIGFyZSBuZWVkZWQgdG8gc2F0 aXNmeSB5b3VyIGF1ZGl0IGxvZyByZXF1aXJlbWVudHMuICBBIHR5cGljYWwgbG9nIGxpbmUK KyAgICAgIHByZWZpeCBtaWdodCBiZSA8bGl0ZXJhbD4nJW0gJXUgJWQ6ICc8Lz4gd2hpY2gg d291bGQgcHJvdmlkZSB0aGUgZGF0ZS90aW1lLAorICAgICAgdXNlciBuYW1lLCBhbmQgZGF0 YWJhc2UgbmFtZSBmb3IgZWFjaCBhdWRpdCBsb2cuCisgICAgPC9wYXJhPgorICA8L3NlY3Qy PgorCisgIDxzZWN0Mj4KKyAgICA8dGl0bGU+Q2F2ZWF0czwvdGl0bGU+CisgICAgCisgICAg PGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICAgT2JqZWN0IHJlbmFtZXMgYXJlIGxvZ2dlZCB1bmRlciB0aGUgbmFtZSB0aGV5IHdl cmUgcmVuYW1lZCB0by4KKyAgICAgICAgICBGb3IgZXhhbXBsZSwgcmVuYW1pbmcgYSB0YWJs ZSB3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyByZXN1bHQ6CisgICAgICAgIDwvcGFyYT4K KworICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBUQUJMRSB0ZXN0IFJFTkFNRSBU TyB0ZXN0MjsKKyAgICAgICAgICAKK0FVRElUOiBTRVNTSU9OLDM2LDEsRERMLEFMVEVSIFRB QkxFLFRBQkxFLHB1YmxpYy50ZXN0MixBTFRFUiBUQUJMRSB0ZXN0IFJFTkFNRSBUTyB0ZXN0 MgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9saXN0aXRlbT4KKworICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBdXRvdmFjdXVtIGFu ZCBBdXRvYW5hbHl6ZSBhcmUgbm90IGxvZ2dlZCwgbm9yIGFyZSB0aGV5IGludGVuZGVkIHRv IGJlLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6 ZWRsaXN0PgorICA8L3NlY3QyPgorCisgIDxzZWN0Mj4KKyAgICA8dGl0bGU+QXV0aG9yczwv dGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIEFiaGlqaXQgTWVub24tU2VuIDxlbWFpbD5h bXNAMm5kUXVhZHJhbnQuY29tPC9lbWFpbD4sIElhbiBCYXJ3aWNrIDxlbWFpbD5pYW5AMm5k UXVhZHJhbnQuY29tPC9lbWFpbD4sIGFuZCBEYXZpZCBTdGVlbGUgPGVtYWlsPmRhdmlkQHBn bWFzdGVycy5uZXQ8L2VtYWlsPi4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDI+Cis8L3NlY3Qx Pgo= --------------040505060708030700060900-- --SRrXo2mQ524p3R4Wubp19X6qQC2bcS8Hq Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJVLSwaAAoJEIA2uIJQ5SFAS64P/1T7UfOHFkAX/lZ1vRkWUNmu 8S2QmwNB0ghMpOPpX2IFuorzI9i1gCSZKYpy9DQclavCwWXMLRaOUo9Ggowza+iS rxKO5pP8NYZ2f2GDxlVCPMqZb26ln7D9mj610vqYlwGYs9remegAlUOjRnxPbf0B Q6U1TwU+99v9Us0EABsyEfGwTXhGGulAsQqLFAkvfgV8xrDd34TUX9qA9pkc7j6f /d9L4ANP3i8tE/9Q5bRYwFoBJFjrNdym9YGjujjHjyr2mkXyHJMUyQKZPsHEe2nY FoETuKK/DPE4hcnbxE3JJYn+tKcRPiKG7yKYOgjG9nNsLygfE505JlyysBBdnrNO JORfLUxOKDz+FchDLl8CzTZMkYVnHtOhrwO5g0puxp5zb3ojFauRMvVe4e7Rtldy 7bKMOcB/vio492t8eCvGcMLB8a3nJqeAecP8hrzr/rPSCrnTwOnDAo7x4JPb9XST MEZ54QWjsk0oUhL0lnm78vQ1kfrbmfBoMEkOHMFe5NycTCyVs0LkzGFPooMVrSw2 nEl32llTmpfqIKuoCOIW9zKmvjtS+cYhUqVtOiOyVYE7FnwD1M0CQslXfday5kV2 FLtKvuOUBlDzHSMB3Go7vzvMJU6XGEtjk6EF6n0LzANrhRAcYnyJWFQ+PsYRJKrV 9gW9p0dmnWBbrNs8z+/Q =fx0q -----END PGP SIGNATURE----- --SRrXo2mQ524p3R4Wubp19X6qQC2bcS8Hq--