From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 27327 invoked from network); 25 Jul 2020 08:40:54 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Jul 2020 08:40:54 -0000 Content-Type: multipart/mixed; boundary="===============8671040050312741806==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_bash=3A_stop_vendoring_patch?= To: ml@inbox.vuxu.org From: sgn Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sat, 25 Jul 2020 10:40:53 +0200 List-Id: Message-ID: <20200725084053.Oy3UNgeafPYw25zOizLFojnpcd8mRWUgLABUVRZtkqY@z> GitHub notification mails are now in MIME to allow UTF8. --===============8671040050312741806== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgc2duIGFnYWluc3QgbWFzdGVyIG9u IHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9zZ24vdm9p ZC1wYWNrYWdlcyBiYXNoLW5vLXZlbmRvcgpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYKCmJhc2g6IHN0b3AgdmVuZG9yaW5nIHBhdGNoCi0gY2Fy cnkgdGhlbSBhbG9uZyB3b24ndCBnZXQgdXMgYW55d2hlcmUNCi0gdmVyaWZ5IGNoZWNrc3VtIGZv ciBsaWJyZWFkbGluZTgNCg0KY29uZmxpY3Qgd2l0aCAjMjM4MTUgCgpBIHBhdGNoIGZpbGUgZnJv bSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMjM4MjYu cGF0Y2ggaXMgYXR0YWNoZWQ= --===============8671040050312741806== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-bash-no-vendor-23826.patch" RnJvbSA5NWJjNzU3NzFjZjQ3MmZhY2I0MjJlY2ViN2U3ZmYwMDE1MzY5MWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1B N249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogU2F0 LCAyNSBKdWwgMjAyMCAxMDoxNzowMSArMDcwMApTdWJqZWN0OiBbUEFUQ0ggMS80XSBnaXRhdHRy aWJ1dGVzOiBkb24ndCBzaG93IHdoaXRlc3BhY2UgZXJyb3Igb24gcGF0Y2hlcwoKLS0tCiAuZ2l0 YXR0cmlidXRlcyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS8uZ2l0YXR0cmlidXRlcyBiLy5naXRhdHRyaWJ1dGVzCmluZGV4IDdmMjRhOGY4MWQw Li44ZGRhZTZmY2U0NSAxMDA2NDQKLS0tIGEvLmdpdGF0dHJpYnV0ZXMKKysrIGIvLmdpdGF0dHJp YnV0ZXMKQEAgLTEsMiArMSw0IEBACiB0ZW1wbGF0ZSBsaW5ndWlzdC1sYW5ndWFnZT1iYXNoCiBj b21tb24vc2hsaWJzIG1lcmdlPXVuaW9uCisqLnBhdGNoIHdoaXRlc3BhY2U9LXNwYWNlLWJlZm9y ZS10YWIsLXRyYWlsaW5nLXNwYWNlCisqLmRpZmYgd2hpdGVzcGFjZT0tc3BhY2UtYmVmb3JlLXRh YiwtdHJhaWxpbmctc3BhY2UKCkZyb20gMWUzZDdjYmYxYzNiNDZjMWIxZjMyZTgxNGQ3Njc5YjBi NWQxMTNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xPz1DND05MG89 QzM9QTBuPTIwVHI9RTE9QkE9QTduPTIwQz1DMz1CNG5nPTIwRGFuaD89CiA8Y29uZ2RhbmhxeEBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTA6Mjg6NTcgKzA3MDAKU3ViamVjdDog W1BBVENIIDIvNF0gY2hyb290LWJhc2g6IHVwZGF0ZSB0byA1LjAuMDE4LgoKLS0tCiBzcmNwa2dz L2Nocm9vdC1iYXNoL3RlbXBsYXRlIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9vdC1iYXNoL3RlbXBsYXRlIGIvc3JjcGtncy9jaHJv b3QtYmFzaC90ZW1wbGF0ZQppbmRleCA5N2I4YTliZTgxZi4uYmQyZWFhYmRmNTIgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2hyb290LWJhc2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvb3QtYmFz aC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDkgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Nocm9vdC1i YXNoJwogcGtnbmFtZT1jaHJvb3QtYmFzaAotX2Jhc2hfZGlzdHZlcj01LjAKLV9iYXNoX3BhdGNo bGV2ZWw9MDE2CitfbWFqb3I9NQorX21pbm9yPTAKK19iYXNoX2Rpc3R2ZXI9IiR7X21ham9yfS4k e19taW5vcn0iCitfYmFzaF9wYXRjaGxldmVsPTAxOAogdmVyc2lvbj0iJHtfYmFzaF9kaXN0dmVy fS4ke19iYXNoX3BhdGNobGV2ZWx9IgogcmV2aXNpb249MQogd3Jrc3JjPSJiYXNoLSR7X2Jhc2hf ZGlzdHZlcn0iCkBAIC0xNSwxOCArMTcsNDQgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdv dHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFn ZT0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvYmFzaC5odG1sIgogZGlzdGZpbGVz PSIke0dOVV9TSVRFfS9iYXNoL2Jhc2gtJHtfYmFzaF9kaXN0dmVyfS50YXIuZ3oiCi1jaGVja3N1 bT1iNGE4MGYyYWM2NjE3MGIyOTEzZWZiZmI5ZjI1OTRmMWY3NmM3YjFhZmQxMWY3OTllMjIwMzVk NjMwNzdmYjRkCisKK191cmw9IiR7R05VX1NJVEV9L2Jhc2gvYmFzaC0ke19iYXNoX2Rpc3R2ZXJ9 LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEgLXcgMDAxICR7X2Jhc2hfcGF0Y2hsZXZlbH0pOyBk bworCWRpc3RmaWxlcys9IiAke191cmx9L2Jhc2gke19tYWpvcn0ke19taW5vcn0tJHtfcH0iCisJ c2tpcF9leHRyYWN0aW9uKz0iIGJhc2gke19tYWpvcn0ke19taW5vcn0tJHtfcH0iCitkb25lCit1 bnNldCBfdXJsCit1bnNldCBfcAorCitjaGVja3N1bT0iYjRhODBmMmFjNjYxNzBiMjkxM2VmYmZi OWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAorIGYyZmU5ZTFmMGZhZGRm MTRhYjliZmE4OGQ0NTBhNzVlNWQwMjhmZWRhZmFkMjNiODg3MTZiZDY1N2M3MzcyODkKKyA4N2U4 N2QzNTQyZTU5ODc5OWFkYjNlN2UwMWM4MTY1YmM3NDNlMTM2YTQwMGVkMGRlMDE1ODQ1ZjdmZjY4 NzA3CisgNGVlYmNkYzM3YjEzNzkzYTIzMmM1ZjJmNDk4YTVmY2JmN2RhMGVjYjNkYTIwNTkzOTFj MDk2ZGI2MjBlYzg1YgorIDE0NDQ3YWQ4MzJhZGQ4ZWNmYWZkY2U1Mzg0YmFkZDkzMzY5N2I1NTlj NDY4OGQ2YjllM2QzNmZmMzZjNjJmMDgKKyA1YmY1NGRkOWJkMmMyMTFkMmJmYjM0YTQ5ZTJjNzQx ZjJlZDVlMzM4NzY3ZTljZTlmNGQ0MTI1NGJmOWY4Mjc2CisgZDY4NTI5YTZmZjIwMWI2ZmY1OTE1 MzE4YWIxMmZjMTZiOGEwZWJiNzdmZGEzMzA4MzAzZmNjMWUxMzM5ODQyMAorIDE3YjQxZTdlZTM2 NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcwZGYxOWFmOWIKKyBl ZWM2NDU4ODYyMmE4MmE1MDI5YjI3NzZlMjE4YTc1YTM2NDBiZWY0OTUzZjA5ZDZlZTFmNDE5OTY3 MGFkN2UzCisgZWQzY2EyMTc2NzMwM2ZjM2RlOTM5MzRhYTUyNGMyZTkyMDc4N2M1MDZiNjAxY2M0 MGE0ODk3ZDRiMDk0ZDkwMworIGQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMwMjBiY2VkOGJkNTg5 ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEKKyAyYzRkZTMzMmI5MWVhZjc5N2FiYmJkNmM3OTcw OTY5MGI1Y2JkNDhiMTJlOGRmZTc0ODA5NmRiZDdiZjQ3NGVhCisgMjk0M2VlMTk2ODgwMTgyOTZm MmEwNGRiZmUzMGI3MTM4Yjg4OTcwMGVmYThmZjFjMDUyNGFmMjcxZTBlZTIzMworIGY1ZDcxNzhk OGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3ZjNmM2ViNzA5OWEK KyA1ZDZlZWU2NTE0ZWU2ZTIyYTg3YmJhOGQyMmJlMGE4NjIxYTBhZTExOTI0NmYxYzVhOWEzNWRi MWY3MmFmNTg5CisgYTUxN2RmMmRkYTkzYjI2ZDVjYmYwMGVmZmVmZWE5M2UzYTRjY2Q2NjUyZjE1 MmY0MTA5MTcwNTQ0ZWJmYTA1ZQorIGZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3 NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQKKyA0Y2YzYjlmYWZiOGE2NmQ0MTFkZDVmYzkx MjAwMzI1MzNhNDAxMmRmMWRjNmVlMDI0Yzc4MzMzNzNlMmRkYzMxCisgN2MzMTRlMzc1YTEwNWE2 NjQyZThlZDQ0ZjM4MDhiOWRlZjg5ZDE1Zjc0OTJmZTIwMjlhMjFiYTljMGRlODFkMyIKIAogYm9v dHN0cmFwPXllcwogcHJvdmlkZXM9ImJhc2gtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLWNvbmZs aWN0cz0iYmFzaD49MCBkYXNoPj0wIgorY29uZmxpY3RzPSJiYXNoPj0wIGRhc2g+PTAgYnVzeWJv eD49MCBsb2tzaD49MCBta3NoPj0wIG9rc2g+PTAgeWFzaD49MCIKIAotcHJlX2NvbmZpZ3VyZSgp IHsKLQlsb2NhbCB2ZXI9JHtfYmFzaF9kaXN0dmVyLy8uL30gcAorcG9zdF9wYXRjaCgpIHsKIAlj ZCAke3dya3NyY30KIAlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7 IGRvCi0JCW1zZ19ub3JtYWwgIiBBcHBseWluZyBwYXRjaCBiYXNoJHt2ZXJ9LSRwLlxuIgotCQlw YXRjaCAtc05wMCAtaSAke1hCUFNfU1JDUEtHRElSfS9iYXNoL2ZpbGVzL2Jhc2gke3Zlcn0tJHtw fQorCQltc2dfbm9ybWFsICIgQXBwbHlpbmcgcGF0Y2ggYmFzaCR7X21ham9yfSR7X21pbm9yfS0k cC5cbiIKKwkJcGF0Y2ggLXNOcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9L2Jhc2gtJHZlcnNpb24v YmFzaCR7X21ham9yfSR7X21pbm9yfS0ke3B9CiAJZG9uZQogfQogCgpGcm9tIGI2MjRlODZkMGNm MzJiZmU3MjNjOGZhMDM3ZTZmOTNjOTYzYjc5N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206ID0/VVRGLTg/cT89QzQ9OTBvPUMzPUEwbj0yMFRyPUUxPUJBPUE3bj0yMEM9QzM9QjRuZz0y MERhbmg/PQogPGNvbmdkYW5ocXhAZ21haWwuY29tPgpEYXRlOiBTYXQsIDI1IEp1bCAyMDIwIDE1 OjI4OjUzICswNzAwClN1YmplY3Q6IFtQQVRDSCAzLzRdIGJhc2g6IHVwZGF0ZSB0byA1LjAuMDE4 LgoKQ2xvc2U6ICMyMzgxNQotLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxICAgICAg ICAgICAgIHwgMTY3IC0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAy ICAgICAgICAgICAgIHwgMTEzIC0tLS0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MDMgICAgICAgICAgICAgfCAyMzkgLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwNCAgICAgICAgICAgICB8ICA1MyAtLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAwNSAgICAgICAgICAgICB8IDExMCAtLS0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMDYgICAgICAgICAgICAgfCAgNDcgLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jh c2g1MC0wMDcgICAgICAgICAgICAgfCAgNjIgLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA4ICAgICAgICAgICAgIHwgIDY4IC0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAwOSAgICAgICAgICAgICB8ICA0MiAtLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAx MCAgICAgICAgICAgICB8IDE3MiAtLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFz aDUwLTAxMSAgICAgICAgICAgICB8ICA1OSAtLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMTIgICAgICAgICAgICAgfCAgNjQgLS0tLS0KIHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAt MDEzICAgICAgICAgICAgIHwgIDczIC0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MTQgICAgICAgICAgICAgfCAgNTIgLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUg ICAgICAgICAgICAgfCAgNzggLS0tLS0tCiBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNiAg ICAgICAgICAgICB8ICA1OCAtLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTcgICAg ICAgICAgICAgfCAyODkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9iYXNoL2ZpbGVz L3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2ggfCAgIDcgLQogc3JjcGtncy9iYXNoL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgfCAgNDUgKysrLQogMTkgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0 aW9ucygrKSwgMTc2MiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jh c2gvZmlsZXMvYmFzaDUwLTAwMQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDAyCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1 MC0wMDMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNAog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA1CiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNwogZGVsZXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDA4CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAxMAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDExCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTIK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMwogZGVsZXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0CiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNgogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YmFzaC9maWxlcy9iYXNoNTAtMDE3CiBkZWxldGUgbW9kZSAxMDA3NTUgc3JjcGtncy9iYXNoL2Zp bGVzL3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwMSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAxCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwODdiZDgyY2Y3Mi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDEKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAot CQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1C YXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDEKLQotQnVnLVJlcG9ydGVkLWJ5 OglheGVsQGZyZWFrb3V0LmRlCi1CdWctUmVmZXJlbmNlLUlEOgk8MjAxOTAxMDgyMDUwLngwOEtv U2hTMDA2NzMxQGJvbmdvLmZyZWFrb3V0LmRlPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9s aXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTAxL21zZzAwMDc5Lmh0bWwK LQotQnVnLURlc2NyaXB0aW9uOgotCi1VbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRoZSBn bG9iIGV4cGFuc2lvbiBjb2RlIGRpZCBub3QgcmVtb3ZlCi1iYWNrc2xhc2hlcyBlc2NhcGluZyBj aGFyYWN0ZXJzIGluIGRpcmVjdG9yeSBuYW1lcyAob3IgcG9ydGlvbnMgb2YgYQotcGF0dGVybiBw cmVjZWRpbmcgYSBzbGFzaCkuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQot KioqIC4uL2Jhc2gtNS4wL2Jhc2hsaW5lLmMJMjAxOC0xMS0yNyAxMzoyMDoxNi4wMDAwMDAwMDAg LTA1MDAKLS0tLSBiYXNobGluZS5jCTIwMTktMDEtMTYgMTY6MDY6MDMuMDAwMDAwMDAwIC0wNTAw Ci0qKioqKioqKioqKioqKioKLSoqKiAyMzIsMjM1ICoqKioKLS0tLSAyMzIsMjM2IC0tLS0KLSAg c3RhdGljIGludCBiYXNoX3Bvc3NpYmxlX2NvbW1hbmRfY29tcGxldGlvbnMgX19QKChpbnQsIGlu dCkpOwotICAKLSsgc3RhdGljIGludCBjb21wbGV0aW9uX2dsb2JfcGF0dGVybiBfX1AoKGNoYXIg KikpOwotICBzdGF0aWMgY2hhciAqZ2xvYl9jb21wbGV0ZV93b3JkIF9fUCgoY29uc3QgY2hhciAq LCBpbnQpKTsKLSAgc3RhdGljIGludCBiYXNoX2dsb2JfY29tcGxldGlvbl9pbnRlcm5hbCBfX1Ao KGludCkpOwotKioqKioqKioqKioqKioqCi0qKiogMTc0MiwxNzQ2ICoqKioKLSAgICAvKiBUaGlz IGNvdWxkIGJlIGEgZ2xvYmJpbmcgcGF0dGVybiwgc28gdHJ5IHRvIGV4cGFuZCBpdCB1c2luZyBw YXRobmFtZQotICAgICAgIGV4cGFuc2lvbi4gKi8KLSEgICBpZiAoIW1hdGNoZXMgJiYgZ2xvYl9w YXR0ZXJuX3AgKHRleHQpKQotICAgICAgewotICAgICAgICBtYXRjaGVzID0gcmxfY29tcGxldGlv bl9tYXRjaGVzICh0ZXh0LCBnbG9iX2NvbXBsZXRlX3dvcmQpOwotLS0tIDE3NDMsMTc0NyAtLS0t Ci0gICAgLyogVGhpcyBjb3VsZCBiZSBhIGdsb2JiaW5nIHBhdHRlcm4sIHNvIHRyeSB0byBleHBh bmQgaXQgdXNpbmcgcGF0aG5hbWUKLSAgICAgICBleHBhbnNpb24uICovCi0hICAgaWYgKCFtYXRj aGVzICYmIGNvbXBsZXRpb25fZ2xvYl9wYXR0ZXJuICgoY2hhciAqKXRleHQpKQotICAgICAgewot ICAgICAgICBtYXRjaGVzID0gcmxfY29tcGxldGlvbl9tYXRjaGVzICh0ZXh0LCBnbG9iX2NvbXBs ZXRlX3dvcmQpOwotKioqKioqKioqKioqKioqCi0qKiogMTg1MSwxODU1ICoqKioKLSAgCX0KLSAg Ci0hICAgICAgIGdsb2JwYXQgPSBnbG9iX3BhdHRlcm5fcCAoaGludF90ZXh0KTsKLSAgCi0gICAg ICAgIC8qIElmIHRoaXMgaXMgYW4gYWJzb2x1dGUgcHJvZ3JhbSBuYW1lLCBkbyBub3QgY2hlY2sg aXQgYWdhaW5zdAotLS0tIDE4NTIsMTg1NiAtLS0tCi0gIAl9Ci0gIAotISAgICAgICBnbG9icGF0 ID0gY29tcGxldGlvbl9nbG9iX3BhdHRlcm4gKChjaGFyICopaGludF90ZXh0KTsKLSAgCi0gICAg ICAgIC8qIElmIHRoaXMgaXMgYW4gYWJzb2x1dGUgcHJvZ3JhbSBuYW1lLCBkbyBub3QgY2hlY2sg aXQgYWdhaW5zdAotKioqKioqKioqKioqKioqCi0qKiogMzcxNCwzNzE3ICoqKioKLS0tLSAzNzE1 LDM3NzMgLS0tLQotICB9Ci0gIAotKyBzdGF0aWMgaW50Ci0rIGNvbXBsZXRpb25fZ2xvYl9wYXR0 ZXJuIChzdHJpbmcpCi0rICAgICAgY2hhciAqc3RyaW5nOwotKyB7Ci0rICAgcmVnaXN0ZXIgaW50 IGM7Ci0rICAgY2hhciAqc2VuZDsKLSsgICBpbnQgb3BlbjsKLSsgCi0rICAgREVDTEFSRV9NQlNU QVRFOwotKyAKLSsgICBvcGVuID0gMDsKLSsgICBzZW5kID0gc3RyaW5nICsgc3RybGVuIChzdHJp bmcpOwotKyAKLSsgICB3aGlsZSAoYyA9ICpzdHJpbmcrKykKLSsgICAgIHsKLSsgICAgICAgc3dp dGNoIChjKQotKyAJewotKyAJY2FzZSAnPyc6Ci0rIAljYXNlICcqJzoKLSsgCSAgcmV0dXJuICgx KTsKLSsgCi0rIAljYXNlICdbJzoKLSsgCSAgb3BlbisrOwotKyAJICBjb250aW51ZTsKLSsgCi0r IAljYXNlICddJzoKLSsgCSAgaWYgKG9wZW4pCi0rIAkgICAgcmV0dXJuICgxKTsKLSsgCSAgY29u dGludWU7Ci0rIAotKyAJY2FzZSAnKyc6Ci0rIAljYXNlICdAJzoKLSsgCWNhc2UgJyEnOgotKyAJ ICBpZiAoKnN0cmluZyA9PSAnKCcpCS8qKSovCi0rIAkgICAgcmV0dXJuICgxKTsKLSsgCSAgY29u dGludWU7Ci0rIAotKyAJY2FzZSAnXFwnOgotKyAJICBpZiAoKnN0cmluZyA9PSAwKQotKyAJICAg IHJldHVybiAoMCk7CSAJICAKLSsgCX0KLSsgCi0rICAgICAgIC8qIEFkdmFuY2Ugb25lIGZld2Vy IGJ5dGUgdGhhbiBhbiBlbnRpcmUgbXVsdGlieXRlIGNoYXJhY3RlciB0bwotKyAJIGFjY291bnQg Zm9yIHRoZSBhdXRvLWluY3JlbWVudCBpbiB0aGUgbG9vcCBhYm92ZS4gKi8KLSsgI2lmZGVmIEhB TkRMRV9NVUxUSUJZVEUKLSsgICAgICAgc3RyaW5nLS07Ci0rICAgICAgIEFEVkFOQ0VfQ0hBUl9Q IChzdHJpbmcsIHNlbmQgLSBzdHJpbmcpOwotKyAgICAgICBzdHJpbmcrKzsKLSsgI2Vsc2UKLSsg ICAgICAgQURWQU5DRV9DSEFSX1AgKHN0cmluZywgc2VuZCAtIHN0cmluZyk7Ci0rICNlbmRpZgot KyAgICAgfQotKyAgIHJldHVybiAoMCk7Ci0rIH0KLSsgCi0gIHN0YXRpYyBjaGFyICpnbG9idGV4 dDsKLSAgc3RhdGljIGNoYXIgKmdsb2JvcmlnOwotKioqKioqKioqKioqKioqCi0qKiogMzg3OCwz ODgyICoqKioKLSAgICAgIH0gICAgICAKLSAgCi0hICAgaWYgKHQgJiYgZ2xvYl9wYXR0ZXJuX3Ag KHQpID09IDApCi0gICAgICBybF9leHBsaWNpdF9hcmcgPSAxOwkvKiBYWFggLSBmb3JjZSBnbG9i X2NvbXBsZXRlX3dvcmQgdG8gYXBwZW5kIGAqJyAqLwotICAgIEZSRUUgKHQpOwotLS0tIDM5MzQs MzkzOCAtLS0tCi0gICAgICB9ICAgICAgCi0gIAotISAgIGlmICh0ICYmIGNvbXBsZXRpb25fZ2xv Yl9wYXR0ZXJuICh0KSA9PSAwKQotICAgICAgcmxfZXhwbGljaXRfYXJnID0gMTsJLyogWFhYIC0g Zm9yY2UgZ2xvYl9jb21wbGV0ZV93b3JkIHRvIGFwcGVuZCBgKicgKi8KLSAgICBGUkVFICh0KTsK LSoqKiAuLi9iYXNoLTUuMC9saWIvZ2xvYi9nbG9iX2xvb3AuYwkyMDE4LTEyLTMxIDEzOjM1OjE1 LjAwMDAwMDAwMCAtMDUwMAotLS0tIGxpYi9nbG9iL2dsb2JfbG9vcC5jCTIwMTktMDEtMDkgMDk6 NDQ6MzYuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiA1NSw1OSAqKioqCi0g IAotICAgICAgICBjYXNlIEwoJ1xcJyk6Ci0tICNpZiAwCi0gIAkvKiBEb24ndCBsZXQgdGhlIHBh dHRlcm4gZW5kIGluIGEgYmFja3NsYXNoIChHTUFUQ0ggcmV0dXJucyBubyBtYXRjaAotICAJICAg aWYgdGhlIHBhdHRlcm4gZW5kcyBpbiBhIGJhY2tzbGFzaCBhbnl3YXkpLCBidXQgb3RoZXJ3aXNl IHJldHVybiAxLAotLS0tIDU1LDU4IC0tLS0KLSoqKioqKioqKioqKioqKgotKioqIDYxLDY5ICoq KioKLSAgCSAgIGFuZCBpdCBjYW4gYmUgcmVtb3ZlZC4gKi8KLSAgCXJldHVybiAoKnAgIT0gTCgn XDAnKSk7Ci0tICNlbHNlCi0tIAkvKiBUaGUgcGF0dGVybiBtYXkgbm90IGVuZCB3aXRoIGEgYmFj a3NsYXNoLiAqLwotLSAJaWYgKCpwKysgPT0gTCgnXDAnKSkKLS0gCSAgcmV0dXJuIDA7Ci0tICNl bmRpZgotICAgICAgICB9Ci0gIAotLS0tIDYwLDYzIC0tLS0KLSoqKiAuLi9iYXNoLTUuMC9wYXRj aGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxl dmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioq KgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVs IChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExF VkVMIDAKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0K LSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVy c2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEKLSAgCi0gICNlbmRp ZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAwMiBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDAyCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzZmM4MjcyZjg0YS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9i YXNoL2ZpbGVzL2Jhc2g1MC0wMDIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotCQkJ ICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09PT09PT09PT09PQotCi1CYXNo LVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDIKLQotQnVnLVJlcG9ydGVkLWJ5OglB bnRlIFBlcmljIDxzeW50aG1lYXRAZ21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPEI3RTNC NTY3LTI0NjctNEY3Qi1CNkI5LUNBNEU3NUE5QzkzRkBnbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNl LVVSTDoJaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDEv bXNnMDAwOTUuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVdoZW4gYW4gYWxpYXMgdmFsdWUg ZW5kcyB3aXRoIGFuIHVucXVvdGVkIGxpdGVyYWwgdGFiIChub3QgcGFydCBvZiBhIHF1b3RlZAot c3RyaW5nIG9yIGNvbW1lbnQpLCBhbGlhcyBleHBhbnNpb24gY2Fubm90IGNvcnJlY3RseSBkZXRl Y3QgdGhlIGVuZCBvZiB0aGUKLWFsaWFzIHZhbHVlIGFmdGVyIGV4cGFuZGluZyBpdC4KLQotUGF0 Y2ggKGFwcGx5IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAvcGFyc2VyLmgJ MjAxOC0xMi0yOCAxOToxMToxOC4wMDAwMDAwMDAgLTA1MDAKLS0tLSBwYXJzZXIuaAkyMDE5LTAx LTExIDE1OjEzOjAzLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNDgsNTEg KioqKgotLS0tIDQ4LDUyIC0tLS0KLSAgI2RlZmluZSBQU1RfUkVESVJMSVNUCTB4MDgwMDAwCS8q IHBhcnNpbmcgYSBsaXN0IG9mIHJlZGlyZWN0aW9ucyBwcmVjZWRpbmcgYSBzaW1wbGUgY29tbWFu ZCBuYW1lICovCi0gICNkZWZpbmUgUFNUX0NPTU1FTlQJMHgxMDAwMDAJLyogcGFyc2luZyBhIHNo ZWxsIGNvbW1lbnQ7IHVzZWQgYnkgYWxpYXNlcyAqLwotKyAjZGVmaW5lIFBTVF9FTkRBTElBUwkw eDIwMDAwMAkvKiBqdXN0IGZpbmlzaGVkIGV4cGFuZGluZyBhbmQgY29uc3VtaW5nIGFuIGFsaWFz ICovCi0gIAotICAvKiBEZWZpbml0aW9uIG9mIHRoZSBkZWxpbWl0ZXIgc3RhY2suICBOZWVkZWQg YnkgcGFyc2UueSBhbmQgYmFzaGhpc3QuYy4gKi8KLSoqKiAuLi9iYXNoLTUuMC9wYXJzZS55CTIw MTktMDEtMDIgMTM6NTc6MzQuMDAwMDAwMDAwIC0wNTAwCi0tLS0gcGFyc2UueQkyMDE5LTAxLTE0 IDA4OjIzOjMxLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMjU1OCwyNTY3 ICoqKioKLSAgICAgICAgcHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfRFBBUkVOICYm Ci0gICAgICAgIChwYXJzZXJfc3RhdGUgJiBQU1RfQ09NTUVOVCkgPT0gMCAmJgotICAgICAgICBz aGVsbF9pbnB1dF9saW5lX2luZGV4ID4gMCAmJgotISAgICAgICBzaGVsbF9pbnB1dF9saW5lW3No ZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJyAnICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xp bmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSAhPSAnXG4nICYmCi0gICAgICAgIHNoZWxsbWV0 YSAoc2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0g ICAgICAgIChjdXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnXCcnICYmIGN1cnJlbnRfZGVs aW1pdGVyIChkc3RhY2spICE9ICciJykpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiAnICc7CS8q IEVORF9BTElBUyAqLwotICAgICAgfQotLS0tIDI1NTgsMjU2OSAtLS0tCi0gICAgICAgIHB1c2hl ZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0gUFNIX0RQQVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0 YXRlICYgUFNUX0NPTU1FTlQpID09IDAgJiYKLSsgICAgICAgKHBhcnNlcl9zdGF0ZSAmIFBTVF9F TkRBTElBUykgPT0gMCAmJgkvKiBvbmx5IG9uY2UgKi8KLSAgICAgICAgc2hlbGxfaW5wdXRfbGlu ZV9pbmRleCA+IDAgJiYKLSEgICAgICAgc2hlbGxibGFuayAoc2hlbGxfaW5wdXRfbGluZVtzaGVs bF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAgICAgIHNoZWxsX2lucHV0X2xpbmVb c2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSAhPSAnXG4nICYmCi0gICAgICAgIHNoZWxsbWV0YSAo c2hlbGxfaW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdKSA9PSAwICYmCi0gICAg ICAgIChjdXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnXCcnICYmIGN1cnJlbnRfZGVsaW1p dGVyIChkc3RhY2spICE9ICciJykpCi0gICAgICB7Ci0rICAgICAgIHBhcnNlcl9zdGF0ZSB8PSBQ U1RfRU5EQUxJQVM7Ci0gICAgICAgIHJldHVybiAnICc7CS8qIEVORF9BTElBUyAqLwotICAgICAg fQotKioqKioqKioqKioqKioqCi0qKiogMjU3MiwyNTc1ICoqKioKLS0tLSAyNTc0LDI1NzggLS0t LQotICAgIGlmICh1YyA9PSAwICYmIHB1c2hlZF9zdHJpbmdfbGlzdCAmJiBwdXNoZWRfc3RyaW5n X2xpc3QtPmZsYWdzICE9IFBTSF9TT1VSQ0UpCi0gICAgICB7Ci0rICAgICAgIHBhcnNlcl9zdGF0 ZSAmPSB+UFNUX0VOREFMSUFTOwotICAgICAgICBwb3Bfc3RyaW5nICgpOwotICAgICAgICB1YyA9 IHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleF07Ci0qKiogLi4vYmFzaC01 LjAveS50YWIuYwkyMDE5LTAxLTAyIDEzOjU3OjQzLjAwMDAwMDAwMCAtMDUwMAotLS0tIHkudGFi LmMJMjAxOS0wMS0xNCAwODozOToyMy4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgot KioqIDQ4NzQsNDg4MyAqKioqCi0gICAgICAgIHB1c2hlZF9zdHJpbmdfbGlzdC0+ZmxhZ3MgIT0g UFNIX0RQQVJFTiAmJgotICAgICAgICAocGFyc2VyX3N0YXRlICYgUFNUX0NPTU1FTlQpID09IDAg JiYKLSAgICAgICAgc2hlbGxfaW5wdXRfbGluZV9pbmRleCA+IDAgJiYKLSEgICAgICAgc2hlbGxf aW5wdXRfbGluZVtzaGVsbF9pbnB1dF9saW5lX2luZGV4LTFdICE9ICcgJyAmJgotICAgICAgICBz aGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAg ICAgICBzaGVsbG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0x XSkgPT0gMCAmJgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAm JiBjdXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotICAgICAgICBy ZXR1cm4gJyAnOwkvKiBFTkRfQUxJQVMgKi8KLSAgICAgIH0KLS0tLSA0ODc0LDQ4ODUgLS0tLQot ICAgICAgICBwdXNoZWRfc3RyaW5nX2xpc3QtPmZsYWdzICE9IFBTSF9EUEFSRU4gJiYKLSAgICAg ICAgKHBhcnNlcl9zdGF0ZSAmIFBTVF9DT01NRU5UKSA9PSAwICYmCi0rICAgICAgIChwYXJzZXJf c3RhdGUgJiBQU1RfRU5EQUxJQVMpID09IDAgJiYJLyogb25seSBvbmNlICovCi0gICAgICAgIHNo ZWxsX2lucHV0X2xpbmVfaW5kZXggPiAwICYmCi0hICAgICAgIHNoZWxsYmxhbmsgKHNoZWxsX2lu cHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkgPT0gMCAmJgotICAgICAgICBzaGVs bF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXgtMV0gIT0gJ1xuJyAmJgotICAgICAg ICBzaGVsbG1ldGEgKHNoZWxsX2lucHV0X2xpbmVbc2hlbGxfaW5wdXRfbGluZV9pbmRleC0xXSkg PT0gMCAmJgotICAgICAgICAoY3VycmVudF9kZWxpbWl0ZXIgKGRzdGFjaykgIT0gJ1wnJyAmJiBj dXJyZW50X2RlbGltaXRlciAoZHN0YWNrKSAhPSAnIicpKQotICAgICAgewotKyAgICAgICBwYXJz ZXJfc3RhdGUgfD0gUFNUX0VOREFMSUFTOwotICAgICAgICByZXR1cm4gJyAnOwkvKiBFTkRfQUxJ QVMgKi8KLSAgICAgIH0KLSoqKioqKioqKioqKioqKgotKioqIDQ4ODgsNDg5MSAqKioqCi0tLS0g NDg5MCw0ODk0IC0tLS0KLSAgICBpZiAodWMgPT0gMCAmJiBwdXNoZWRfc3RyaW5nX2xpc3QgJiYg cHVzaGVkX3N0cmluZ19saXN0LT5mbGFncyAhPSBQU0hfU09VUkNFKQotICAgICAgewotKyAgICAg ICBwYXJzZXJfc3RhdGUgJj0gflBTVF9FTkRBTElBUzsKLSAgICAgICAgcG9wX3N0cmluZyAoKTsK LSAgICAgICAgdWMgPSBzaGVsbF9pbnB1dF9saW5lW3NoZWxsX2lucHV0X2xpbmVfaW5kZXhdOwot KioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAwMDAw MCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAwMCAt MDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3IgdG8g ZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0g IAotISAjZGVmaW5lIFBBVENITEVWRUwgMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hf ICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2 ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENI TEVWRUwgMgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9z cmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwMyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAt MDAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2U1Njc3ZTU0MC4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDMKKysrIC9kZXYvbnVsbApAQCAt MSwyMzkgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9PT09PT09 PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0wMDMKLQot QnVnLVJlcG9ydGVkLWJ5OglBbmRyZXcgQ2h1cmNoIDxhY2h1cmNoK2Jhc2hAYWNodXJjaC5vcmc+ Ci1CdWctUmVmZXJlbmNlLUlEOgk8NWM1MzRhYTIuMDQzNzFAbXNnaWQuYWNodXJjaC5vcmc+Ci1C dWctUmVmZXJlbmNlLVVSTDoJaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1i YXNoLzIwMTktMDEvbXNnMDAyNzYuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVRoZXJlIGFy ZSBzZXZlcmFsIGluY29tcGF0aWJpbGl0aWVzIGluIGhvdyBiYXNoLTUuMCBwcm9jZXNzZXMgcGF0 aG5hbWUKLWV4cGFuc2lvbiAoZ2xvYmJpbmcpIG9mIGZpbGVuYW1lIGFyZ3VtZW50cyB0aGF0IGhh dmUgYmFja3NsYXNoZXMgaW4gdGhlCi1kaXJlY3RvcnkgcG9ydGlvbi4KLQotUGF0Y2ggKGFwcGx5 IHdpdGggYHBhdGNoIC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9saWIvZ2xvYi9n bG9iX2xvb3AuYwkyMDE5LTAxLTE2IDE2OjEzOjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGxpYi9n bG9iL2dsb2JfbG9vcC5jCTIwMTktMDItMDEgMDk6NDU6MTEuMDAwMDAwMDAwIC0wNTAwCi0qKioq KioqKioqKioqKioKLSoqKiAyNywzNCAqKioqCi0gICAgcmVnaXN0ZXIgY29uc3QgR0NIQVIgKnA7 Ci0gICAgcmVnaXN0ZXIgR0NIQVIgYzsKLSEgICBpbnQgYm9wZW47Ci0gIAotICAgIHAgPSBwYXR0 ZXJuOwotISAgIGJvcGVuID0gMDsKLSAgCi0gICAgd2hpbGUgKChjID0gKnArKykgIT0gTCgnXDAn KSkKLS0tLSAyNywzNCAtLS0tCi0gICAgcmVnaXN0ZXIgY29uc3QgR0NIQVIgKnA7Ci0gICAgcmVn aXN0ZXIgR0NIQVIgYzsKLSEgICBpbnQgYm9wZW4sIGJzcXVvdGU7Ci0gIAotICAgIHAgPSBwYXR0 ZXJuOwotISAgIGJvcGVuID0gYnNxdW90ZSA9IDA7Ci0gIAotICAgIHdoaWxlICgoYyA9ICpwKysp ICE9IEwoJ1wwJykpCi0qKioqKioqKioqKioqKioKLSoqKiA1Niw2NiAqKioqCi0gICAgICAgIGNh c2UgTCgnXFwnKToKLSAgCS8qIERvbid0IGxldCB0aGUgcGF0dGVybiBlbmQgaW4gYSBiYWNrc2xh c2ggKEdNQVRDSCByZXR1cm5zIG5vIG1hdGNoCi0hIAkgICBpZiB0aGUgcGF0dGVybiBlbmRzIGlu IGEgYmFja3NsYXNoIGFueXdheSksIGJ1dCBvdGhlcndpc2UgcmV0dXJuIDEsCi0hIAkgICBzaW5j ZSB0aGUgbWF0Y2hpbmcgZW5naW5lIHVzZXMgYmFja3NsYXNoIGFzIGFuIGVzY2FwZSBjaGFyYWN0 ZXIKLSEgCSAgIGFuZCBpdCBjYW4gYmUgcmVtb3ZlZC4gKi8KLSEgCXJldHVybiAoKnAgIT0gTCgn XDAnKSk7Ci0gICAgICAgIH0KLSAgCi0hICAgcmV0dXJuIDA7Ci0gIH0KLSAgCi0tLS0gNTYsNzUg LS0tLQotICAgICAgICBjYXNlIEwoJ1xcJyk6Ci0gIAkvKiBEb24ndCBsZXQgdGhlIHBhdHRlcm4g ZW5kIGluIGEgYmFja3NsYXNoIChHTUFUQ0ggcmV0dXJucyBubyBtYXRjaAotISAJICAgaWYgdGhl IHBhdHRlcm4gZW5kcyBpbiBhIGJhY2tzbGFzaCBhbnl3YXkpLCBidXQgb3RoZXJ3aXNlIG5vdGUg dGhhdCAKLSEgCSAgIHdlIGhhdmUgc2VlbiB0aGlzLCBzaW5jZSB0aGUgbWF0Y2hpbmcgZW5naW5l IHVzZXMgYmFja3NsYXNoIGFzIGFuCi0hIAkgICBlc2NhcGUgY2hhcmFjdGVyIGFuZCBpdCBjYW4g YmUgcmVtb3ZlZC4gV2UgcmV0dXJuIDIgbGF0ZXIgaWYgd2UKLSEgCSAgIGhhdmUgc2VlbiBvbmx5 IGJhY2tzbGFzaC1lc2NhcGVkIGNoYXJhY3RlcnMsIHNvIGludGVyZXN0ZWQgY2FsbGVycwotISAJ ICAga25vdyB0aGV5IGNhbiBzaG9ydGN1dCBhbmQganVzdCBkZXF1b3RlIHRoZSBwYXRobmFtZS4g Ki8KLSEgCWlmICgqcCAhPSBMKCdcMCcpKQotISAJICB7Ci0hIAkgICAgcCsrOwotISAJICAgIGJz cXVvdGUgPSAxOwotISAJICAgIGNvbnRpbnVlOwotISAJICB9Ci0hIAllbHNlIAkvKiAoKnAgPT0g TCgnXDAnKSkgKi8KLSEgCSAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgCi0hICAgcmV0dXJuIGJz cXVvdGUgPyAyIDogMDsKLSAgfQotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9nbG9i L2dsb2IuaAkyMDEzLTEwLTI4IDE0OjQ2OjEyLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9nbG9i L2dsb2IuaAkyMDE5LTAzLTA3IDExOjA2OjQ3LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioq KioqCi0qKiogMzEsMzQgKioqKgotLS0tIDMxLDM1IC0tLS0KLSAgI2RlZmluZSBHWF9BRERDVVJE SVIJMHgyMDAJLyogaW50ZXJuYWwgLS0gYWRkIHBhc3NlZCBkaXJlY3RvcnkgbmFtZSAqLwotICAj ZGVmaW5lIEdYX0dMT0JTVEFSCTB4NDAwCS8qIHR1cm4gb24gc3BlY2lhbCBoYW5kbGluZyBvZiAq KiAqLwotKyAjZGVmaW5lIEdYX1JFQ1VSU0UJMHg4MDAJLyogaW50ZXJuYWwgLS0gZ2xvYl9maWxl bmFtZSBjYWxsZWQgcmVjdXJzaXZlbHkgKi8KLSAgCi0gIGV4dGVybiBpbnQgZ2xvYl9wYXR0ZXJu X3AgX19QKChjb25zdCBjaGFyICopKTsKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9nbG9i L2dsb2IuYwkyMDE4LTA5LTIwIDEwOjUzOjIzLjAwMDAwMDAwMCAtMDQwMAotLS0tIGxpYi9nbG9i L2dsb2IuYwkyMDE5LTAzLTA3IDE0OjIzOjQzLjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioq KioqCi0qKiogMTA2MiwxMDY2ICoqKioKLSAgICB1bnNpZ25lZCBpbnQgZGlyZWN0b3J5X2xlbjsK LSAgICBpbnQgZnJlZV9kaXJuYW1lOwkJCS8qIGZsYWcgKi8KLSEgICBpbnQgZGZsYWdzOwotICAK LSAgICByZXN1bHQgPSAoY2hhciAqKikgbWFsbG9jIChzaXplb2YgKGNoYXIgKikpOwotLS0tIDEw NzgsMTA4MiAtLS0tCi0gICAgdW5zaWduZWQgaW50IGRpcmVjdG9yeV9sZW47Ci0gICAgaW50IGZy ZWVfZGlybmFtZTsJCQkvKiBmbGFnICovCi0hICAgaW50IGRmbGFncywgaGFzZ2xvYjsKLSAgCi0g ICAgcmVzdWx0ID0gKGNoYXIgKiopIG1hbGxvYyAoc2l6ZW9mIChjaGFyICopKTsKLSoqKioqKioq KioqKioqKgotKioqIDExMTEsMTExNyAqKioqCi0gICAgICB9Ci0gIAotICAgIC8qIElmIGRpcmVj dG9yeV9uYW1lIGNvbnRhaW5zIGdsb2JiaW5nIGNoYXJhY3RlcnMsIHRoZW4gd2UKLSEgICAgICBo YXZlIHRvIGV4cGFuZCB0aGUgcHJldmlvdXMgbGV2ZWxzLiAgSnVzdCByZWN1cnNlLiAqLwotISAg IGlmIChkaXJlY3RvcnlfbGVuID4gMCAmJiBnbG9iX3BhdHRlcm5fcCAoZGlyZWN0b3J5X25hbWUp KQotICAgICAgewotICAgICAgICBjaGFyICoqZGlyZWN0b3JpZXMsICpkLCAqcDsKLS0tLSAxMTI3 LDExMzYgLS0tLQotICAgICAgfQotICAKLSsgICBoYXNnbG9iID0gMDsKLSAgICAvKiBJZiBkaXJl Y3RvcnlfbmFtZSBjb250YWlucyBnbG9iYmluZyBjaGFyYWN0ZXJzLCB0aGVuIHdlCi0hICAgICAg aGF2ZSB0byBleHBhbmQgdGhlIHByZXZpb3VzIGxldmVscy4gIEp1c3QgcmVjdXJzZS4KLSEgICAg ICBJZiBnbG9iX3BhdHRlcm5fcCByZXR1cm5zICE9IFswLDFdIHdlIGhhdmUgYSBwYXR0ZXJuIHRo YXQgaGFzIGJhY2tzbGFzaAotISAgICAgIHF1b3RlcyBidXQgbm8gdW5xdW90ZWQgZ2xvYiBwYXR0 ZXJuIGNoYXJhY3RlcnMuIFdlIGRlcXVvdGUgaXQgYmVsb3cuICovCi0hICAgaWYgKGRpcmVjdG9y eV9sZW4gPiAwICYmIChoYXNnbG9iID0gZ2xvYl9wYXR0ZXJuX3AgKGRpcmVjdG9yeV9uYW1lKSkg PT0gMSkKLSAgICAgIHsKLSAgICAgICAgY2hhciAqKmRpcmVjdG9yaWVzLCAqZCwgKnA7Ci0qKioq KioqKioqKioqKioKLSoqKiAxMTc2LDExODAgKioqKgotICAJZFtkaXJlY3RvcnlfbGVuIC0gMV0g PSAnXDAnOwotICAKLSEgICAgICAgZGlyZWN0b3JpZXMgPSBnbG9iX2ZpbGVuYW1lIChkLCBkZmxh Z3MpOwotICAKLSAgICAgICAgaWYgKGZyZWVfZGlybmFtZSkKLS0tLSAxMTk1LDExOTkgLS0tLQot ICAJZFtkaXJlY3RvcnlfbGVuIC0gMV0gPSAnXDAnOwotICAKLSEgICAgICAgZGlyZWN0b3JpZXMg PSBnbG9iX2ZpbGVuYW1lIChkLCBkZmxhZ3N8R1hfUkVDVVJTRSk7Ci0gIAotICAgICAgICBpZiAo ZnJlZV9kaXJuYW1lKQotKioqKioqKioqKioqKioqCi0qKiogMTMzMywxMzM2ICoqKioKLS0tLSAx MzUyLDEzNjkgLS0tLQotICAJICByZXR1cm4gKE5VTEwpOwotICAJfQotKyAgICAgICAvKiBJZiB3 ZSBoYXZlIGEgZGlyZWN0b3J5IG5hbWUgd2l0aCBxdW90ZWQgY2hhcmFjdGVycywgYW5kIHdlIGFy ZQotKyAJIGJlaW5nIGNhbGxlZCByZWN1cnNpdmVseSB0byBnbG9iIHRoZSBkaXJlY3RvcnkgcG9y dGlvbiBvZiBhIHBhdGhuYW1lLAotKyAJIHdlIG5lZWQgdG8gZGVxdW90ZSB0aGUgZGlyZWN0b3J5 IG5hbWUgYmVmb3JlIHJldHVybmluZyBpdCBzbyB0aGUKLSsgCSBjYWxsZXIgY2FuIHJlYWQgdGhl IGRpcmVjdG9yeSAqLwotKyAgICAgICBpZiAoZGlyZWN0b3J5X2xlbiA+IDAgJiYgaGFzZ2xvYiA9 PSAyICYmIChmbGFncyAmIEdYX1JFQ1VSU0UpICE9IDApCi0rIAl7Ci0rIAkgIGRlcXVvdGVfcGF0 aG5hbWUgKGRpcmVjdG9yeV9uYW1lKTsKLSsgCSAgZGlyZWN0b3J5X2xlbiA9IHN0cmxlbiAoZGly ZWN0b3J5X25hbWUpOwotKyAJfQotKyAKLSsgICAgICAgLyogV2UgY291bGQgY2hlY2sgd2hldGhl ciBvciBub3QgdGhlIGRlcXVvdGVkIGRpcmVjdG9yeV9uYW1lIGlzIGEKLSsgCSBkaXJlY3Rvcnkg YW5kIHJldHVybiBpdCBoZXJlLCByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIGRpcmVjdG9yeV9uYW1l Ci0rIAkgaWYgbm90LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCB5ZXQuIEknbSBub3Qgc3VyZSBpdCBt YXR0ZXJzLiAqLwotKyAKLSAgICAgICAgLyogSGFuZGxlIEdYX01BUktESVJTIGhlcmUuICovCi0g ICAgICAgIHJlc3VsdFswXSA9IChjaGFyICopIG1hbGxvYyAoZGlyZWN0b3J5X2xlbiArIDEpOwot KioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvcGF0aGV4cC5jCTIwMTgtMDQtMjkgMTc6NDQ6NDguMDAw MDAwMDAwIC0wNDAwCi0tLS0gcGF0aGV4cC5jCTIwMTktMDEtMzEgMjA6MTk6NDEuMDAwMDAwMDAw IC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiA2Niw3NCAqKioqCi0gICAgcmVnaXN0ZXIgaW50 IGM7Ci0gICAgY2hhciAqc2VuZDsKLSEgICBpbnQgb3BlbjsKLSAgCi0gICAgREVDTEFSRV9NQlNU QVRFOwotICAKLSEgICBvcGVuID0gMDsKLSAgICBzZW5kID0gc3RyaW5nICsgc3RybGVuIChzdHJp bmcpOwotICAKLS0tLSA2Niw3NCAtLS0tCi0gICAgcmVnaXN0ZXIgaW50IGM7Ci0gICAgY2hhciAq c2VuZDsKLSEgICBpbnQgb3BlbiwgYnNxdW90ZTsKLSAgCi0gICAgREVDTEFSRV9NQlNUQVRFOwot ICAKLSEgICBvcGVuID0gYnNxdW90ZSA9IDA7Ci0gICAgc2VuZCA9IHN0cmluZyArIHN0cmxlbiAo c3RyaW5nKTsKLSAgCi0qKioqKioqKioqKioqKioKLSoqKiAxMDEsMTA1ICoqKioKLSAgCSAgIGds b2JiaW5nLiAqLwotICAJY2FzZSAnXFwnOgotISAJICByZXR1cm4gKCpzdHJpbmcgIT0gMCk7Ci0g IAkgCSAgCi0gIAljYXNlIENUTEVTQzoKLS0tLSAxMDEsMTEyIC0tLS0KLSAgCSAgIGdsb2JiaW5n LiAqLwotICAJY2FzZSAnXFwnOgotISAJICBpZiAoKnN0cmluZyAhPSAnXDAnICYmICpzdHJpbmcg IT0gJy8nKQotISAJICAgIHsKLSEgCSAgICAgIGJzcXVvdGUgPSAxOwotISAJICAgICAgc3RyaW5n Kys7Ci0hIAkgICAgICBjb250aW51ZTsKLSEgCSAgICB9Ci0hIAkgIGVsc2UgaWYgKCpzdHJpbmcg PT0gMCkKLSEgCSAgICByZXR1cm4gKDApOwotICAJIAkgIAotICAJY2FzZSBDVExFU0M6Ci0qKioq KioqKioqKioqKioKLSoqKiAxMTgsMTIyICoqKioKLSAgI2VuZGlmCi0gICAgICB9Ci0hICAgcmV0 dXJuICgwKTsKLSAgfQotICAKLS0tLSAxMjUsMTMwIC0tLS0KLSAgI2VuZGlmCi0gICAgICB9Ci0h IAotISAgIHJldHVybiAoYnNxdW90ZSA/IDIgOiAwKTsKLSAgfQotICAKLSoqKiAuLi9iYXNoLTUu MC1wYXRjaGVkL2Jhc2hsaW5lLmMJMjAxOS0wMS0xNiAxNjoxMzoyMS4wMDAwMDAwMDAgLTA1MDAK LS0tLSBiYXNobGluZS5jCTIwMTktMDItMjIgMDk6Mjk6MDguMDAwMDAwMDAwIC0wNTAwCi0qKioq KioqKioqKioqKioKLSoqKiAzNzUzLDM3NTcgKioqKgotICAKLSAgCWNhc2UgJ1xcJzoKLSEgCSAg aWYgKCpzdHJpbmcgPT0gMCkKLSAgCSAgICByZXR1cm4gKDApOwkgCSAgCi0gIAl9Ci0tLS0gMzc2 NiwzNzcwIC0tLS0KLSAgCi0gIAljYXNlICdcXCc6Ci0hIAkgIGlmICgqc3RyaW5nKysgPT0gMCkK LSAgCSAgICByZXR1cm4gKDApOwkgCSAgCi0gIAl9Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZl bC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5o CTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoq KiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9y IHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAy Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAg IGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24g c3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAzCi0gIAotICAjZW5kaWYgLyog X1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAt MDA0IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGZlM2M3NjRiZDZjLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmls ZXMvYmFzaDUwLTAwNAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQkJCSAgICAgQkFT SCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFzaC1SZWxlYXNl Ogk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA0Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJRGFuaWVsIEth aG4gR2lsbG1vciA8ZGtnQGZpZnRoaG9yc2VtYW4ubmV0PgotQnVnLVJlZmVyZW5jZS1JRDoJPDg3 bGcwZzhhaXcuZnNmQGZpZnRoaG9yc2VtYW4ubmV0PgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6 Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTA0L21zZzAwMDc2Lmh0 bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1JbiBiYXNoLTUuMCwgdGhlIGB3YWl0JyBidWlsdGlu IHdpdGhvdXQgYXJndW1lbnRzIHdhaXRzIGZvciBhbGwgY2hpbGRyZW4gb2YgdGhlCi1zaGVsbC4g VGhpcyBpbmNsdWRlcyBjaGlsZHJlbiBpdCBgaW5oZXJpdGVkJyBhdCBzaGVsbCBpbnZvY2F0aW9u IHRpbWUuIFRoaXMKLXBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciB0byBub3Qgd2FpdCBmb3Ig dGhlc2UgaW5oZXJpdGVkIGNoaWxkcmVuLCBzb21lCi1vZiB3aGljaCBtaWdodCBiZSBsb25nLWxp dmVkLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUu MC1wYXRjaGVkL2pvYnMuYwkyMDE4LTEyLTA2IDExOjQ0OjM0LjAwMDAwMDAwMCAtMDUwMAotLS0t IGpvYnMuYwkyMDE5LTA0LTEyIDE1OjE1OjEwLjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioq KioqCi0qKiogMjQ4OSwyNDk2ICoqKioKLSAgICB3YWl0X3Byb2NzdWJzICgpOwotICAgIHJlYXBf cHJvY3N1YnMgKCk7Ci0hICNpZiAxCi0gICAgLyogV2UgZG9uJ3Qgd2FudCB0byB3YWl0IGluZGVm aW5pdGVseSBpZiB3ZSBoYXZlIHN0b3BwZWQgY2hpbGRyZW4uICovCi0tICAgLyogWFhYIC0gc2hv dWxkIGFkZCBhIGxvb3AgdGhhdCBnb2VzIHRocm91Z2ggdGhlIGxpc3Qgb2YgcHJvY2VzcwotLSAg ICAgIHN1YnN0aXR1dGlvbnMgYW5kIHdhaXRzIGZvciBlYWNoIHByb2MgaW4gdHVybiBiZWZvcmUg dGhpcyBjb2RlLiAqLwotICAgIGlmIChhbnlfc3RvcHBlZCA9PSAwKQotICAgICAgewotLS0tIDI0 OTAsMjQ5NSAtLS0tCi0gICAgd2FpdF9wcm9jc3VicyAoKTsKLSAgICByZWFwX3Byb2NzdWJzICgp OwotISAjaWYgMAotICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gd2FpdCBpbmRlZmluaXRlbHkgaWYg d2UgaGF2ZSBzdG9wcGVkIGNoaWxkcmVuLiAqLwotICAgIGlmIChhbnlfc3RvcHBlZCA9PSAwKQot ICAgICAgewotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAz LjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAw MDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29r cyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmlu ZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMwotICAKLSAgI2VuZGlmIC8qIF9QQVRD SExFVkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUg cGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVm aW5lIFBBVENITEVWRUwgNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYg LS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNSBiL3NyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDA1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjFjZDc1YjBiNi4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDUKKysrIC9kZXYv bnVsbApAQCAtMSwxMTAgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAg ICA9PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1 MC0wMDUKLQotQnVnLVJlcG9ydGVkLWJ5OglCcmFkIFNwZW5jZXIgPGJzcGVuY2VyQGJsYWNrYmVy cnkuY29tPgotQnVnLVJlZmVyZW5jZS1JRDoJPDFiOTkzZmYyLWNlNGYtNjYyYS02YmU0LTM5MzQ1 NzM2MmU0N0BibGFja2JlcnJ5LmNvbT4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglodHRwOi8vbGlzdHMu Z251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWJhc2gvMjAxOS0wMS9tc2cwMDI1MC5odG1sCi0KLUJ1 Zy1EZXNjcmlwdGlvbjoKLQotSW4gY2VydGFpbiBjYXNlcywgYmFzaCBvcHRpbWl6ZXMgb3V0IGEg Zm9yaygpIGNhbGwgdG9vIGVhcmx5IGFuZCBwcmV2ZW50cwotdHJhcHMgZnJvbSBydW5uaW5nLgot Ci1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRj aGVkL2NvbW1hbmQuaAkyMDE4LTA3LTIwIDIxOjE2OjMxLjAwMDAwMDAwMCAtMDQwMAotLS0tIGNv bW1hbmQuaAkyMDE5LTAyLTIwIDExOjA5OjM2LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioq KioqCi0qKiogMTg3LDE5MCAqKioqCi0tLS0gMTg4LDE5MiAtLS0tCi0gICNkZWZpbmUgQ01EX0xB U1RQSVBFCSAgICAweDIwMDAKLSAgI2RlZmluZSBDTURfU1REUEFUSAkgICAgMHg0MDAwCS8qIHVz ZSBzdGFuZGFyZCBwYXRoIGZvciBjb21tYW5kIGxvb2t1cCAqLwotKyAjZGVmaW5lIENNRF9UUllf T1BUSU1JWklORyAgMHg4MDAwCS8qIHRyeSB0byBvcHRpbWl6ZSB0aGlzIHNpbXBsZSBjb21tYW5k ICovCi0gIAotICAvKiBXaGF0IGEgY29tbWFuZCBsb29rcyBsaWtlLiAqLwotKioqIC4uL2Jhc2gt NS4wLXBhdGNoZWQvYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTgtMTItMjYgMTE6MTk6MjEuMDAw MDAwMDAwIC0wNTAwCi0tLS0gYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTktMDEtMjkgMTQ6MTU6 MTkuMDAwMDAwMDAwIC0wNTAwCi0qKioqKioqKioqKioqKioKLSoqKiAxMDEsMTA0ICoqKioKLS0t LSAxMDEsMTEzIC0tLS0KLSAgfQotICAKLSsgaW50Ci0rIGNhbl9vcHRpbWl6ZV9jb25uZWN0aW9u IChjb21tYW5kKQotKyAgICAgIENPTU1BTkQgKmNvbW1hbmQ7Ci0rIHsKLSsgICByZXR1cm4gKCpi YXNoX2lucHV0LmxvY2F0aW9uLnN0cmluZyA9PSAnXDAnICYmCi0rIAkgIChjb21tYW5kLT52YWx1 ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gQU5EX0FORCB8fCBjb21tYW5kLT52YWx1ZS5Db25u ZWN0aW9uLT5jb25uZWN0b3IgPT0gT1JfT1IgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+ Y29ubmVjdG9yID09ICc7JykgJiYKLSsgCSAgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vj b25kLT50eXBlID09IGNtX3NpbXBsZSk7Ci0rIH0KLSsgCi0gIHZvaWQKLSAgb3B0aW1pemVfZm9y ayAoY29tbWFuZCkKLSoqKioqKioqKioqKioqKgotKioqIDEwNiwxMTAgKioqKgotICB7Ci0gICAg aWYgKGNvbW1hbmQtPnR5cGUgPT0gY21fY29ubmVjdGlvbiAmJgotISAgICAgICAoY29tbWFuZC0+ dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IEFORF9BTkQgfHwgY29tbWFuZC0+dmFsdWUu Q29ubmVjdGlvbi0+Y29ubmVjdG9yID09IE9SX09SKSAmJgotICAgICAgICBzaG91bGRfc3VwcHJl c3NfZm9yayAoY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kKSkKLSAgICAgIHsKLS0t LSAxMTUsMTIwIC0tLS0KLSAgewotICAgIGlmIChjb21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rp b24gJiYKLSEgICAgICAgKGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBB TkRfQU5EIHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSBPUl9PUiB8 fCBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5jb25uZWN0b3IgPT0gJzsnKSAmJgotISAgICAg ICAoY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+c2Vjb25kLT5mbGFncyAmIENNRF9UUllfT1BU SU1JWklORykgJiYKLSAgICAgICAgc2hvdWxkX3N1cHByZXNzX2ZvcmsgKGNvbW1hbmQtPnZhbHVl LkNvbm5lY3Rpb24tPnNlY29uZCkpCi0gICAgICB7Ci0qKioqKioqKioqKioqKioKLSoqKiA0MTMs NDE4ICoqKioKLSAgCQkgIGNvbW1hbmQtPnZhbHVlLlNpbXBsZS0+ZmxhZ3MgfD0gQ01EX05PX0ZP Uks7Ci0gIAkJfQotISAJICAgICAgZWxzZSBpZiAoY29tbWFuZC0+dHlwZSA9PSBjbV9jb25uZWN0 aW9uKQotISAJCW9wdGltaXplX2ZvcmsgKGNvbW1hbmQpOwotICAjZW5kaWYgLyogT05FU0hPVCAq LwotICAKLS0tLSA0MjMsNDM4IC0tLS0KLSAgCQkgIGNvbW1hbmQtPnZhbHVlLlNpbXBsZS0+Zmxh Z3MgfD0gQ01EX05PX0ZPUks7Ci0gIAkJfQotISAKLSEgCSAgICAgIC8qIENhbid0IG9wdGltaXpl IGZvcmtzIG91dCBoZXJlIGV4ZWNlcHQgZm9yIHNpbXBsZSBjb21tYW5kcy4KLSEgCQkgVGhpcyBr bm93cyB0aGF0IHRoZSBwYXJzZXIgc2V0cyB1cCBjb21tYW5kcyBhcyBsZWZ0LXNpZGUgaGVhdnkK LSEgCQkgKCYmIGFuZCB8fCBhcmUgbGVmdC1hc3NvY2lhdGl2ZSkgYW5kIGFmdGVyIHRoZSBzaW5n bGUgcGFyc2UsCi0hIAkJIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kIHN0cmlu ZywgdGhlIGxhc3QgaW4gYQotISAJCSBzZXJpZXMgb2YgY29ubmVjdGlvbiBjb21tYW5kcyBpcwot ISAJCSBjb21tYW5kLT52YWx1ZS5Db25uZWN0aW9uLT5zZWNvbmQuICovCi0hIAkgICAgICBlbHNl IGlmIChjb21tYW5kLT50eXBlID09IGNtX2Nvbm5lY3Rpb24gJiYgY2FuX29wdGltaXplX2Nvbm5l Y3Rpb24gKGNvbW1hbmQpKQotISAJCXsKLSEgCQkgIGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24t PnNlY29uZC0+ZmxhZ3MgfD0gQ01EX1RSWV9PUFRJTUlaSU5HOwotISAJCSAgY29tbWFuZC0+dmFs dWUuQ29ubmVjdGlvbi0+c2Vjb25kLT52YWx1ZS5TaW1wbGUtPmZsYWdzIHw9IENNRF9UUllfT1BU SU1JWklORzsKLSEgCQl9Ci0gICNlbmRpZiAvKiBPTkVTSE9UICovCi0gIAotKioqIC4uL2Jhc2gt NS4wLXBhdGNoZWQvZXhlY3V0ZV9jbWQuYwkyMDE4LTEyLTA1IDA5OjA1OjE0LjAwMDAwMDAwMCAt MDUwMAotLS0tIGV4ZWN1dGVfY21kLmMJMjAxOS0wMS0yNSAxNTo1OTowMC4wMDAwMDAwMDAgLTA1 MDAKLSoqKioqKioqKioqKioqKgotKioqIDI3NjgsMjc3MSAqKioqCi0tLS0gMjc2OCwyNzczIC0t LS0KLSAgCSAgIChleGVjX3Jlc3VsdCAhPSBFWEVDVVRJT05fU1VDQ0VTUykpKQotICAJewotKyAJ ICBvcHRpbWl6ZV9mb3JrIChjb21tYW5kKTsKLSsgCi0gIAkgIHNlY29uZCA9IGNvbW1hbmQtPnZh bHVlLkNvbm5lY3Rpb24tPnNlY29uZDsKLSAgCSAgaWYgKGlnbm9yZV9yZXR1cm4gJiYgc2Vjb25k KQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAw MDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAw MCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3Ig dG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICov Ci0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVM X0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2gg bGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBB VENITEVWRUwgNQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQg YS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwNiBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWQxY2QyMDA5MC4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDYKKysrIC9kZXYvbnVsbApA QCAtMSw0NyArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09 PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwNgot Ci1CdWctUmVwb3J0ZWQtYnk6CVRvbWFzIE1vemVzIDxoeWRyYXBvbGljQGdtYWlsLmNvbT4KLUJ1 Zy1SZWZlcmVuY2UtSUQ6CTxDQUc2TUF6UXVtTFUydmhubXIxVXJZQVVRQUZXNVlvOGhmTV9zRWli WDlSSlFXSmtSckFAbWFpbC5nbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cDovL2xp c3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDMvbXNnMDAwMzcuaHRtbAot Ci1CdWctRGVzY3JpcHRpb246Ci0KLUJhc2gtNS4wIGRpZCBub3QgYnVpbGQgc3VjY2Vzc2Z1bGx5 IGlmIFNZU0xPR19ISVNUT1JZIHdhcyBkZWZpbmVkIHdpdGhvdXQKLWFsc28gZGVmaW5pbmcgU1lT TE9HX1NIT1BULgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9i YXNoLTUuMC1wYXRjaGVkL2J1aWx0aW5zL3Nob3B0LmRlZgkyMDE4LTEwLTA1IDE0OjQ5OjAyLjAw MDAwMDAwMCAtMDQwMAotLS0tIGJ1aWx0aW5zL3Nob3B0LmRlZgkyMDE5LTAxLTIzIDA5OjU1OjIy LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogMTIzLDEyNyAqKioqCi0gICNl bmRpZgotICAKLSEgI2lmIGRlZmluZWQgKFNZU0xPR19ISVNUT1JZKSAmJiBkZWZpbmVkIChTWVNM T0dfU0hPUFQpCi0gIGV4dGVybiBpbnQgc3lzbG9nX2hpc3Rvcnk7Ci0gICNlbmRpZgotLS0tIDEy MywxMjcgLS0tLQotICAjZW5kaWYKLSAgCi0hICNpZiBkZWZpbmVkIChTWVNMT0dfSElTVE9SWSkK LSAgZXh0ZXJuIGludCBzeXNsb2dfaGlzdG9yeTsKLSAgI2VuZGlmCi0qKiogLi4vYmFzaC01LjAv cGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0 Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioq KioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBs ZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFU Q0hMRVZFTCA1Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAt LS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2Nz IHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA2Ci0gIAotICAj ZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDA3IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDcKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGI5ZWI0MTUwYTJiLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwNworKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLQkJ CSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFz aC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA3Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJ R3Jpc2hhIExldml0IDxncmlzaGFsZXZpdEBnbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8 Q0FNdT1Ccm9IYXBHMUFTM3hCNVNRYUNYMlhLdT0tRTJPYjl1VzZMTnVIdmQ9WW9ockR3QG1haWwu Z21haWwuY29tPgotQnVnLVJlZmVyZW5jZS1VUkw6CWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hp dmUvaHRtbC9idWctYmFzaC8yMDE5LTAyL21zZzAwMDY3Lmh0bWwKLQotQnVnLURlc2NyaXB0aW9u OgotCi1SdW5uaW5nIGBleGVjJyB3aGVuIGpvYiBjb250cm9sIHdhcyBkaXNhYmxlZCwgZXZlbiB0 ZW1wb3JhcmlseSwgYnV0IGFmdGVyIGl0Ci1oYWQgYmVlbiBpbml0aWFsaXplZCwgY291bGQgbGVh dmUgdGhlIHRlcm1pbmFsIGluIHRoZSB3cm9uZyBwcm9jZXNzIGdyb3VwIGZvcgotdGhlIGV4ZWN1 dGVkIHByb2Nlc3MuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4u L2Jhc2gtNS4wLXBhdGNoZWQvam9icy5jCTIwMTgtMTItMDYgMTE6NDQ6MzQuMDAwMDAwMDAwIC0w NTAwCi0tLS0gam9icy5jCTIwMTktMDQtMTIgMTU6MTU6MTAuMDAwMDAwMDAwIC0wNDAwCi0qKioq KioqKioqKioqKioKLSoqKiA0ODM4LDQ4NTAgKioqKgotICB7Ci0gICAgaWYgKGpvYl9jb250cm9s KQotISAgICAgewotISAgICAgICB0ZXJtaW5hdGVfc3RvcHBlZF9qb2JzICgpOwotICAKLSEgICAg ICAgaWYgKG9yaWdpbmFsX3BncnAgPj0gMCkKLSEgCWdpdmVfdGVybWluYWxfdG8gKG9yaWdpbmFs X3BncnAsIDEpOwotISAgICAgfQotICAKLSEgICBpZiAob3JpZ2luYWxfcGdycCA+PSAwKQotISAg ICAgc2V0cGdpZCAoMCwgb3JpZ2luYWxfcGdycCk7Ci0gIH0KLSAgCi0tLS0gNDgzOCw0ODQ4IC0t LS0KLSAgewotICAgIGlmIChqb2JfY29udHJvbCkKLSEgICAgIHRlcm1pbmF0ZV9zdG9wcGVkX2pv YnMgKCk7Ci0gIAotISAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDAgJiYgdGVybWluYWxfcGdycCAh PSBvcmlnaW5hbF9wZ3JwKQotISAgICAgZ2l2ZV90ZXJtaW5hbF90byAob3JpZ2luYWxfcGdycCwg MSk7Ci0gIAotISAgIGlmIChvcmlnaW5hbF9wZ3JwID49IDAgJiYgc2V0cGdpZCAoMCwgb3JpZ2lu YWxfcGdycCkgPT0gMCkKLSEgICAgIHNoZWxsX3BncnAgPSBvcmlnaW5hbF9wZ3JwOwotICB9Ci0g IAotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0OjUxOjAzLjAwMDAw MDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAxOjI4LjAwMDAwMDAw MCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAgICBsb29rcyBmb3Ig dG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICov Ci0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgNgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVM X0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2gg bGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBB VENITEVWRUwgNwotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQg YS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAwOCBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDA4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDlkNmIzM2FjNy4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDgKKysrIC9kZXYvbnVsbApA QCAtMSw2OCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09 PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAwOAot Ci1CdWctUmVwb3J0ZWQtYnk6CU1pY2hhZWwgQWxiaW51cyA8bWljaGFlbC5hbGJpbnVzQGdteC5k ZT4KLUJ1Zy1SZWZlcmVuY2UtSUQ6CTw4N2JtMzZrM2t6LmZzZkBnbXguZGU+Ci1CdWctUmVmZXJl bmNlLVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5 LTAyL21zZzAwMTExLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1XaGVuIEhJU1RTSVpFIGlz IHNldCB0byAwLCBoaXN0b3J5IGV4cGFuc2lvbiBjYW4gbGVhdmUgdGhlIGhpc3RvcnkgbGVuZ3Ro Ci1zZXQgdG8gYW4gaW5jb3JyZWN0IHZhbHVlLCBsZWFkaW5nIHRvIHN1YnNlcXVlbnQgYXR0ZW1w dHMgdG8gYWNjZXNzIGludmFsaWQKLW1lbW9yeS4KLQotUGF0Y2ggKGFwcGx5IHdpdGggYHBhdGNo IC1wMCcpOgotCi0qKiogLi4vYmFzaC01LjAtcGF0Y2hlZC9iYXNoaGlzdC5jCTIwMTgtMDctMDUg MjI6NDE6MTQuMDAwMDAwMDAwIC0wNDAwCi0tLS0gYmFzaGhpc3QuYwkyMDE5LTAyLTIwIDE2OjIw OjA0LjAwMDAwMDAwMCAtMDUwMAotKioqKioqKioqKioqKioqCi0qKiogNTYxLDU3MyAqKioqCi0g ICAgaWYgKCFoaXN0b3J5X2V4cGFuc2lvbl9pbmhpYml0ZWQgJiYgaGlzdG9yeV9leHBhbnNpb24g JiYgaGlzdG9yeV9leHBhbnNpb25fcCAobGluZSkpCi0gICAgICB7Ci0gICAgICAgIC8qIElmIHdl IGFyZSBleHBhbmRpbmcgdGhlIHNlY29uZCBvciBsYXRlciBsaW5lIG9mIGEgbXVsdGktbGluZQot ICAJIGNvbW1hbmQsIGRlY3JlYXNlIGhpc3RvcnlfbGVuZ3RoIHNvIHJlZmVyZW5jZXMgdG8gaGlz dG9yeSBleHBhbnNpb25zCi0gIAkgaW4gdGhlc2UgbGluZXMgcmVmZXIgdG8gdGhlIHByZXZpb3Vz IGhpc3RvcnkgZW50cnkgYW5kIG5vdCB0aGUKLSAgCSBjdXJyZW50IGNvbW1hbmQuICovCi0gICAg ICAgIGlmIChoaXN0b3J5X2xlbmd0aCA+IDAgJiYgY29tbWFuZF9vcmllbnRlZF9oaXN0b3J5ICYm IGN1cnJlbnRfY29tbWFuZF9maXJzdF9saW5lX3NhdmVkICYmIGN1cnJlbnRfY29tbWFuZF9saW5l X2NvdW50ID4gMSkKLSAgICAgICAgICBoaXN0b3J5X2xlbmd0aC0tOwotICAgICAgICBleHBhbmRl ZCA9IGhpc3RvcnlfZXhwYW5kIChsaW5lLCAmaGlzdG9yeV92YWx1ZSk7Ci0gICAgICAgIGlmICho aXN0b3J5X2xlbmd0aCA+PSAwICYmIGNvbW1hbmRfb3JpZW50ZWRfaGlzdG9yeSAmJiBjdXJyZW50 X2NvbW1hbmRfZmlyc3RfbGluZV9zYXZlZCAmJiBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA+ IDEpCi0hICAgICAgICAgaGlzdG9yeV9sZW5ndGgrKzsKLSAgCi0gICAgICAgIGlmIChleHBhbmRl ZCkKLS0tLSA1NjEsNTc2IC0tLS0KLSAgICBpZiAoIWhpc3RvcnlfZXhwYW5zaW9uX2luaGliaXRl ZCAmJiBoaXN0b3J5X2V4cGFuc2lvbiAmJiBoaXN0b3J5X2V4cGFuc2lvbl9wIChsaW5lKSkKLSAg ICAgIHsKLSsgICAgICAgaW50IG9sZF9sZW47Ci0rIAotICAgICAgICAvKiBJZiB3ZSBhcmUgZXhw YW5kaW5nIHRoZSBzZWNvbmQgb3IgbGF0ZXIgbGluZSBvZiBhIG11bHRpLWxpbmUKLSAgCSBjb21t YW5kLCBkZWNyZWFzZSBoaXN0b3J5X2xlbmd0aCBzbyByZWZlcmVuY2VzIHRvIGhpc3RvcnkgZXhw YW5zaW9ucwotICAJIGluIHRoZXNlIGxpbmVzIHJlZmVyIHRvIHRoZSBwcmV2aW91cyBoaXN0b3J5 IGVudHJ5IGFuZCBub3QgdGhlCi0gIAkgY3VycmVudCBjb21tYW5kLiAqLwotKyAgICAgICBvbGRf bGVuID0gaGlzdG9yeV9sZW5ndGg7Ci0gICAgICAgIGlmIChoaXN0b3J5X2xlbmd0aCA+IDAgJiYg Y29tbWFuZF9vcmllbnRlZF9oaXN0b3J5ICYmIGN1cnJlbnRfY29tbWFuZF9maXJzdF9saW5lX3Nh dmVkICYmIGN1cnJlbnRfY29tbWFuZF9saW5lX2NvdW50ID4gMSkKLSAgICAgICAgICBoaXN0b3J5 X2xlbmd0aC0tOwotICAgICAgICBleHBhbmRlZCA9IGhpc3RvcnlfZXhwYW5kIChsaW5lLCAmaGlz dG9yeV92YWx1ZSk7Ci0gICAgICAgIGlmIChoaXN0b3J5X2xlbmd0aCA+PSAwICYmIGNvbW1hbmRf b3JpZW50ZWRfaGlzdG9yeSAmJiBjdXJyZW50X2NvbW1hbmRfZmlyc3RfbGluZV9zYXZlZCAmJiBj dXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA+IDEpCi0hICAgICAgICAgaGlzdG9yeV9sZW5ndGgg PSBvbGRfbGVuOwotICAKLSAgICAgICAgaWYgKGV4cGFuZGVkKQotCi0qKiogLi4vYmFzaC01LjAv cGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0 Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioq KioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBs ZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFU Q0hMRVZFTCA3Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAt LS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2Nz IHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA4Ci0gIAotICAj ZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDA5IGIvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMDkKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGFlZjRjZTdiNWFkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2Jhc2gvZmlsZXMvYmFzaDUwLTAwOQorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQkJ CSAgICAgQkFTSCBQQVRDSCBSRVBPUlQKLQkJCSAgICAgPT09PT09PT09PT09PT09PT0KLQotQmFz aC1SZWxlYXNlOgk1LjAKLVBhdGNoLUlEOgliYXNoNTAtMDA5Ci0KLUJ1Zy1SZXBvcnRlZC1ieToJ Y2hldC5yYW1leUBjYXNlLmVkdQotQnVnLVJlZmVyZW5jZS1JRDoKLUJ1Zy1SZWZlcmVuY2UtVVJM OgotCi1CdWctRGVzY3JpcHRpb246Ci0KLVRoZSBoaXN0b3J5IGZpbGUgcmVhZGluZyBjb2RlIGRv ZXNuJ3QgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvCi10aGUgaGlzdG9yeSBmaWxl IHdoZW4gaXQgZW5jb3VudGVycyBhIHplcm8tbGVuZ3RoIGZpbGUuCi0KLVBhdGNoIChhcHBseSB3 aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvbGliL3JlYWRsaW5l L2hpc3RmaWxlLmMJMjAxOC0wNi0xMSAwOToxNDo1Mi4wMDAwMDAwMDAgLTA0MDAKLS0tLSBsaWIv cmVhZGxpbmUvaGlzdGZpbGUuYwkyMDE5LTA1LTE2IDE1OjU1OjU3LjAwMDAwMDAwMCAtMDQwMAot KioqKioqKioqKioqKioqCi0qKiogMzA2LDMwOSAqKioqCi0tLS0gMzEyLDMxNiAtLS0tCi0gICAg ICB7Ci0gICAgICAgIGZyZWUgKGlucHV0KTsKLSsgICAgICAgY2xvc2UgKGZpbGUpOwotICAgICAg ICByZXR1cm4gMDsJLyogZG9uJ3Qgd2FzdGUgdGltZSBpZiB3ZSBkb24ndCBoYXZlIHRvICovCi0g ICAgICB9Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMu MDAwMDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAw MDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tz IGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5n KS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA4Ci0gIAotICAjZW5kaWYgLyogX1BBVENI TEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBw YXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZp bmUgUEFUQ0hMRVZFTCA5Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEwIGIvc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMTAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzdhYTkyNTE1Li4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMAorKysgL2Rldi9u dWxsCkBAIC0xLDE3MiArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAg ID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUw LTAxMAotCi1CdWctUmVwb3J0ZWQtYnk6CVRob3JzdGVuIEdsYXNlciA8dGdAbWlyYnNkLmRlPgot QnVnLVJlZmVyZW5jZS1JRDoJPDE1NjYyMjk2MjgzMS4xOTQzOC4xNjM3NDk2MTExNDgzNjU1NjI5 NC5yZXBvcnRidWdAdGdsYXNlLmxhbi50YXJlbnQuZGU+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0 cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz05MzUxMTUKLQot QnVnLURlc2NyaXB0aW9uOgotCi1CYXNoLTUuMCBjaGFuZ2VkIHRoZSB3YXkgYXNzaWdubWVudCBz dGF0ZW1lbnRzIHByZWNlZGluZyBzcGVjaWFsIGJ1aWx0aW5zCi1hbmQgc2hlbGwgZnVuY3Rpb25z IHdlcmUgaGFuZGxlZCBpbiBwb3NpeCBtb2RlLiBUaGV5IGF1dG9tYXRpY2FsbHkgY3JlYXRlZAot b3IgbW9kaWZpZWQgZ2xvYmFsIHZhcmlhYmxlcyBpbnN0ZWFkIG9mIG1vZGlmeWluZyBleGlzdGlu ZyBsb2NhbCB2YXJpYWJsZXMKLWFzIGluIGJhc2gtNC40LgotCi1UaGUgYmFzaC00LjQgcG9zaXgt bW9kZSBzZW1hbnRpY3Mgd2VyZSBidWdneSwgYW5kIHJlc3VsdGVkIGluIGNyZWF0aW5nCi1sb2Nh bCB2YXJpYWJsZXMgd2hlcmUgdGhleSB3ZXJlIG5vdCBpbnRlbmRlZCBhbmQgbW9kaWZ5aW5nIGds b2JhbCB2YXJpYWJsZXMKLWFuZCBsb2NhbCB2YXJpYWJsZXMgc2ltdWx0YW5lb3VzbHkuCi0KLVRo ZSBiYXNoLTUuMCBjaGFuZ2VzIHdlcmUgaW50ZW5kZWQgdG8gZml4IHRoaXMgaXNzdWUsIGJ1dCBk aWQgbm90IHByZXNlcnZlCi1lbm91Z2ggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIFRoZSBwb3Np eCBzdGFuZGFyZCBhbHNvIGNoYW5nZWQgd2hhdCBpdAotcmVxdWlyZWQgaW4gdGhlc2UgY2FzZXMs IHNvIGJhc2gtNS4wIGlzIG5vdCBib3VuZCBieSB0aGUgc3RyaWN0IGNvbmZvcm1hbmNlCi1yZXF1 aXJlbWVudHMgdGhhdCBleGlzdGVkIGluIHByZXZpb3VzIGlzc3VlcyBvZiB0aGUgc3RhbmRhcmQu Ci0KLVRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGJhc2gtNS4wIHBvc2l4IG1vZGUgYmVoYXZpb3Ig aW4gYW4gZWZmb3J0IHRvIHJlc3RvcmUKLXNvbWUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5k IHJhdGlvbmFsaXplIHRoZSBiZWhhdmlvciBpbiB0aGUgcHJlc2VuY2Ugb2YKLWxvY2FsIHZhcmlh Ymxlcy4gSXQKLQotMS4gQ2hhbmdlcyB0aGUgYXNzaWdubWVudCBzZW1hbnRpY3MgdG8gYmUgbW9y ZSBzaW1pbGFyIHRvIHN0YW5kYWxvbmUgYXNzaWdubWVudAotICAgc3RhdGVtZW50czogYXNzaWdu bWVudHMgcHJlY2VkaW5nIGEgZnVuY3Rpb24gY2FsbCBvciBzcGVjaWFsIGJ1aWx0aW4gd2hpbGUK LSAgIGV4ZWN1dGluZyBpbiBhIHNoZWxsIGZ1bmN0aW9uIHdpbGwgbW9kaWZ5IHRoZSB2YWx1ZSBv ZiBhIGxvY2FsIHZhcmlhYmxlCi0gICB3aXRoIHRoZSBzYW1lIG5hbWUgZm9yIHRoZSBkdXJhdGlv biBvZiB0aGUgZnVuY3Rpb24ncyBleGVjdXRpb247Ci0KLTIuIENoYW5nZXMgYXNzaWdubWVudHMg cHJlY2VkaW5nIHNoZWxsIGZ1bmN0aW9uIGNhbGxzIG9yIHNwZWNpYWwgYnVpbHRpbnMKLSAgIGZy b20gd2l0aGluIGEgc2hlbGwgZnVuY3Rpb24gdG8gbm8gbG9uZ2VyIGNyZWF0ZSBvciBtb2RpZnkg Z2xvYmFsIHZhcmlhYmxlcwotICAgaW4gdGhlIHByZXNlbmNlIG9mIGEgbG9jYWwgdmFyaWFibGUg d2l0aCB0aGUgc2FtZSBuYW1lOwotCi0zLiBBc3NpZ25tZW50IHN0YXRlbWVudHMgcHJlY2VkaW5n IGEgc2hlbGwgZnVuY3Rpb24gY2FsbCBvciBzcGVjaWFsIGJ1aWx0aW4KLSAgIGF0IHRoZSBnbG9i YWwgc2NvcGUgY29udGludWUgdG8gbW9kaWZ5IHRoZSAoZ2xvYmFsKSBjYWxsaW5nIGVudmlyb25t ZW50LAotICAgYnV0IGFyZSB1bmFmZmVjdGVkIGJ5IGFzc2lnbm1lbnRzIHByZWNlZGluZyBmdW5j dGlvbiBjYWxscyBvciBzcGVjaWFsCi0gICBidWlsdGlucyB3aXRoaW4gYSBmdW5jdGlvbiwgYXMg ZGVzY3JpYmVkIGluIGl0ZW0gMi4gVGhpcyBpcyBhbHNvIHNpbWlsYXIKLSAgIHRvIHRoZSBiZWhh dmlvciBvZiBhIHN0YW5kYWxvbmUgYXNzaWdubWVudCBzdGF0ZW1lbnQuCi0KLVBhdGNoIChhcHBs eSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvdmFyaWFibGVz LmMJMjAxOC0xMi0xOCAxMTowNzoyMS4wMDAwMDAwMDAgLTA1MDAKLS0tLSB2YXJpYWJsZXMuYwky MDE5LTA4LTIyIDEwOjUzOjQ0LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiog NDQ2MSw0NDY3ICoqKioKLSAgCi0gIC8qIFRha2UgYSB2YXJpYWJsZSBmcm9tIGFuIGFzc2lnbm1l bnQgc3RhdGVtZW50IHByZWNlZGluZyBhIHBvc2l4IHNwZWNpYWwKLSEgICAgYnVpbHRpbiAoaW5j bHVkaW5nIGByZXR1cm4nKSBhbmQgY3JlYXRlIGEgZ2xvYmFsIHZhcmlhYmxlIGZyb20gaXQuIFRo aXMKLSEgICAgaXMgY2FsbGVkIGZyb20gbWVyZ2VfdGVtcG9yYXJ5X2Vudiwgd2hpY2ggaXMgb25s eSBjYWxsZWQgd2hlbiBpbiBwb3NpeAotISAgICBtb2RlLiAqLwotICBzdGF0aWMgdm9pZAotICBw dXNoX3Bvc2l4X3RlbXBfdmFyIChkYXRhKQotLS0tIDQ0NjEsNDQ2NyAtLS0tCi0gIAotICAvKiBU YWtlIGEgdmFyaWFibGUgZnJvbSBhbiBhc3NpZ25tZW50IHN0YXRlbWVudCBwcmVjZWRpbmcgYSBw b3NpeCBzcGVjaWFsCi0hICAgIGJ1aWx0aW4gKGluY2x1ZGluZyBgcmV0dXJuJykgYW5kIGNyZWF0 ZSBhIHZhcmlhYmxlIGZyb20gaXQgYXMgaWYgYQotISAgICBzdGFuZGFsb25lIGFzc2lnbm1lbnQg c3RhdGVtZW50IGhhZCBiZWVuIHBlcmZvcm1lZC4gVGhpcyBpcyBjYWxsZWQgZnJvbQotISAgICBt ZXJnZV90ZW1wb3JhcnlfZW52LCB3aGljaCBpcyBvbmx5IGNhbGxlZCB3aGVuIGluIHBvc2l4IG1v ZGUuICovCi0gIHN0YXRpYyB2b2lkCi0gIHB1c2hfcG9zaXhfdGVtcF92YXIgKGRhdGEpCi0qKioq KioqKioqKioqKioKLSoqKiA0NDczLDQ0ODYgKioqKgotICAgIHZhciA9IChTSEVMTF9WQVIgKilk YXRhOwotICAKLSEgICBiaW5kaW5nX3RhYmxlID0gZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGU7Ci0h ICAgaWYgKGJpbmRpbmdfdGFibGUgPT0gMCkKLSEgICAgIGJpbmRpbmdfdGFibGUgPSBnbG9iYWxf dmFyaWFibGVzLT50YWJsZSA9IGhhc2hfY3JlYXRlIChWQVJJQUJMRVNfSEFTSF9CVUNLRVRTKTsK LSEgCi0hICAgdiA9IGJpbmRfdmFyaWFibGVfaW50ZXJuYWwgKHZhci0+bmFtZSwgdmFsdWVfY2Vs bCAodmFyKSwgYmluZGluZ190YWJsZSwgMCwgQVNTX0ZPUkNFfEFTU19OT0xPTkdKTVApOwotICAK LSAgICAvKiBnbG9iYWwgdmFyaWFibGVzIGFyZSBubyBsb25nZXIgdGVtcG9yYXJ5IGFuZCBkb24n dCBuZWVkIHByb3BhZ2F0aW5nLiAqLwotISAgIHZhci0+YXR0cmlidXRlcyAmPSB+KGF0dF90ZW1w dmFyfGF0dF9wcm9wYWdhdGUpOwotICAgIGlmICh2KQotISAgICAgdi0+YXR0cmlidXRlcyB8PSB2 YXItPmF0dHJpYnV0ZXM7Ci0gIAotICAgIGlmIChmaW5kX3NwZWNpYWxfdmFyICh2YXItPm5hbWUp ID49IDApCi0tLS0gNDQ3Myw0NDk3IC0tLS0KLSAgICB2YXIgPSAoU0hFTExfVkFSICopZGF0YTsK LSAgCi0hICAgLyogSnVzdCBsaWtlIGRvX2Fzc2lnbm1lbnRfaW50ZXJuYWwoKS4gVGhpcyBtYWtl cyBhc3NpZ25tZW50cyBwcmVjZWRpbmcKLSEgICAgICBzcGVjaWFsIGJ1aWx0aW5zIGFjdCBsaWtl IHN0YW5kYWxvbmUgYXNzaWdubWVudCBzdGF0ZW1lbnRzIHdoZW4gaW4KLSEgICAgICBwb3NpeCBt b2RlLCBzYXRpc2Z5aW5nIHRoZSBwb3NpeCByZXF1aXJlbWVudCB0aGF0IHRoaXMgYWZmZWN0IHRo ZQotISAgICAgICJjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4iICovCi0hICAgdiA9IGJp bmRfdmFyaWFibGUgKHZhci0+bmFtZSwgdmFsdWVfY2VsbCAodmFyKSwgQVNTX0ZPUkNFfEFTU19O T0xPTkdKTVApOwotISAKLSEgICAvKiBJZiB0aGlzIG1vZGlmaWVzIGFuIGV4aXN0aW5nIGxvY2Fs IHZhcmlhYmxlLCB2LT5jb250ZXh0IHdpbGwgYmUgbm9uLXplcm8uCi0hICAgICAgSWYgaXQgY29t ZXMgYmFjayB3aXRoIHYtPmNvbnRleHQgPT0gMCwgd2UgYm91bmQgYXQgdGhlIGdsb2JhbCBjb250 ZXh0LgotISAgICAgIFNldCBiaW5kaW5nX3RhYmxlIGFwcHJvcHJpYXRlbHkuIEl0IGRvZXNuJ3Qg bWF0dGVyIHdoZXRoZXIgaXQncyBjb3JyZWN0Ci0hICAgICAgaWYgdGhlIHZhcmlhYmxlIGlzIGxv Y2FsLCBvbmx5IHRoYXQgaXQncyBub3QgZ2xvYmFsX3ZhcmlhYmxlcy0+dGFibGUgKi8KLSEgICBi aW5kaW5nX3RhYmxlID0gdi0+Y29udGV4dCA/IHNoZWxsX3ZhcmlhYmxlcy0+dGFibGUgOiBnbG9i YWxfdmFyaWFibGVzLT50YWJsZTsKLSAgCi0gICAgLyogZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbm8g bG9uZ2VyIHRlbXBvcmFyeSBhbmQgZG9uJ3QgbmVlZCBwcm9wYWdhdGluZy4gKi8KLSEgICBpZiAo YmluZGluZ190YWJsZSA9PSBnbG9iYWxfdmFyaWFibGVzLT50YWJsZSkKLSEgICAgIHZhci0+YXR0 cmlidXRlcyAmPSB+KGF0dF90ZW1wdmFyfGF0dF9wcm9wYWdhdGUpOwotISAKLSAgICBpZiAodikK LSEgICAgIHsKLSEgICAgICAgdi0+YXR0cmlidXRlcyB8PSB2YXItPmF0dHJpYnV0ZXM7Ci0hICAg ICAgIHYtPmF0dHJpYnV0ZXMgJj0gfmF0dF90ZW1wdmFyOwkvKiBub3QgYSB0ZW1wIHZhciBub3cg Ki8KLSEgICAgIH0KLSAgCi0gICAgaWYgKGZpbmRfc3BlY2lhbF92YXIgKHZhci0+bmFtZSkgPj0g MCkKLSoqKioqKioqKioqKioqKgotKioqIDQ1NzYsNDU4NyAqKioqCi0gIHsKLSAgICBpbnQgaTsK LSAgCi0gICAgdGVtcHZhcl9saXN0ID0gc3RydmVjX2NyZWF0ZSAoSEFTSF9FTlRSSUVTICh0ZW1w b3JhcnlfZW52KSArIDEpOwotICAgIHRlbXB2YXJfbGlzdFt0dmxpc3RfaW5kID0gMF0gPSAwOwot ISAgICAgCi0hICAgaGFzaF9mbHVzaCAodGVtcG9yYXJ5X2VudiwgcHVzaGYpOwotISAgIGhhc2hf ZGlzcG9zZSAodGVtcG9yYXJ5X2Vudik7Ci0gICAgdGVtcG9yYXJ5X2VudiA9IChIQVNIX1RBQkxF ICopTlVMTDsKLSAgCi0gICAgdGVtcHZhcl9saXN0W3R2bGlzdF9pbmRdID0gMDsKLSAgCi0tLS0g NDU4Nyw0NjAxIC0tLS0KLSAgewotICAgIGludCBpOwotKyAgIEhBU0hfVEFCTEUgKmRpc3Bvc2Vy OwotICAKLSAgICB0ZW1wdmFyX2xpc3QgPSBzdHJ2ZWNfY3JlYXRlIChIQVNIX0VOVFJJRVMgKHRl bXBvcmFyeV9lbnYpICsgMSk7Ci0gICAgdGVtcHZhcl9saXN0W3R2bGlzdF9pbmQgPSAwXSA9IDA7 Ci0hIAotISAgIGRpc3Bvc2VyID0gdGVtcG9yYXJ5X2VudjsKLSAgICB0ZW1wb3JhcnlfZW52ID0g KEhBU0hfVEFCTEUgKilOVUxMOwotICAKLSsgICBoYXNoX2ZsdXNoIChkaXNwb3NlciwgcHVzaGYp OwotKyAgIGhhc2hfZGlzcG9zZSAoZGlzcG9zZXIpOwotKyAKLSAgICB0ZW1wdmFyX2xpc3RbdHZs aXN0X2luZF0gPSAwOwotICAKLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3Rlc3RzL3ZhcmVudi5y aWdodAkyMDE4LTEyLTE3IDE1OjM5OjQ4LjAwMDAwMDAwMCAtMDUwMAotLS0tIHRlc3RzL3ZhcmVu di5yaWdodAkyMDE5LTA4LTIyIDE2OjA1OjI1LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioq KioqCi0qKiogMTQ3LDE1MyAqKioqCi0gIG91dHNpZGU6IGRlY2xhcmUgLS0gdmFyPSJvbmUiCi0g IGluc2lkZTogZGVjbGFyZSAteCB2YXI9InZhbHVlIgotISBvdXRzaWRlOiBkZWNsYXJlIC14IHZh cj0idmFsdWUiCi0hIGluc2lkZTogZGVjbGFyZSAtLSB2YXI9ImxvY2FsIgotISBvdXRzaWRlOiBk ZWNsYXJlIC14IHZhcj0iZ2xvYmFsIgotICBmb289PHVuc2V0PiBlbnZpcm9ubWVudCBmb289Ci0g IGZvbz1mb28gZW52aXJvbm1lbnQgZm9vPWZvbwotLS0tIDE0NywxNTMgLS0tLQotICBvdXRzaWRl OiBkZWNsYXJlIC0tIHZhcj0ib25lIgotICBpbnNpZGU6IGRlY2xhcmUgLXggdmFyPSJ2YWx1ZSIK LSEgb3V0c2lkZTogZGVjbGFyZSAtLSB2YXI9Im91dHNpZGUiCi0hIGluc2lkZTogZGVjbGFyZSAt eCB2YXI9Imdsb2JhbCIKLSEgb3V0c2lkZTogZGVjbGFyZSAtLSB2YXI9Im91dHNpZGUiCi0gIGZv bz08dW5zZXQ+IGVudmlyb25tZW50IGZvbz0KLSAgZm9vPWZvbyBlbnZpcm9ubWVudCBmb289Zm9v Ci0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAwMDAw MDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAwMDAw IC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZvciB0 byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8K LSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCA5Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxf SF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBs ZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFU Q0hMRVZFTCAxMAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQg YS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMSBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNo NTAtMDExCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWFlNjkwZTAwNC4uMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTEKKysrIC9kZXYvbnVsbApA QCAtMSw1OSArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09 PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxMQot Ci1CdWctUmVwb3J0ZWQtYnk6CU1hdHQgV2hpdGxvY2sKLUJ1Zy1SZWZlcmVuY2UtSUQ6CQotQnVn LVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9zdXBwb3J0Lz8xMDk2NzEK LQotQnVnLURlc2NyaXB0aW9uOgotCi1UaGUgY29uZGl0aW9uYWwgY29tbWFuZCBkaWQgbm90IHBl cmZvcm0gYXBwcm9wcmlhdGUgcXVvdGVkIG51bGwgY2hhcmFjdGVyCi1yZW1vdmFsIG9uIGl0cyBh cmd1bWVudHMsIGNhdXNpbmcgc3ludGF4IGVycm9ycyBhbmQgYXR0ZW1wdHMgdG8gc3RhdAotaW52 YWxpZCBwYXRobmFtZXMuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioq IC4uL2Jhc2gtNS4wLXBhdGNoZWQvc3Vic3QuYwkyMDE4LTEyLTIyIDE3OjQzOjM3LjAwMDAwMDAw MCAtMDUwMAotLS0tIHN1YnN0LmMJMjAxOS0wNC0xNCAxMzoyNTo0MS4wMDAwMDAwMDAgLTA0MDAK LSoqKioqKioqKioqKioqKgotKioqIDM2MjYsMzYzMCAqKioqCi0gICAgIFNQRUNJQUwgaXMgMiwg dGhpcyBpcyBhbiByaHMgYXJndW1lbnQgZm9yIHRoZSA9fiBvcGVyYXRvciwgYW5kIHNob3VsZAot ICAgICBiZSBxdW90ZWQgYXBwcm9wcmlhdGVseSBmb3IgcmVnY29tcC9yZWdleGVjLiAgVGhlIGNh bGxlciBpcyByZXNwb25zaWJsZQotISAgICBmb3IgcmVtb3ZpbmcgdGhlIGJhY2tzbGFzaGVzIGlm IHRoZSB1bnF1b3RlZCB3b3JkIGlzIG5lZWRlZCBsYXRlci4gKi8gICAKLSAgY2hhciAqCi0gIGNv bmRfZXhwYW5kX3dvcmQgKHcsIHNwZWNpYWwpCi0tLS0gMzY0MiwzNjQ4IC0tLS0KLSAgICAgU1BF Q0lBTCBpcyAyLCB0aGlzIGlzIGFuIHJocyBhcmd1bWVudCBmb3IgdGhlID1+IG9wZXJhdG9yLCBh bmQgc2hvdWxkCi0gICAgIGJlIHF1b3RlZCBhcHByb3ByaWF0ZWx5IGZvciByZWdjb21wL3JlZ2V4 ZWMuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlCi0hICAgIGZvciByZW1vdmluZyB0aGUgYmFj a3NsYXNoZXMgaWYgdGhlIHVucXVvdGVkIHdvcmQgaXMgbmVlZGVkIGxhdGVyLiBJbgotISAgICBh bnkgY2FzZSwgc2luY2Ugd2UgZG9uJ3QgcGVyZm9ybSB3b3JkIHNwbGl0dGluZywgd2UgbmVlZCB0 byBkbyBxdW90ZWQKLSEgICAgbnVsbCBjaGFyYWN0ZXIgcmVtb3ZhbC4gKi8KLSAgY2hhciAqCi0g IGNvbmRfZXhwYW5kX3dvcmQgKHcsIHNwZWNpYWwpCi0qKioqKioqKioqKioqKioKLSoqKiAzNjQ3 LDM2NTAgKioqKgotLS0tIDM2NjUsMzY3MCAtLS0tCi0gICAgICAgIGlmIChzcGVjaWFsID09IDAp CQkJLyogTEhTICovCi0gIAl7Ci0rIAkgIGlmIChsLT53b3JkKQotKyAJICAgIHdvcmRfbGlzdF9y ZW1vdmVfcXVvdGVkX251bGxzIChsKTsKLSAgCSAgZGVxdW90ZV9saXN0IChsKTsKLSAgCSAgciA9 IHN0cmluZ19saXN0IChsKTsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0y MiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAx MTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioK LSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVy c2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEwCi0gIAotICAjZW5k aWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0 byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8K LSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVM X0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxMiBiL3NyY3Br Z3MvYmFzaC9maWxlcy9iYXNoNTAtMDEyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3 NDcwZTc2NjU1MC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0w MTIKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQ T1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRj aC1JRDoJYmFzaDUwLTAxMgotCi1CdWctUmVwb3J0ZWQtYnk6CWxlc3NidWdAcXEuY29tCi1CdWct UmVmZXJlbmNlLUlEOgk8dGVuY2VudF82QUE1MzFEOUE1Q0M0MTIxRDg2QkQ1Q0RBMkUwREE5OEM2 MDVAcXEuY29tPgotQnVnLVJlZmVyZW5jZS1VUkw6Ci0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotV2hl biB1c2luZyBwcmV2aW91cy1oaXN0b3J5IHRvIGdvIGJhY2sgYmV5b25kIHRoZSBiZWdpbm5pbmcg b2YgdGhlIGhpc3RvcnkgbGlzdCwKLWl0J3MgcG9zc2libGUgdG8gbW92ZSB0byBhbiBpbmNvcnJl Y3QgcGFydGlhbCBsaW5lLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoq KiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9yZWFkbGluZS9taXNjLmMJMjAxNy0wNy0wNyAxNzoz MDoxMi4wMDAwMDAwMDAgLTA0MDAKLS0tLSBsaWIvcmVhZGxpbmUvbWlzYy5jCTIwMTktMDUtMTYg MTE6NDM6NDYuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA1NzcsNTgwICoq KioKLS0tLSA1OTAsNTk0IC0tLS0KLSAgewotICAgIEhJU1RfRU5UUlkgKm9sZF90ZW1wLCAqdGVt cDsKLSsgICBpbnQgaGFkX3NhdmVkX2xpbmU7Ci0gIAotICAgIGlmIChjb3VudCA8IDApCi0qKioq KioqKioqKioqKioKLSoqKiA1ODksNTkyICoqKioKLS0tLSA2MDMsNjA3IC0tLS0KLSAgCi0gICAg LyogSWYgd2UgZG9uJ3QgaGF2ZSBhIGxpbmUgc2F2ZWQsIHRoZW4gc2F2ZSB0aGlzIG9uZS4gKi8K LSsgICBoYWRfc2F2ZWRfbGluZSA9IF9ybF9zYXZlZF9saW5lX2Zvcl9oaXN0b3J5ICE9IDA7Ci0g ICAgcmxfbWF5YmVfc2F2ZV9saW5lICgpOwotICAKLSoqKioqKioqKioqKioqKgotKioqIDYxMiw2 MTYgKioqKgotICAgIGlmICh0ZW1wID09IDApCi0gICAgICB7Ci0hICAgICAgIHJsX21heWJlX3Vu c2F2ZV9saW5lICgpOwotICAgICAgICBybF9kaW5nICgpOwotICAgICAgfQotLS0tIDYyNyw2MzIg LS0tLQotICAgIGlmICh0ZW1wID09IDApCi0gICAgICB7Ci0hICAgICAgIGlmIChoYWRfc2F2ZWRf bGluZSA9PSAwKQotISAgICAgICAgIF9ybF9mcmVlX3NhdmVkX2hpc3RvcnlfbGluZSAoKTsKLSAg ICAgICAgcmxfZGluZyAoKTsKLSAgICAgIH0KLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJ MjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAx Ni0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2 LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhl IHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDExCi0g IAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxv b2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3Ry aW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMgotICAKLSAgI2VuZGlmIC8qIF9Q QVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAx MyBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDEzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBlNDRmZGI1MDUzYi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVz L2Jhc2g1MC0wMTMKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0JCQkgICAgIEJBU0gg UEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJ NS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxMwotCi1CdWctUmVwb3J0ZWQtYnk6CUhJUk9TRSBNYXNh YWtpIDxoaXJvc2UzMUBnbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLUlEOgk8Q0FHU09mQS1ScWlU ZT0rR3NYc0RLeVpyck1XSDRiRGJYZ01WVmVnTWE2T2pxQzV4Ym5RQG1haWwuZ21haWwuY29tPgot QnVnLVJlZmVyZW5jZS1VUkw6CWh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVn LWJhc2gvMjAxOS0wNS9tc2cwMDAzOC5odG1sCi0KLUJ1Zy1EZXNjcmlwdGlvbjoKLQotUmVhZGlu ZyBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aW1lc3RhbXBzIGNhbiByZXN1bHQgaW4gaGlzdG9yeSBl bnRyaWVzIGpvaW5lZAotYnkgbGluZWZlZWRzLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2gg LXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL2xpYi9yZWFkbGluZS9oaXN0ZmlsZS5j CTIwMTgtMDYtMTEgMDk6MTQ6NTIuMDAwMDAwMDAwIC0wNDAwCi0tLS0gbGliL3JlYWRsaW5lL2hp c3RmaWxlLmMJMjAxOS0wNS0xNiAxNTo1NTo1Ny4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioqKioq KioqKgotKioqIDM3MCwzNzYgKioqKgotICAKLSAgICBoYXNfdGltZXN0YW1wcyA9IEhJU1RfVElN RVNUQU1QX1NUQVJUIChidWZmZXIpOwotISAgIGhpc3RvcnlfbXVsdGlsaW5lX2VudHJpZXMgKz0g aGFzX3RpbWVzdGFtcHMgJiYgaGlzdG9yeV93cml0ZV90aW1lc3RhbXBzOyAgCi0gIAotICAgIC8q IFNraXAgbGluZXMgdW50aWwgd2UgYXJlIGF0IEZST00uICovCi0gICAgZm9yIChsaW5lX3N0YXJ0 ID0gbGluZV9lbmQgPSBidWZmZXI7IGxpbmVfZW5kIDwgYnVmZW5kICYmIGN1cnJlbnRfbGluZSA8 IGZyb207IGxpbmVfZW5kKyspCi0gICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicpCi0tLS0gMzcw LDM3OCAtLS0tCi0gIAotICAgIGhhc190aW1lc3RhbXBzID0gSElTVF9USU1FU1RBTVBfU1RBUlQg KGJ1ZmZlcik7Ci0hICAgaGlzdG9yeV9tdWx0aWxpbmVfZW50cmllcyArPSBoYXNfdGltZXN0YW1w cyAmJiBoaXN0b3J5X3dyaXRlX3RpbWVzdGFtcHM7Ci0gIAotICAgIC8qIFNraXAgbGluZXMgdW50 aWwgd2UgYXJlIGF0IEZST00uICovCi0rICAgaWYgKGhhc190aW1lc3RhbXBzKQotKyAgICAgbGFz dF90cyA9IGJ1ZmZlcjsKLSAgICBmb3IgKGxpbmVfc3RhcnQgPSBsaW5lX2VuZCA9IGJ1ZmZlcjsg bGluZV9lbmQgPCBidWZlbmQgJiYgY3VycmVudF9saW5lIDwgZnJvbTsgbGluZV9lbmQrKykKLSAg ICAgIGlmICgqbGluZV9lbmQgPT0gJ1xuJykKLSoqKioqKioqKioqKioqKgotKioqIDM4MSwzODUg KioqKgotLS0tIDM4MywzOTggLS0tLQotICAJaWYgKEhJU1RfVElNRVNUQU1QX1NUQVJUKHApID09 IDApCi0gIAkgIGN1cnJlbnRfbGluZSsrOwotKyAJZWxzZQotKyAJICBsYXN0X3RzID0gcDsKLSAg CWxpbmVfc3RhcnQgPSBwOwotKyAJLyogSWYgd2UgYXJlIGF0IHRoZSBsYXN0IGxpbmUgKGN1cnJl bnRfbGluZSA9PSBmcm9tKSBidXQgd2UgaGF2ZQotKyAJICAgdGltZXN0YW1wcyAoaGFzX3RpbWVz dGFtcHMpLCB0aGVuIGxpbmVfc3RhcnQgcG9pbnRzIHRvIHRoZQotKyAJICAgdGV4dCBvZiB0aGUg bGFzdCBjb21tYW5kLCBhbmQgd2UgbmVlZCB0byBza2lwIHRvIGl0cyBlbmQuICovCi0rIAlpZiAo Y3VycmVudF9saW5lID49IGZyb20gJiYgaGFzX3RpbWVzdGFtcHMpCi0rIAkgIHsKLSsgCSAgICBm b3IgKGxpbmVfZW5kID0gcDsgbGluZV9lbmQgPCBidWZlbmQgJiYgKmxpbmVfZW5kICE9ICdcbic7 IGxpbmVfZW5kKyspCi0rIAkgICAgICA7Ci0rIAkgICAgbGluZV9zdGFydCA9ICgqbGluZV9lbmQg PT0gJ1xuJykgPyBsaW5lX2VuZCArIDEgOiBsaW5lX2VuZDsKLSsgCSAgfQotICAgICAgICB9Ci0g IAotCi0qKiogLi4vYmFzaC01LjAvcGF0Y2hsZXZlbC5oCTIwMTYtMDYtMjIgMTQ6NTE6MDMuMDAw MDAwMDAwIC0wNDAwCi0tLS0gcGF0Y2hsZXZlbC5oCTIwMTYtMTAtMDEgMTE6MDE6MjguMDAwMDAw MDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAyNiwzMCAqKioqCi0gICAgIGxvb2tzIGZv ciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4g Ki8KLSAgCi0hICNkZWZpbmUgUEFUQ0hMRVZFTCAxMgotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExF VkVMX0hfICovCi0tLS0gMjYsMzAgLS0tLQotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0 Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5l IFBBVENITEVWRUwgMTMKLSAgCi0gICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTQgYi9zcmNwa2dzL2Jhc2gvZmlsZXMv YmFzaDUwLTAxNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNiNDlhYWU3MjUuLjAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE0CisrKyAvZGV2L251 bGwKQEAgLTEsNTIgKzAsMCBAQAotCQkJICAgICBCQVNIIFBBVENIIFJFUE9SVAotCQkJICAgICA9 PT09PT09PT09PT09PT09PQotCi1CYXNoLVJlbGVhc2U6CTUuMAotUGF0Y2gtSUQ6CWJhc2g1MC0w MTQKLQotQnVnLVJlcG9ydGVkLWJ5OglKb2hhbm5lcyBIaWVsc2NoZXIgPGpoaWVsc2NoZXJAcG9z dGVvLmRlPgotQnVnLVJlZmVyZW5jZS1JRDoJPDIwMTkwMjA4MjA1MDQ4Ljc3YzI1YTgzQGhvcmRl dm0+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRt bC9idWctYmFzaC8yMDE5LTAyL21zZzAwMDMyLmh0bWwKLQotQnVnLURlc2NyaXB0aW9uOgotCi1J ZiB0aGUgY3VycmVudCBsaW5lIGlzIGVtcHR5LCB1c2luZyB0aGUgZW1hY3MgQy14Qy1lIGJpbmRp bmcgdG8gZW50ZXIgdGhlCi1lZGl0b3Igd2lsbCBlZGl0IHRoZSBwcmV2aW91cyBjb21tYW5kIGlu c3RlYWQgb2YgdGhlIGN1cnJlbnQgKGVtcHR5KSBvbmUuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBw YXRjaCAtcDAnKToKLQotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvYmFzaGxpbmUuYwkyMDE5LTAx LTE2IDE2OjEzOjIxLjAwMDAwMDAwMCAtMDUwMAotLS0tIGJhc2hsaW5lLmMJMjAxOS0wMi0xMSAx MToxODo1Ny4wMDAwMDAwMDAgLTA1MDAKLSoqKioqKioqKioqKioqKgotKioqIDk2Miw5NzAgKioq KgotICAJIGZpbmlzaGVkIHdpdGggdGhlIGNvbW1hbmQsIHNvIHdlIHNob3VsZCBub3QgaWdub3Jl IHRoZSBsYXN0IGNvbW1hbmQgKi8KLSAgICAgICAgdXNpbmdfaGlzdG9yeSAoKTsKLSEgICAgICAg aWYgKHJsX2xpbmVfYnVmZmVyWzBdKQotISAJewotISAJICBjdXJyZW50X2NvbW1hbmRfbGluZV9j b3VudCsrOwkvKiBmb3IgcmxfbmV3bGluZSBhYm92ZSAqLwotISAJICBiYXNoX2FkZF9oaXN0b3J5 IChybF9saW5lX2J1ZmZlcik7Ci0hIAl9Ci0gICAgICAgIGN1cnJlbnRfY29tbWFuZF9saW5lX2Nv dW50ID0gMDsJLyogZm9yIGR1bW15IGhpc3RvcnkgZW50cnkgKi8KLSAgICAgICAgYmFzaF9hZGRf aGlzdG9yeSAoIiIpOwotLS0tIDk2NSw5NzAgLS0tLQotICAJIGZpbmlzaGVkIHdpdGggdGhlIGNv bW1hbmQsIHNvIHdlIHNob3VsZCBub3QgaWdub3JlIHRoZSBsYXN0IGNvbW1hbmQgKi8KLSAgICAg ICAgdXNpbmdfaGlzdG9yeSAoKTsKLSEgICAgICAgY3VycmVudF9jb21tYW5kX2xpbmVfY291bnQr KzsJLyogZm9yIHJsX25ld2xpbmUgYWJvdmUgKi8KLSEgICAgICAgYmFzaF9hZGRfaGlzdG9yeSAo cmxfbGluZV9idWZmZXIpOwotICAgICAgICBjdXJyZW50X2NvbW1hbmRfbGluZV9jb3VudCA9IDA7 CS8qIGZvciBkdW1teSBoaXN0b3J5IGVudHJ5ICovCi0gICAgICAgIGJhc2hfYWRkX2hpc3Rvcnkg KCIiKTsKLSoqKiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4w MDAwMDAwMDAgLTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAw MDAwMDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3Mg Zm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcp LiAqLwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDEzCi0gIAotICAjZW5kaWYgLyogX1BBVENI TEVWRUxfSF8gKi8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBw YXRjaCBsZXZlbCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZp bmUgUEFUQ0hMRVZFTCAxNAotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYg LS1naXQgYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNSBiL3NyY3BrZ3MvYmFzaC9maWxl cy9iYXNoNTAtMDE1CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjZlNWU2OWQ2ZS4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTUKKysrIC9kZXYv bnVsbApAQCAtMSw3OCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAg ID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUw LTAxNQotCi1CdWctUmVwb3J0ZWQtYnk6CVl1IEtvdSA8Y2t5b29nQGdtYWlsLmNvbT4KLUJ1Zy1S ZWZlcmVuY2UtSUQ6CTxDQUFxb0Y5S28zbkFTaEpYR3p1Y2Fmcy1CeVVhZ3paNG5iUW9ud0Vrd0M3 czlVcWZXS3dAbWFpbC5nbWFpbC5jb20+Ci1CdWctUmVmZXJlbmNlLVVSTDoJaHR0cHM6Ly9saXN0 cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE5LTA1L21zZzAwMDMyLmh0bWwKLQot QnVnLURlc2NyaXB0aW9uOgotCi1JZiBhbGlhcyBleHBhbnNpb24gaXMgZW5hYmxlZCB3aGVuIHBy b2Nlc3NpbmcgdGhlIGNvbW1hbmQgYXJndW1lbnQgdG8gdGhlCi1gLWMnIG9wdGlvbiwgYW4gYWxp YXMgaXMgZGVmaW5lZCBpbiB0aGF0IGNvbW1hbmQsIGFuZCB0aGUgY29tbWFuZCBlbmRzIHdpdGgK LXRoZSBpbnZvY2F0aW9uIG9mIHRoYXQgYWxpYXMsIHRoZSBzaGVsbCdzIGNvbW1hbmQgcGFyc2Vy IGNhbiBwcmVtYXR1cmVseQotdGVybWluYXRlIGJlZm9yZSB0aGUgZW50aXJlIGNvbW1hbmQgaXMg ZXhlY3V0ZWQuCi0KLVBhdGNoIChhcHBseSB3aXRoIGBwYXRjaCAtcDAnKToKLQotKioqIC4uL2Jh c2gtMjAxOTA0MjYvYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTktMDEtMjkgMTQ6MTU6MTkuMDAw MDAwMDAwIC0wNTAwCi0tLS0gYnVpbHRpbnMvZXZhbHN0cmluZy5jCTIwMTktMDUtMTUgMTQ6MTk6 MzYuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA5Miw5NSAqKioqCi0tLS0g OTIsOTYgLS0tLQotICAJICBydW5uaW5nX3RyYXAgPT0gMCAmJgotICAJICAqYmFzaF9pbnB1dC5s b2NhdGlvbi5zdHJpbmcgPT0gJ1wwJyAmJgotKyAJICBwYXJzZXJfZXhwYW5kaW5nX2FsaWFzICgp ID09IDAgJiYKLSAgCSAgY29tbWFuZC0+dHlwZSA9PSBjbV9zaW1wbGUgJiYKLSAgCSAgc2lnbmFs X2lzX3RyYXBwZWQgKEVYSVRfVFJBUCkgPT0gMCAmJgotKioqKioqKioqKioqKioqCi0qKiogMTA2 LDEwOSAqKioqCi0tLS0gMTA3LDExMSAtLS0tCi0gIHsKLSAgICByZXR1cm4gKCpiYXNoX2lucHV0 LmxvY2F0aW9uLnN0cmluZyA9PSAnXDAnICYmCi0rIAkgIHBhcnNlcl9leHBhbmRpbmdfYWxpYXMg KCkgPT0gMCAmJgotICAJICAoY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09 IEFORF9BTkQgfHwgY29tbWFuZC0+dmFsdWUuQ29ubmVjdGlvbi0+Y29ubmVjdG9yID09IE9SX09S IHx8IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPmNvbm5lY3RvciA9PSAnOycpICYmCi0gIAkg IGNvbW1hbmQtPnZhbHVlLkNvbm5lY3Rpb24tPnNlY29uZC0+dHlwZSA9PSBjbV9zaW1wbGUpOwot KioqKioqKioqKioqKioqCi0qKiogMjkxLDI5NSAqKioqCi0gICAgd2l0aF9pbnB1dF9mcm9tX3N0 cmluZyAoc3RyaW5nLCBmcm9tX2ZpbGUpOwotICAgIGNsZWFyX3NoZWxsX2lucHV0X2xpbmUgKCk7 Ci0hICAgd2hpbGUgKCooYmFzaF9pbnB1dC5sb2NhdGlvbi5zdHJpbmcpKQotICAgICAgewotICAg ICAgICBjb21tYW5kID0gKENPTU1BTkQgKilOVUxMOwotLS0tIDI5MywyOTcgLS0tLQotICAgIHdp dGhfaW5wdXRfZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSAgICBjbGVhcl9zaGVs bF9pbnB1dF9saW5lICgpOwotISAgIHdoaWxlICgqKGJhc2hfaW5wdXQubG9jYXRpb24uc3RyaW5n KSB8fCBwYXJzZXJfZXhwYW5kaW5nX2FsaWFzICgpKQotICAgICAgewotICAgICAgICBjb21tYW5k ID0gKENPTU1BTkQgKilOVUxMOwotKioqKioqKioqKioqKioqCi0qKiogNTQ2LDU1MCAqKioqCi0g IAotICAgIHdpdGhfaW5wdXRfZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSEgICB3 aGlsZSAoKihiYXNoX2lucHV0LmxvY2F0aW9uLnN0cmluZykpCi0gICAgICB7Ci0gICAgICAgIGNv bW1hbmQgPSAoQ09NTUFORCAqKU5VTEw7Ci0tLS0gNTQ4LDU1MiAtLS0tCi0gIAotICAgIHdpdGhf aW5wdXRfZnJvbV9zdHJpbmcgKHN0cmluZywgZnJvbV9maWxlKTsKLSEgICB3aGlsZSAoKihiYXNo X2lucHV0LmxvY2F0aW9uLnN0cmluZykpCQkvKiBYWFggLSBwYXJzZXJfZXhwYW5kaW5nX2FsaWFz ICgpID8gKi8KLSAgICAgIHsKLSAgICAgICAgY29tbWFuZCA9IChDT01NQU5EICopTlVMTDsKLSoq KiAuLi9iYXNoLTUuMC9wYXRjaGxldmVsLmgJMjAxNi0wNi0yMiAxNDo1MTowMy4wMDAwMDAwMDAg LTA0MDAKLS0tLSBwYXRjaGxldmVsLmgJMjAxNi0xMC0wMSAxMTowMToyOC4wMDAwMDAwMDAgLTA0 MDAKLSoqKioqKioqKioqKioqKgotKioqIDI2LDMwICoqKioKLSAgICAgbG9va3MgZm9yIHRvIGZp bmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAK LSEgI2RlZmluZSBQQVRDSExFVkVMIDE0Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8g Ki8KLS0tLSAyNiwzMCAtLS0tCi0gICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZl bCAoZm9yIHRoZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KLSAgCi0hICNkZWZpbmUgUEFUQ0hM RVZFTCAxNQotICAKLSAgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCmRpZmYgLS1naXQgYS9z cmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUwLTAxNiBiL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAt MDE2CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2YyMzJkN2FkNC4uMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTYKKysrIC9kZXYvbnVsbApAQCAt MSw1OCArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0ggUkVQT1JUCi0JCQkgICAgID09PT09PT09 PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1QYXRjaC1JRDoJYmFzaDUwLTAxNgotCi1C dWctUmVwb3J0ZWQtYnk6CXN1bm55Y2VtZXRlcnlAZ21haWwuY29tCi1CdWctUmVmZXJlbmNlLUlE Ogk8MjAxOTAzMTYwNDE1MzQuR0IyMjg4NEBtaWRuaWdodD4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglo dHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTktMDMvbXNnMDAw NzAuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLUJhc2ggd2FpdHMgdG9vIGxvbmcgdG8gcmVh cCAvZGV2L2ZkIHByb2Nlc3Mgc3Vic3RpdHV0aW9ucyB1c2VkIGFzIHJlZGlyZWN0aW9ucwotd2l0 aCBsb29wcyBhbmQgZ3JvdXAgY29tbWFuZHMsIHdoaWNoIGNhbiBsZWFkIHRvIGZpbGUgZGVzY3Jp cHRvciBleGhhdXN0aW9uLgotCi1QYXRjaCAoYXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoq KiAuLi9iYXNoLTUuMC1wYXRjaGVkL2V4ZWN1dGVfY21kLmMJMjAxOS0wNC0xOSAxNTo0NjozNi4w MDAwMDAwMDAgLTA0MDAKLS0tLSBleGVjdXRlX2NtZC5jCTIwMTktMDctMDEgMTY6NDU6NDkuMDAw MDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiAxMTA0LDExMDcgKioqKgotLS0tIDEw ODUsMTEwNCAtLS0tCi0gICAgICAgIGRpc2NhcmRfdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxfZmlm b3MiKTsKLSAgICAgIH0KLSsgIyBpZiBkZWZpbmVkIChIQVZFX0RFVl9GRCkKLSsgICAvKiBSZWFw IHByb2Nlc3Mgc3Vic3RpdHV0aW9ucyBhdCB0aGUgZW5kIG9mIGxvb3BzICovCi0rICAgc3dpdGNo IChjb21tYW5kLT50eXBlKQotKyAgICAgewotKyAgICAgY2FzZSBjbV93aGlsZToKLSsgICAgIGNh c2UgY21fdW50aWw6Ci0rICAgICBjYXNlIGNtX2ZvcjoKLSsgICAgIGNhc2UgY21fZ3JvdXA6Ci0r ICMgICAgaWYgZGVmaW5lZCAoQVJJVEhfRk9SX0NPTU1BTkQpCi0rICAgICBjYXNlIGNtX2FyaXRo X2ZvcjoKLSsgIyAgICBlbmRpZgotKyAgICAgICByZWFwX3Byb2NzdWJzICgpOwotKyAgICAgZGVm YXVsdDoKLSsgICAgICAgYnJlYWs7Ci0rICAgICB9Ci0rICMgIGVuZGlmIC8qIEhBVkVfREVWX0ZE ICovCi0gICNlbmRpZgotICAKLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2 LTIyIDE0OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAx IDExOjAxOjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioq KgotICAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2 ZXJzaW9uIHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTUKLSAgCi0gICNl bmRpZiAvKiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9y IHRvIGZpbmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAq LwotICAKLSEgI2RlZmluZSBQQVRDSExFVkVMIDE2Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVW RUxfSF8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy9iYXNoNTAtMDE3IGIvc3Jj cGtncy9iYXNoL2ZpbGVzL2Jhc2g1MC0wMTcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGFkZmNiNmE4NjA2Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2Jhc2gvZmlsZXMvYmFzaDUw LTAxNworKysgL2Rldi9udWxsCkBAIC0xLDI4OSArMCwwIEBACi0JCQkgICAgIEJBU0ggUEFUQ0gg UkVQT1JUCi0JCQkgICAgID09PT09PT09PT09PT09PT09Ci0KLUJhc2gtUmVsZWFzZToJNS4wCi1Q YXRjaC1JRDoJYmFzaDUwLTAxNwotCi1CdWctUmVwb3J0ZWQtYnk6CVZhbGVudGluIExhYiA8dmFs ZW50aW4ubGFiQGthbHlzdG8ub3JnPgotQnVnLVJlZmVyZW5jZS1JRDoJPGFiOTgxYjljLTYwYTUt NDZkMC1iN2U2LWE2ZDg4YjgwZGY1MEBrYWx5c3RvLm9yZz4KLUJ1Zy1SZWZlcmVuY2UtVVJMOglo dHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMjAtMDMvbXNnMDAw NjIuaHRtbAotCi1CdWctRGVzY3JpcHRpb246Ci0KLVRoZXJlIHdlcmUgY2FzZXMgd2hlcmUgcGF0 Y2ggMTYgcmVhcGVkIHByb2Nlc3Mgc3Vic3RpdHV0aW9uIGZpbGUgZGVzY3JpcHRvcnMKLShvciBG SUZPcykgYW5kIHByb2Nlc3NlcyB0byBlYXJseS4gVGhpcyBpcyBhIGJldHRlciBmaXggZm9yIHRo ZSBwcm9ibGVtIHRoYXQKLWJhc2g1MC0wMTYgYXR0ZW1wdGVkIHRvIHNvbHZlLgotCi1QYXRjaCAo YXBwbHkgd2l0aCBgcGF0Y2ggLXAwJyk6Ci0KLSoqKiAuLi9iYXNoLTUuMC1wYXRjaGVkL3N1YnN0 LmMJMjAxOS0wOC0yOSAxMToxNjo0OS4wMDAwMDAwMDAgLTA0MDAKLS0tLSBzdWJzdC5jCTIwMjAt MDQtMDIgMTY6MjQ6MTkuMDAwMDAwMDAwIC0wNDAwCi0qKioqKioqKioqKioqKioKLSoqKiA1MzM3 LDUzNDEgKioqKgotICB9Ci0gIAotISBjaGFyICoKLSAgY29weV9maWZvX2xpc3QgKHNpemVwKQot ICAgICAgIGludCAqc2l6ZXA7Ci0tLS0gNTMzNyw1MzQxIC0tLS0KLSAgfQotICAKLSEgdm9pZCAq Ci0gIGNvcHlfZmlmb19saXN0IChzaXplcCkKLSAgICAgICBpbnQgKnNpemVwOwotKioqKioqKioq KioqKioqCi0qKiogNTM0Myw1MzQ3ICoqKioKLSAgICBpZiAoc2l6ZXApCi0gICAgICAqc2l6ZXAg PSAwOwotISAgIHJldHVybiAoY2hhciAqKU5VTEw7Ci0gIH0KLSAgCi0tLS0gNTM0Myw1MzQ3IC0t LS0KLSAgICBpZiAoc2l6ZXApCi0gICAgICAqc2l6ZXAgPSAwOwotISAgIHJldHVybiAodm9pZCAq KU5VTEw7Ci0gIH0KLSAgCi0qKioqKioqKioqKioqKioKLSoqKiA1NDA5LDU0MTQgKioqKgotICAJ aWYgKGZpZm9fbGlzdFtpXS5maWxlKQotICAJICB7Ci0hIAkgICAgZmlmb19saXN0W2pdLmZpbGUg PSBmaWZvX2xpc3RbaV0uZmlsZTsKLSEgCSAgICBmaWZvX2xpc3Rbal0ucHJvYyA9IGZpZm9fbGlz dFtpXS5wcm9jOwotICAJICAgIGorKzsKLSAgCSAgfQotLS0tIDU0MDksNTQxOSAtLS0tCi0gIAlp ZiAoZmlmb19saXN0W2ldLmZpbGUpCi0gIAkgIHsKLSEgCSAgICBpZiAoaSAhPSBqKQotISAJICAg ICAgewotISAJCWZpZm9fbGlzdFtqXS5maWxlID0gZmlmb19saXN0W2ldLmZpbGU7Ci0hIAkJZmlm b19saXN0W2pdLnByb2MgPSBmaWZvX2xpc3RbaV0ucHJvYzsKLSEgCQlmaWZvX2xpc3RbaV0uZmls ZSA9IChjaGFyICopTlVMTDsKLSEgCQlmaWZvX2xpc3RbaV0ucHJvYyA9IDA7Ci0hIAkgICAgICB9 Ci0gIAkgICAgaisrOwotICAJICB9Ci0qKioqKioqKioqKioqKioKLSoqKiA1NDI2LDU0MzMgKioq KgotICB2b2lkCi0gIGNsb3NlX25ld19maWZvcyAobGlzdCwgbHNpemUpCi0hICAgICAgY2hhciAq bGlzdDsKLSAgICAgICBpbnQgbHNpemU7Ci0gIHsKLSAgICBpbnQgaTsKLSAgCi0gICAgaWYgKGxp c3QgPT0gMCkKLS0tLSA1NDMxLDU0MzkgLS0tLQotICB2b2lkCi0gIGNsb3NlX25ld19maWZvcyAo bGlzdCwgbHNpemUpCi0hICAgICAgdm9pZCAqbGlzdDsKLSAgICAgICBpbnQgbHNpemU7Ci0gIHsK LSAgICBpbnQgaTsKLSsgICBjaGFyICpwbGlzdDsKLSAgCi0gICAgaWYgKGxpc3QgPT0gMCkKLSoq KioqKioqKioqKioqKgotKioqIDU0MzcsNTQ0MiAqKioqCi0gICAgICB9Ci0gIAotISAgIGZvciAo aSA9IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKGxpc3RbaV0gPT0gMCAmJiBpIDwgZmlm b19saXN0X3NpemUgJiYgZmlmb19saXN0W2ldLnByb2MgIT0gLTEpCi0gICAgICAgIHVubGlua19m aWZvIChpKTsKLSAgCi0tLS0gNTQ0Myw1NDQ4IC0tLS0KLSAgICAgIH0KLSAgCi0hICAgZm9yIChw bGlzdCA9IChjaGFyICopbGlzdCwgaSA9IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKHBs aXN0W2ldID09IDAgJiYgaSA8IGZpZm9fbGlzdF9zaXplICYmIGZpZm9fbGlzdFtpXS5wcm9jICE9 IC0xKQotICAgICAgICB1bmxpbmtfZmlmbyAoaSk7Ci0gIAotKioqKioqKioqKioqKioqCi0qKiog NTU2MCw1NTY4ICoqKioKLSAgfQotICAKLSEgY2hhciAqCi0gIGNvcHlfZmlmb19saXN0IChzaXpl cCkKLSAgICAgICBpbnQgKnNpemVwOwotICB7Ci0hICAgY2hhciAqcmV0OwotICAKLSAgICBpZiAo bmZkcyA9PSAwIHx8IHRvdGZkcyA9PSAwKQotLS0tIDU1NjYsNTU3NCAtLS0tCi0gIH0KLSAgCi0h IHZvaWQgKgotICBjb3B5X2ZpZm9fbGlzdCAoc2l6ZXApCi0gICAgICAgaW50ICpzaXplcDsKLSAg ewotISAgIHZvaWQgKnJldDsKLSAgCi0gICAgaWYgKG5mZHMgPT0gMCB8fCB0b3RmZHMgPT0gMCkK LSoqKioqKioqKioqKioqKgotKioqIDU1NzAsNTU3OSAqKioqCi0gICAgICAgIGlmIChzaXplcCkK LSAgCSpzaXplcCA9IDA7Ci0hICAgICAgIHJldHVybiAoY2hhciAqKU5VTEw7Ci0gICAgICB9Ci0g IAotICAgIGlmIChzaXplcCkKLSAgICAgICpzaXplcCA9IHRvdGZkczsKLSEgICByZXQgPSAoY2hh ciAqKXhtYWxsb2MgKHRvdGZkcyAqIHNpemVvZiAocGlkX3QpKTsKLSAgICByZXR1cm4gKG1lbWNw eSAocmV0LCBkZXZfZmRfbGlzdCwgdG90ZmRzICogc2l6ZW9mIChwaWRfdCkpKTsKLSAgfQotLS0t IDU1NzYsNTU4NSAtLS0tCi0gICAgICAgIGlmIChzaXplcCkKLSAgCSpzaXplcCA9IDA7Ci0hICAg ICAgIHJldHVybiAodm9pZCAqKU5VTEw7Ci0gICAgICB9Ci0gIAotICAgIGlmIChzaXplcCkKLSAg ICAgICpzaXplcCA9IHRvdGZkczsKLSEgICByZXQgPSB4bWFsbG9jICh0b3RmZHMgKiBzaXplb2Yg KHBpZF90KSk7Ci0gICAgcmV0dXJuIChtZW1jcHkgKHJldCwgZGV2X2ZkX2xpc3QsIHRvdGZkcyAq IHNpemVvZiAocGlkX3QpKSk7Ci0gIH0KLSoqKioqKioqKioqKioqKgotKioqIDU2NDgsNTY1NSAq KioqCi0gIHZvaWQKLSAgY2xvc2VfbmV3X2ZpZm9zIChsaXN0LCBsc2l6ZSkKLSEgICAgICBjaGFy ICpsaXN0OwotICAgICAgIGludCBsc2l6ZTsKLSAgewotICAgIGludCBpOwotICAKLSAgICBpZiAo bGlzdCA9PSAwKQotLS0tIDU2NTQsNTY2MiAtLS0tCi0gIHZvaWQKLSAgY2xvc2VfbmV3X2ZpZm9z IChsaXN0LCBsc2l6ZSkKLSEgICAgICB2b2lkICpsaXN0OwotICAgICAgIGludCBsc2l6ZTsKLSAg ewotICAgIGludCBpOwotKyAgIHBpZF90ICpwbGlzdDsKLSAgCi0gICAgaWYgKGxpc3QgPT0gMCkK LSoqKioqKioqKioqKioqKgotKioqIDU2NTksNTY2NCAqKioqCi0gICAgICB9Ci0gIAotISAgIGZv ciAoaSA9IDA7IGkgPCBsc2l6ZTsgaSsrKQotISAgICAgaWYgKGxpc3RbaV0gPT0gMCAmJiBpIDwg dG90ZmRzICYmIGRldl9mZF9saXN0W2ldKQotICAgICAgICB1bmxpbmtfZmlmbyAoaSk7Ci0gIAot LS0tIDU2NjYsNTY3MSAtLS0tCi0gICAgICB9Ci0gIAotISAgIGZvciAocGxpc3QgPSAocGlkX3Qg KilsaXN0LCBpID0gMDsgaSA8IGxzaXplOyBpKyspCi0hICAgICBpZiAocGxpc3RbaV0gPT0gMCAm JiBpIDwgdG90ZmRzICYmIGRldl9mZF9saXN0W2ldKQotICAgICAgICB1bmxpbmtfZmlmbyAoaSk7 Ci0gIAotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQvc3Vic3QuaAkyMDE4LTEwLTIxIDE4OjQ2OjA5 LjAwMDAwMDAwMCAtMDQwMAotLS0tIHN1YnN0LmgJMjAyMC0wNC0wMiAxNjoyOToyOC4wMDAwMDAw MDAgLTA0MDAKLSoqKioqKioqKioqKioqKgotKioqIDI3NCwyODAgKioqKgotICBleHRlcm4gdm9p ZCB1bmxpbmtfZmlmbyBfX1AoKGludCkpOwotICAKLSEgZXh0ZXJuIGNoYXIgKmNvcHlfZmlmb19s aXN0IF9fUCgoaW50ICopKTsKLSEgZXh0ZXJuIHZvaWQgdW5saW5rX25ld19maWZvcyBfX1AoKGNo YXIgKiwgaW50KSk7Ci0hIGV4dGVybiB2b2lkIGNsb3NlX25ld19maWZvcyBfX1AoKGNoYXIgKiwg aW50KSk7Ci0gIAotICBleHRlcm4gdm9pZCBjbGVhcl9maWZvX2xpc3QgX19QKCh2b2lkKSk7Ci0t LS0gMjc0LDI3OSAtLS0tCi0gIGV4dGVybiB2b2lkIHVubGlua19maWZvIF9fUCgoaW50KSk7Ci0g IAotISBleHRlcm4gdm9pZCAqY29weV9maWZvX2xpc3QgX19QKChpbnQgKikpOwotISBleHRlcm4g dm9pZCBjbG9zZV9uZXdfZmlmb3MgX19QKCh2b2lkICosIGludCkpOwotICAKLSAgZXh0ZXJuIHZv aWQgY2xlYXJfZmlmb19saXN0IF9fUCgodm9pZCkpOwotKioqIC4uL2Jhc2gtNS4wLXBhdGNoZWQv ZXhlY3V0ZV9jbWQuYwkyMDIwLTAyLTA2IDIwOjE2OjQ4LjAwMDAwMDAwMCAtMDUwMAotLS0tIGV4 ZWN1dGVfY21kLmMJMjAyMC0wNC0wMiAxNzowMDoxMC4wMDAwMDAwMDAgLTA0MDAKLSoqKioqKioq KioqKioqKgotKioqIDU2NSw1NjkgKioqKgotICAjaWYgZGVmaW5lZCAoUFJPQ0VTU19TVUJTVElU VVRJT04pCi0gICAgdm9sYXRpbGUgaW50IG9maWZvLCBuZmlmbywgb3NpemUsIHNhdmVkX2ZpZm87 Ci0hICAgdm9sYXRpbGUgY2hhciAqb2ZpZm9fbGlzdDsKLSAgI2VuZGlmCi0gIAotLS0tIDU2NSw1 NjkgLS0tLQotICAjaWYgZGVmaW5lZCAoUFJPQ0VTU19TVUJTVElUVVRJT04pCi0gICAgdm9sYXRp bGUgaW50IG9maWZvLCBuZmlmbywgb3NpemUsIHNhdmVkX2ZpZm87Ci0hICAgdm9sYXRpbGUgdm9p ZCAqb2ZpZm9fbGlzdDsKLSAgI2VuZGlmCi0gIAotKioqKioqKioqKioqKioqCi0qKiogNzUxLDc2 MCAqKioqCi0gICMgIGVuZGlmCi0gIAotISAgIGlmICh2YXJpYWJsZV9jb250ZXh0ICE9IDApCS8q IFhYWCAtIGFsc28gaWYgc291cmNlbGV2ZWwgIT0gMD8gKi8KLSAgICAgIHsKLSAgICAgICAgb2Zp Zm8gPSBudW1fZmlmb3MgKCk7Ci0gICAgICAgIG9maWZvX2xpc3QgPSBjb3B5X2ZpZm9fbGlzdCAo KGludCAqKSZvc2l6ZSk7Ci0gICAgICAgIGJlZ2luX3Vud2luZF9mcmFtZSAoImludGVybmFsX2Zp Zm9zIik7Ci0hICAgICAgIGFkZF91bndpbmRfcHJvdGVjdCAoeGZyZWUsIG9maWZvX2xpc3QpOwot ICAgICAgICBzYXZlZF9maWZvID0gMTsKLSAgICAgIH0KLS0tLSA3NTEsNzYyIC0tLS0KLSAgIyAg ZW5kaWYKLSAgCi0hICAgLyogWFhYIC0gYWxzbyBpZiBzb3VyY2VsZXZlbCAhPSAwPyAqLwotISAg IGlmICh2YXJpYWJsZV9jb250ZXh0ICE9IDApCi0gICAgICB7Ci0gICAgICAgIG9maWZvID0gbnVt X2ZpZm9zICgpOwotICAgICAgICBvZmlmb19saXN0ID0gY29weV9maWZvX2xpc3QgKChpbnQgKikm b3NpemUpOwotICAgICAgICBiZWdpbl91bndpbmRfZnJhbWUgKCJpbnRlcm5hbF9maWZvcyIpOwot ISAgICAgICBpZiAob2ZpZm9fbGlzdCkKLSEgCWFkZF91bndpbmRfcHJvdGVjdCAoeGZyZWUsIG9m aWZvX2xpc3QpOwotICAgICAgICBzYXZlZF9maWZvID0gMTsKLSAgICAgIH0KLSoqKioqKioqKioq KioqKgotKioqIDExMDAsMTEyMyAqKioqCi0gICAgICAgIG5maWZvID0gbnVtX2ZpZm9zICgpOwot ICAgICAgICBpZiAobmZpZm8gPiBvZmlmbykKLSEgCWNsb3NlX25ld19maWZvcyAoKGNoYXIgKilv Zmlmb19saXN0LCBvc2l6ZSk7Ci0gICAgICAgIGZyZWUgKCh2b2lkICopb2ZpZm9fbGlzdCk7Ci0g ICAgICAgIGRpc2NhcmRfdW53aW5kX2ZyYW1lICgiaW50ZXJuYWxfZmlmb3MiKTsKLSAgICAgIH0K LS0gIyBpZiBkZWZpbmVkIChIQVZFX0RFVl9GRCkKLS0gICAvKiBSZWFwIHByb2Nlc3Mgc3Vic3Rp dHV0aW9ucyBhdCB0aGUgZW5kIG9mIGxvb3BzICovCi0tICAgc3dpdGNoIChjb21tYW5kLT50eXBl KQotLSAgICAgewotLSAgICAgY2FzZSBjbV93aGlsZToKLS0gICAgIGNhc2UgY21fdW50aWw6Ci0t ICAgICBjYXNlIGNtX2ZvcjoKLS0gICAgIGNhc2UgY21fZ3JvdXA6Ci0tICMgICAgaWYgZGVmaW5l ZCAoQVJJVEhfRk9SX0NPTU1BTkQpCi0tICAgICBjYXNlIGNtX2FyaXRoX2ZvcjoKLS0gIyAgICBl bmRpZgotLSAgICAgICByZWFwX3Byb2NzdWJzICgpOwotLSAgICAgZGVmYXVsdDoKLS0gICAgICAg YnJlYWs7Ci0tICAgICB9Ci0tICMgIGVuZGlmIC8qIEhBVkVfREVWX0ZEICovCi0gICNlbmRpZgot ICAKLS0tLSAxMTAyLDExMDkgLS0tLQotICAgICAgICBuZmlmbyA9IG51bV9maWZvcyAoKTsKLSAg ICAgICAgaWYgKG5maWZvID4gb2ZpZm8pCi0hIAljbG9zZV9uZXdfZmlmb3MgKCh2b2lkICopb2Zp Zm9fbGlzdCwgb3NpemUpOwotICAgICAgICBmcmVlICgodm9pZCAqKW9maWZvX2xpc3QpOwotICAg ICAgICBkaXNjYXJkX3Vud2luZF9mcmFtZSAoImludGVybmFsX2ZpZm9zIik7Ci0gICAgICB9Ci0g ICNlbmRpZgotICAKLQotKioqIC4uL2Jhc2gtNS4wL3BhdGNobGV2ZWwuaAkyMDE2LTA2LTIyIDE0 OjUxOjAzLjAwMDAwMDAwMCAtMDQwMAotLS0tIHBhdGNobGV2ZWwuaAkyMDE2LTEwLTAxIDExOjAx OjI4LjAwMDAwMDAwMCAtMDQwMAotKioqKioqKioqKioqKioqCi0qKiogMjYsMzAgKioqKgotICAg ICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9u IHN0cmluZykuICovCi0gIAotISAjZGVmaW5lIFBBVENITEVWRUwgMTYKLSAgCi0gICNlbmRpZiAv KiBfUEFUQ0hMRVZFTF9IXyAqLwotLS0tIDI2LDMwIC0tLS0KLSAgICAgbG9va3MgZm9yIHRvIGZp bmQgdGhlIHBhdGNoIGxldmVsIChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLwotICAK LSEgI2RlZmluZSBQQVRDSExFVkVMIDE3Ci0gIAotICAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8g Ki8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFzaC9maWxlcy91cGRhdGUtYmFzaC1wYXRjaGVzLnNo IGIvc3JjcGtncy9iYXNoL2ZpbGVzL3VwZGF0ZS1iYXNoLXBhdGNoZXMuc2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNzU1CmluZGV4IDYzYzVlMjBjMjMzLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2Jhc2gvZmlsZXMvdXBkYXRlLWJhc2gtcGF0Y2hlcy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDcg KzAsMCBAQAotIyEvYmluL2Jhc2gKLXNvdXJjZSAuLi90ZW1wbGF0ZQotCi1mb3IgaSBpbiAkKHNl cSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7IGRvCi0JY3VybCBodHRwczovL2Z0cC5nbnUu b3JnL2dudS9iYXNoL2Jhc2gtJF9iYXNoX2Rpc3R2ZXItcGF0Y2hlcy9iYXNoJHtfYmFzaF9kaXN0 dmVyLy8uL30tJGkgXAotCQk+IGJhc2gke19iYXNoX2Rpc3R2ZXIvLy4vfS0ke19iYXNoX3BhdGNo bGV2ZWx9Ci1kb25lCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Jhc2gvdGVtcGxhdGUgYi9zcmNwa2dz L2Jhc2gvdGVtcGxhdGUKaW5kZXggOTFlMmU0YzFjYTMuLmFjMGM5ZDQ0MDlkIDEwMDY0NAotLS0g YS9zcmNwa2dzL2Jhc2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9iYXNoL3RlbXBsYXRlCkBAIC0x LDcgKzEsOSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYmFzaCcKIHBrZ25hbWU9YmFzaAotX2Jh c2hfZGlzdHZlcj01LjAKLV9iYXNoX3BhdGNobGV2ZWw9MDE3CitfbWFqb3I9NQorX21pbm9yPTAK K19iYXNoX2Rpc3R2ZXI9IiR7X21ham9yfS4ke19taW5vcn0iCitfYmFzaF9wYXRjaGxldmVsPTAx OAogdmVyc2lvbj0iJHtfYmFzaF9kaXN0dmVyfS4ke19iYXNoX3BhdGNobGV2ZWx9IgogcmV2aXNp b249MQogd3Jrc3JjPSIke3BrZ25hbWV9LSR7X2Jhc2hfZGlzdHZlcn0iCkBAIC0xNSw5ICsxNywz NiBAQCBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGlj ZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3d3dy5nbnUub3JnL3Nv ZnR3YXJlL2Jhc2gvYmFzaC5odG1sIgogZGlzdGZpbGVzPSIke0dOVV9TSVRFfS8ke3BrZ25hbWV9 LyR7cGtnbmFtZX0tJHtfYmFzaF9kaXN0dmVyfS50YXIuZ3oiCi1tYWtlX2RpcnM9Ii9ldGMvYmFz aC9iYXNocmMuZCA3NTUgcm9vdCByb290IgotY2hlY2tzdW09YjRhODBmMmFjNjYxNzBiMjkxM2Vm YmZiOWYyNTk0ZjFmNzZjN2IxYWZkMTFmNzk5ZTIyMDM1ZDYzMDc3ZmI0ZAogCitfdXJsPSIke0dO VV9TSVRFfS9iYXNoL2Jhc2gtJHtfYmFzaF9kaXN0dmVyfS1wYXRjaGVzIgorZm9yIF9wIGluICQo c2VxIC13IDAwMSAke19iYXNoX3BhdGNobGV2ZWx9KTsgZG8KKwlkaXN0ZmlsZXMrPSIgJHtfdXJs fS9iYXNoJHtfbWFqb3J9JHtfbWlub3J9LSR7X3B9IgorCXNraXBfZXh0cmFjdGlvbis9IiBiYXNo JHtfbWFqb3J9JHtfbWlub3J9LSR7X3B9IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKKwor Y2hlY2tzdW09ImI0YTgwZjJhYzY2MTcwYjI5MTNlZmJmYjlmMjU5NGYxZjc2YzdiMWFmZDExZjc5 OWUyMjAzNWQ2MzA3N2ZiNGQKKyBmMmZlOWUxZjBmYWRkZjE0YWI5YmZhODhkNDUwYTc1ZTVkMDI4 ZmVkYWZhZDIzYjg4NzE2YmQ2NTdjNzM3Mjg5CisgODdlODdkMzU0MmU1OTg3OTlhZGIzZTdlMDFj ODE2NWJjNzQzZTEzNmE0MDBlZDBkZTAxNTg0NWY3ZmY2ODcwNworIDRlZWJjZGMzN2IxMzc5M2Ey MzJjNWYyZjQ5OGE1ZmNiZjdkYTBlY2IzZGEyMDU5MzkxYzA5NmRiNjIwZWM4NWIKKyAxNDQ0N2Fk ODMyYWRkOGVjZmFmZGNlNTM4NGJhZGQ5MzM2OTdiNTU5YzQ2ODhkNmI5ZTNkMzZmZjM2YzYyZjA4 CisgNWJmNTRkZDliZDJjMjExZDJiZmIzNGE0OWUyYzc0MWYyZWQ1ZTMzODc2N2U5Y2U5ZjRkNDEy NTRiZjlmODI3NgorIGQ2ODUyOWE2ZmYyMDFiNmZmNTkxNTMxOGFiMTJmYzE2YjhhMGViYjc3ZmRh MzMwODMwM2ZjYzFlMTMzOTg0MjAKKyAxN2I0MWU3ZWUzNjczZDg4ODdkZDI1OTkyNDE3YTM5ODY3 NzUzM2FiODgyNzkzOGFhNDFmYWQ3MGRmMTlhZjliCisgZWVjNjQ1ODg2MjJhODJhNTAyOWIyNzc2 ZTIxOGE3NWEzNjQwYmVmNDk1M2YwOWQ2ZWUxZjQxOTk2NzBhZDdlMworIGVkM2NhMjE3NjczMDNm YzNkZTkzOTM0YWE1MjRjMmU5MjA3ODdjNTA2YjYwMWNjNDBhNDg5N2Q0YjA5NGQ5MDMKKyBkNmZi YzMyNWYwYjVkYzU0ZGRiZThlZTQzMDIwYmNlZDhiZDU4OWRkZmZlYTU5ZDEyOGRiMTRiMmU1MmE4 YTExCisgMmM0ZGUzMzJiOTFlYWY3OTdhYmJiZDZjNzk3MDk2OTBiNWNiZDQ4YjEyZThkZmU3NDgw OTZkYmQ3YmY0NzRlYQorIDI5NDNlZTE5Njg4MDE4Mjk2ZjJhMDRkYmZlMzBiNzEzOGI4ODk3MDBl ZmE4ZmYxYzA1MjRhZjI3MWUwZWUyMzMKKyBmNWQ3MTc4ZDhkYTMwNzk5ZTAxYjgzYTA4MDIwMThk OTEzZDZhYTk3MmRkMmRkYWQzYjkyN2YzZjNlYjcwOTlhCisgNWQ2ZWVlNjUxNGVlNmUyMmE4N2Ji YThkMjJiZTBhODYyMWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFmNzJhZjU4OQorIGE1MTdkZjJkZGE5 M2IyNmQ1Y2JmMDBlZmZlZmVhOTNlM2E0Y2NkNjY1MmYxNTJmNDEwOTE3MDU0NGViZmEwNWUKKyBm ZmQxZDdhNTRhOTlmYTdmNWIxODI1ZTRmN2U5NWQ4Yzg4NzZiYzJjYTE1MWYxNTBlNzUxZDQyOWM2 NTBiMDZkCisgNGNmM2I5ZmFmYjhhNjZkNDExZGQ1ZmM5MTIwMDMyNTMzYTQwMTJkZjFkYzZlZTAy NGM3ODMzMzczZTJkZGMzMQorIDdjMzE0ZTM3NWExMDVhNjY0MmU4ZWQ0NGYzODA4YjlkZWY4OWQx NWY3NDkyZmUyMDI5YTIxYmE5YzBkZTgxZDMiCisKK21ha2VfZGlycz0iL2V0Yy9iYXNoL2Jhc2hy Yy5kIDc1NSByb290IHJvb3QiCiBjb25mbGljdHM9ImNocm9vdC1iYXNoPj0wIgogcmVnaXN0ZXJf c2hlbGw9Ii91c3IvYmluL2Jhc2ggL2Jpbi9iYXNoIgogCkBAIC0yNywxMyArNTYsMTEgQEAgYWx0 ZXJuYXRpdmVzPSIKIAogQ0ZMQUdTPSItRFNZU19CQVNIUkM9J1wiL2V0Yy9iYXNoL2Jhc2hyY1wi JyIKIAotcHJlX2NvbmZpZ3VyZSgpIHsKLQlsb2NhbCB2ZXI9JChlY2hvICR7X2Jhc2hfZGlzdHZl cn18c2VkICJzfFwufHxnIikKLQorcG9zdF9wYXRjaCgpIHsKIAljZCAke3dya3NyY30KIAlmb3Ig cCBpbiAkKHNlcSAtdyAwMDEgJHtfYmFzaF9wYXRjaGxldmVsfSk7IGRvCi0JCXBhdGNoIC1zTnAw IC1pICR7RklMRVNESVJ9L2Jhc2gke3Zlcn0tJHtwfQotCQltc2dfbm9ybWFsICIgQXBwbHlpbmcg cGF0Y2ggYmFzaCR7dmVyfS0kcC5cbiIKKwkJbXNnX25vcm1hbCAiIEFwcGx5aW5nIHBhdGNoIGJh c2gke19tYWpvcn0ke19taW5vcn0tJHAuXG4iCisJCXBhdGNoIC1zTnAwIC1pICR7WEJQU19TUkNE SVNURElSfS9iYXNoLSR2ZXJzaW9uL2Jhc2gke19tYWpvcn0ke19taW5vcn0tJHtwfQogCWRvbmUK IH0KIAoKRnJvbSA4YmU1ZWRhNmIyMzczOTM1NzZlZTIwZTg5MjU4OGJjMTA1YWY2NDgwIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1F MT1CQT1BN249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKdWwgMjAyMCAxMjoxMzowNyArMDcwMApTdWJqZWN0OiBbUEFUQ0ggNC80XSBs aWJyZWFkbGluZTg6IHZlcmlmeSBwYXRjaCdzIGNoZWNrc3VtCgotLS0KIHNyY3BrZ3MvbGlicmVh ZGxpbmU4L3RlbXBsYXRlIHwgMjQgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9saWJyZWFkbGluZTgvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYnJlYWRsaW5lOC90ZW1wbGF0 ZQppbmRleCA2MjAwMTk1YmU5ZS4uNTdjNGEzZWMzNDggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGli cmVhZGxpbmU4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGlicmVhZGxpbmU4L3RlbXBsYXRlCkBA IC0xNCwyMiArMTQsMTggQEAgbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgu b3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly90aXN3 d3cuY3dydS5lZHUvcGhwL2NoZXQvcmVhZGxpbmUvcmx0b3AuaHRtbCIKIGRpc3RmaWxlcz0iJHtH TlVfU0lURX0vcmVhZGxpbmUvcmVhZGxpbmUtJHtfZGlzdF92ZXJ9LnRhci5neiIKLWNoZWNrc3Vt PWUzMzlmNTE5NzE0NzhkMzY5ZjhhMDUzYTMzMGExOTA3ODFhY2I5ODY0Y2Y0YzU0MTA2MGYxMjA3 ODk0OGU0NjEKIAotcHJlX2NvbmZpZ3VyZSgpIHsKLQlsb2NhbCB1cmw9IiR7R05VX1NJVEV9L3Jl YWRsaW5lL3JlYWRsaW5lLSR7X2Rpc3RfdmVyfS1wYXRjaGVzIgorX3VybD0iJHtHTlVfU0lURX0v cmVhZGxpbmUvcmVhZGxpbmUtJHtfZGlzdF92ZXJ9LXBhdGNoZXMiCitmb3IgX3AgaW4gJChzZXEg LXcgMDAxICR7X3BhdGNoX3Zlcn0pOyBkbworCWRpc3RmaWxlcys9IiAke191cmx9L3JlYWRsaW5l JHtfZGlzdF92ZXIvLi99LSR7X3B9IgorZG9uZQordW5zZXQgX3VybAordW5zZXQgX3AKIAotCWNk ICR7WEJQU19TUkNESVNURElSfS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0KLQlpZiBbICIke19wYXRj aF92ZXJ9IiAtZ3QgMDAwIF07IHRoZW4KLQkJZm9yIHAgaW4gJChzZXEgLXcgMDAxICR7X3BhdGNo X3Zlcn0pOyBkbwotCQkJaWYgWyAtZiByZWFkbGluZSR7dmVyc2lvbi8uL30tJHtwfSBdOyB0aGVu Ci0JCQkJY29udGludWUKLQkJCWZpCi0JCQlsb2NhbCBwYXRjaF91cmw9IiR7dXJsfS9yZWFkbGlu ZSR7X2Rpc3RfdmVyLy4vfS0ke3B9IgotCQkJbXNnX25vcm1hbCAiIEZldGNoaW5nICR7cGF0Y2hf dXJsfSAuLi5cbiIKLQkJCSRYQlBTX0ZFVENIX0NNRCAiJHtwYXRjaF91cmx9IgotCQlkb25lCi0J ZmkKK2NoZWNrc3VtPSJlMzM5ZjUxOTcxNDc4ZDM2OWY4YTA1M2EzMzBhMTkwNzgxYWNiOTg2NGNm NGM1NDEwNjBmMTIwNzg5NDhlNDYxCisgZDhlNWU5ODkzM2NmNTc1NmY4NjIyNDNjMDYwMWNiNjlk MzY2N2JiMzNmMmM3Yjc1MWZlNGU0MGIyYzNmZDA2OSIKKworcG9zdF9wYXRjaCgpIHsKIAljZCAk e3dya3NyY30KIAlmb3IgcCBpbiAkKHNlcSAtdyAwMDEgJHtfcGF0Y2hfdmVyfSk7IGRvCiAJCXBh dGNoIC1zIC1OcDAgLWkgJHtYQlBTX1NSQ0RJU1RESVJ9LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS9y ZWFkbGluZSR7X2Rpc3RfdmVyLy4vfS0ke3B9Cg== --===============8671040050312741806==--