From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Disseldorp Subject: Re: [PATCH] Ceph RADOS cluster mutex helper for Samba CTDB Date: Thu, 8 Dec 2016 19:39:54 +0100 Message-ID: <20161208193954.7ce6b896@suse.de> References: <20161201151715.019228c1@suse.de> <20161206131404.38f737d0@suse.de> <20161206131827.273bd9b8@suse.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/O5v1XH+8Hkp.a1F6WsUa1_l" Return-path: Received: from mx2.suse.de ([195.135.220.15]:48463 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752105AbcLHSj5 (ORCPT ); Thu, 8 Dec 2016 13:39:57 -0500 In-Reply-To: Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Amitay Isaacs Cc: Samba Technical , "ceph-devel@vger.kernel.org" --MP_/O5v1XH+8Hkp.a1F6WsUa1_l Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Amitay, On Wed, 7 Dec 2016 13:32:34 +1100, Amitay Isaacs wrote: > Hi David, > > On Tue, Dec 6, 2016 at 11:18 PM, David Disseldorp wrote: > > > This time with the patch-set attached... > > > > > ctdb/doc/Makefile | 3 +- > > > ctdb/doc/ctdb_mutex_ceph_rados_helper.7.xml | 90 +++++ > > > .../utils/ceph/ctdb_mutex_ceph_rados_helper.c | 334 ++++++++++++++++++ > > > ctdb/utils/ceph/test_ceph_rados_reclock.sh | 151 ++++++++ > > > ctdb/wscript | 19 + > > > 5 files changed, 596 insertions(+), 1 deletion(-) > > > > In patch 1, why do you need to include any of the CTDB files > (protocol/protocol.h and common/system.h) and have dependency on > ctdb-system? I don't see you are using any of the functions defined in > common/system.h. > > Please include the manpage in SAMBA_BINARY() definition. Also include it in > manpages[] list. It might be better to merge patch 1 and patch 2. Thanks for the feedback. Please find a new version attached (atop the etcd changes), attempting to address your points above: - drop unnecessary includes and ctdb-system dependency + add separate talloc and tevent deps + use tevent_timeval_current_ofs() instead of timeval_current_ofs() - conditionally generate the man page Cheers, David --MP_/O5v1XH+8Hkp.a1F6WsUa1_l Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=ctdb_reclock_ceph_v3.patchset RnJvbSA1NGMxNmFjMWRmYWZiMDYxMTFhZWFmYjIzNzdiMDZiZDVkYjM2OTk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogRGF2aWQgRGlzc2VsZG9ycCA8ZGRpc3NAc2FtYmEub3JnPg0K RGF0ZTogVGh1LCAxIERlYyAyMDE2IDEzOjMzOjIyICswMTAwDQpTdWJqZWN0OiBbUEFUQ0ggMS8z XSBjdGRiOiBjbHVzdGVyIG11dGV4IGhlbHBlciB1c2luZyBDZXBoIFJBRE9TDQoNCmN0ZGJfbXV0 ZXhfY2VwaF9yYWRvc19oZWxwZXIgaW1wbGVtZW50cyB0aGUgY2x1c3RlciBtdXRleCBoZWxwZXIg QVBJDQphdG9wIENlcGggdXNpbmcgdGhlIGxpYnJhZG9zIHJhZG9zX2xvY2tfZXhjbHVzaXZlKCkv cmFkb3NfdW5sb2NrKCkNCmZ1bmN0aW9uYWxpdHkuDQoNCk9uY2UgY29uZmlndXJlZCwgc3BsaXQg YnJhaW4gYXZvaWRhbmNlIGR1cmluZyBDVERCIHJlY292ZXJ5IHdpbGwgYmUNCmhhbmRsZWQgdXNp bmcgbG9ja3MgYWdhaW5zdCBhbiBvYmplY3QgbG9jYXRlZCBpbiBhIENlcGggUkFET1MgcG9vbC4N Cg0KU2lnbmVkLW9mZi1ieTogRGF2aWQgRGlzc2VsZG9ycCA8ZGRpc3NAc2FtYmEub3JnPg0KLS0t DQogY3RkYi91dGlscy9jZXBoL2N0ZGJfbXV0ZXhfY2VwaF9yYWRvc19oZWxwZXIuYyB8IDMyOCAr KysrKysrKysrKysrKysrKysrKysrKysrDQogY3RkYi93c2NyaXB0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAxOSArKw0KIDIgZmlsZXMgY2hhbmdlZCwgMzQ3IGluc2VydGlv bnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgY3RkYi91dGlscy9jZXBoL2N0ZGJfbXV0ZXhfY2Vw aF9yYWRvc19oZWxwZXIuYw0KDQpkaWZmIC0tZ2l0IGEvY3RkYi91dGlscy9jZXBoL2N0ZGJfbXV0 ZXhfY2VwaF9yYWRvc19oZWxwZXIuYyBiL2N0ZGIvdXRpbHMvY2VwaC9jdGRiX211dGV4X2NlcGhf cmFkb3NfaGVscGVyLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi4zMjZh MGIwDQotLS0gL2Rldi9udWxsDQorKysgYi9jdGRiL3V0aWxzL2NlcGgvY3RkYl9tdXRleF9jZXBo X3JhZG9zX2hlbHBlci5jDQpAQCAtMCwwICsxLDMyOCBAQA0KKy8qDQorICAgQ1REQiBtdXRleCBo ZWxwZXIgdXNpbmcgQ2VwaCBsaWJyYWRvcyBsb2Nrcw0KKw0KKyAgIENvcHlyaWdodCAoQykgRGF2 aWQgRGlzc2VsZG9ycCAyMDE2DQorDQorICAgQmFzZWQgb24gY3RkYl9tdXRleF9mY250bF9oZWxw ZXIuYywgd2hpY2ggaXM6DQorICAgQ29weXJpZ2h0IChDKSBNYXJ0aW4gU2Nod2Vua2UgMjAxNQ0K Kw0KKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorDQorICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YNCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlDQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4NCisNCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQorKi8NCisNCisjaW5jbHVk ZSAicmVwbGFjZS5oIg0KKw0KKyNpbmNsdWRlICJ0ZXZlbnQuaCINCisjaW5jbHVkZSAidGFsbG9j LmgiDQorI2luY2x1ZGUgInJhZG9zL2xpYnJhZG9zLmgiDQorDQorI2RlZmluZSBDVERCX01VVEVY X0NFUEhfTE9DS19OQU1FCSJjdGRiX3JlY2xvY2tfbXV0ZXgiDQorI2RlZmluZSBDVERCX01VVEVY X0NFUEhfTE9DS19DT09LSUUJQ1REQl9NVVRFWF9DRVBIX0xPQ0tfTkFNRQ0KKyNkZWZpbmUgQ1RE Ql9NVVRFWF9DRVBIX0xPQ0tfREVTQwkiQ1REQiByZWNvdmVyeSBsb2NrIg0KKw0KKyNkZWZpbmUg Q1REQl9NVVRFWF9TVEFUVVNfSE9MRElORyAiMCINCisjZGVmaW5lIENUREJfTVVURVhfU1RBVFVT X0NPTlRFTkRFRCAiMSINCisjZGVmaW5lIENUREJfTVVURVhfU1RBVFVTX1RJTUVPVVQgIjIiDQor I2RlZmluZSBDVERCX01VVEVYX1NUQVRVU19FUlJPUiAiMyINCisNCitzdGF0aWMgY2hhciAqcHJv Z25hbWUgPSBOVUxMOw0KKw0KK3N0YXRpYyBpbnQgY3RkYl9tdXRleF9yYWRvc19jdHhfY3JlYXRl KGNvbnN0IGNoYXIgKmNlcGhfY2x1c3Rlcl9uYW1lLA0KKwkJCQkgICAgICAgY29uc3QgY2hhciAq Y2VwaF9hdXRoX25hbWUsDQorCQkJCSAgICAgICBjb25zdCBjaGFyICpwb29sX25hbWUsDQorCQkJ CSAgICAgICByYWRvc190ICpfY2VwaF9jbHVzdGVyLA0KKwkJCQkgICAgICAgcmFkb3NfaW9jdHhf dCAqX2lvY3R4KQ0KK3sNCisJcmFkb3NfdCBjZXBoX2NsdXN0ZXIgPSBOVUxMOw0KKwlyYWRvc19p b2N0eF90IGlvY3R4ID0gTlVMTDsNCisJaW50IHJldDsNCisNCisJcmV0ID0gcmFkb3NfY3JlYXRl MigmY2VwaF9jbHVzdGVyLCBjZXBoX2NsdXN0ZXJfbmFtZSwgY2VwaF9hdXRoX25hbWUsIDApOw0K KwlpZiAocmV0IDwgMCkgew0KKwkJZnByaW50ZihzdGRlcnIsICIlczogZmFpbGVkIHRvIGluaXRp YWxpc2UgQ2VwaCBjbHVzdGVyICVzIGFzICVzIg0KKwkJCSIgLSAoJXMpXG4iLCBwcm9nbmFtZSwg Y2VwaF9jbHVzdGVyX25hbWUsIGNlcGhfYXV0aF9uYW1lLA0KKwkJCXN0cmVycm9yKC1yZXQpKTsN CisJCXJldHVybiByZXQ7DQorCX0NCisNCisJLyogcGF0aD1OVUxMIHRlbGxzIGxpYnJhZG9zIHRv IHVzZSBkZWZhdWx0IGxvY2F0aW9ucyAqLw0KKwlyZXQgPSByYWRvc19jb25mX3JlYWRfZmlsZShj ZXBoX2NsdXN0ZXIsIE5VTEwpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZnByaW50ZihzdGRlcnIs ICIlczogZmFpbGVkIHRvIHBhcnNlIENlcGggY2x1c3RlciBjb25maWciDQorCQkJIiAtICglcylc biIsIHByb2duYW1lLCBzdHJlcnJvcigtcmV0KSk7DQorCQlyYWRvc19zaHV0ZG93bihjZXBoX2Ns dXN0ZXIpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwlyZXQgPSByYWRvc19jb25uZWN0KGNl cGhfY2x1c3Rlcik7DQorCWlmIChyZXQgPCAwKSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBm YWlsZWQgdG8gY29ubmVjdCB0byBDZXBoIGNsdXN0ZXIgJXMgYXMgJXMiDQorCQkJIiAtICglcylc biIsIHByb2duYW1lLCBjZXBoX2NsdXN0ZXJfbmFtZSwgY2VwaF9hdXRoX25hbWUsDQorCQkJc3Ry ZXJyb3IoLXJldCkpOw0KKwkJcmFkb3Nfc2h1dGRvd24oY2VwaF9jbHVzdGVyKTsNCisJCXJldHVy biByZXQ7DQorCX0NCisNCisNCisJcmV0ID0gcmFkb3NfaW9jdHhfY3JlYXRlKGNlcGhfY2x1c3Rl ciwgcG9vbF9uYW1lLCAmaW9jdHgpOw0KKwlpZiAocmV0IDwgMCkgew0KKwkJZnByaW50ZihzdGRl cnIsICIlczogZmFpbGVkIHRvIGNyZWF0ZSBDZXBoIGlvY3R4IGZvciBwb29sICVzIg0KKwkJCSIg LSAoJXMpXG4iLCBwcm9nbmFtZSwgcG9vbF9uYW1lLCBzdHJlcnJvcigtcmV0KSk7DQorCQlyYWRv c19zaHV0ZG93bihjZXBoX2NsdXN0ZXIpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwkqX2Nl cGhfY2x1c3RlciA9IGNlcGhfY2x1c3RlcjsNCisJKl9pb2N0eCA9IGlvY3R4Ow0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQgY3RkYl9tdXRleF9yYWRvc19jdHhfZGVzdHJveShy YWRvc190IGNlcGhfY2x1c3RlciwNCisJCQkJCSByYWRvc19pb2N0eF90IGlvY3R4KQ0KK3sNCisJ cmFkb3NfaW9jdHhfZGVzdHJveShpb2N0eCk7DQorCXJhZG9zX3NodXRkb3duKGNlcGhfY2x1c3Rl cik7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3RkYl9tdXRleF9yYWRvc19sb2NrKHJhZG9zX2lvY3R4 X3QgKmlvY3R4LA0KKwkJCQkgY29uc3QgY2hhciAqb2lkKQ0KK3sNCisJaW50IHJldDsNCisNCisJ cmV0ID0gcmFkb3NfbG9ja19leGNsdXNpdmUoaW9jdHgsIG9pZCwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENUREJfTVVURVhfQ0VQSF9MT0NLX05BTUUsDQorCQkJCSAgIENU REJfTVVURVhfQ0VQSF9MT0NLX0NPT0tJRSwNCisJCQkJICAgQ1REQl9NVVRFWF9DRVBIX0xPQ0tf REVTQywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIGluZmlu aXRlIGR1cmF0aW9uICovDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsN CisJaWYgKChyZXQgPT0gLUVFWElTVCkgfHwgKHJldCA9PSAtRUJVU1kpKSB7DQorCQkvKiBsb2Nr IGNvbnRlbnRpb24gKi8NCisJCXJldHVybiByZXQ7DQorCX0gZWxzZSBpZiAocmV0IDwgMCkgew0K KwkJLyogdW5leHBlY3RlZCBmYWlsdXJlICovDQorCQlmcHJpbnRmKHN0ZGVyciwNCisJCQkiJXM6 IEZhaWxlZCB0byBnZXQgbG9jayBvbiBSQURPUyBvYmplY3QgJyVzJyAtICglcylcbiIsDQorCQkJ cHJvZ25hbWUsIG9pZCwgc3RyZXJyb3IoLXJldCkpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0K KwkvKiBsb2NrIG9idGFpbmVkICovDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGN0 ZGJfbXV0ZXhfcmFkb3NfdW5sb2NrKHJhZG9zX2lvY3R4X3QgKmlvY3R4LA0KKwkJCQkgICBjb25z dCBjaGFyICpvaWQpDQorew0KKwlpbnQgcmV0Ow0KKw0KKwlyZXQgPSByYWRvc191bmxvY2soaW9j dHgsIG9pZCwNCisJCQkgICBDVERCX01VVEVYX0NFUEhfTE9DS19OQU1FLA0KKwkJCSAgIENUREJf TVVURVhfQ0VQSF9MT0NLX0NPT0tJRSk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlmcHJpbnRmKHN0 ZGVyciwNCisJCQkiJXM6IEZhaWxlZCB0byBkcm9wIGxvY2sgb24gUkFET1Mgb2JqZWN0ICclcycg LSAoJXMpXG4iLA0KKwkJCXByb2duYW1lLCBvaWQsIHN0cmVycm9yKC1yZXQpKTsNCisJCXJldHVy biByZXQ7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0cnVjdCBjdGRiX211dGV4X3Jh ZG9zX3N0YXRlIHsNCisJYm9vbCBob2xkaW5nX211dGV4Ow0KKwljb25zdCBjaGFyICpjZXBoX2Ns dXN0ZXJfbmFtZTsNCisJY29uc3QgY2hhciAqY2VwaF9hdXRoX25hbWU7DQorCWNvbnN0IGNoYXIg KnBvb2xfbmFtZTsNCisJY29uc3QgY2hhciAqb2JqZWN0Ow0KKwlpbnQgcHBpZDsNCisJc3RydWN0 IHRldmVudF9jb250ZXh0ICpldjsNCisJc3RydWN0IHRldmVudF9zaWduYWwgKnNpZ19ldjsNCisJ c3RydWN0IHRldmVudF90aW1lciAqdGltZXJfZXY7DQorCXJhZG9zX3QgY2VwaF9jbHVzdGVyOw0K KwlyYWRvc19pb2N0eF90IGlvY3R4Ow0KK307DQorDQorc3RhdGljIHZvaWQgY3RkYl9tdXRleF9y YWRvc19zaWd0ZXJtX2NiKHN0cnVjdCB0ZXZlbnRfY29udGV4dCAqZXYsDQorCQkJCQlzdHJ1Y3Qg dGV2ZW50X3NpZ25hbCAqc2UsDQorCQkJCQlpbnQgc2lnbnVtLA0KKwkJCQkJaW50IGNvdW50LA0K KwkJCQkJdm9pZCAqc2lnaW5mbywNCisJCQkJCXZvaWQgKnByaXZhdGVfZGF0YSkNCit7DQorCXN0 cnVjdCBjdGRiX211dGV4X3JhZG9zX3N0YXRlICpjbXJfc3RhdGUgPSBwcml2YXRlX2RhdGE7DQor CWludCByZXQ7DQorDQorCWlmICghY21yX3N0YXRlLT5ob2xkaW5nX211dGV4KSB7DQorCQlmcHJp bnRmKHN0ZGVyciwgIlNpZ3Rlcm0gY2FsbGJhY2sgaW52b2tlZCB3aXRob3V0IG11dGV4IVxuIik7 DQorCQlyZXQgPSAtRUlOVkFMOw0KKwkJZ290byBlcnJfY3R4X2NsZWFudXA7DQorCX0NCisNCisJ cmV0ID0gY3RkYl9tdXRleF9yYWRvc191bmxvY2soY21yX3N0YXRlLT5pb2N0eCwgY21yX3N0YXRl LT5vYmplY3QpOw0KK2Vycl9jdHhfY2xlYW51cDoNCisJY3RkYl9tdXRleF9yYWRvc19jdHhfZGVz dHJveShjbXJfc3RhdGUtPmNlcGhfY2x1c3RlciwNCisJCQkJICAgICBjbXJfc3RhdGUtPmlvY3R4 KTsNCisJdGFsbG9jX2ZyZWUoY21yX3N0YXRlKTsNCisJZXhpdChyZXQgPyAxIDogMCk7DQorfQ0K Kw0KK3N0YXRpYyB2b2lkIGN0ZGJfbXV0ZXhfcmFkb3NfdGltZXJfY2Ioc3RydWN0IHRldmVudF9j b250ZXh0ICpldiwNCisJCQkJICAgICAgc3RydWN0IHRldmVudF90aW1lciAqdGUsDQorCQkJCSAg ICAgIHN0cnVjdCB0aW1ldmFsIGN1cnJlbnRfdGltZSwNCisJCQkJICAgICAgdm9pZCAqcHJpdmF0 ZV9kYXRhKQ0KK3sNCisJc3RydWN0IGN0ZGJfbXV0ZXhfcmFkb3Nfc3RhdGUgKmNtcl9zdGF0ZSA9 IHByaXZhdGVfZGF0YTsNCisJaW50IHJldDsNCisNCisJaWYgKCFjbXJfc3RhdGUtPmhvbGRpbmdf bXV0ZXgpIHsNCisJCWZwcmludGYoc3RkZXJyLCAiVGltZXIgY2FsbGJhY2sgaW52b2tlZCB3aXRo b3V0IG11dGV4IVxuIik7DQorCQlyZXQgPSAtRUlOVkFMOw0KKwkJZ290byBlcnJfY3R4X2NsZWFu dXA7DQorCX0NCisNCisJaWYgKChraWxsKGNtcl9zdGF0ZS0+cHBpZCwgMCkgPT0gMCkgfHwgKGVy cm5vICE9IEVTUkNIKSkgew0KKwkJLyogcGFyZW50IHN0aWxsIGFyb3VuZCwga2VlcCB3YWl0aW5n ICovDQorCQljbXJfc3RhdGUtPnRpbWVyX2V2ID0gdGV2ZW50X2FkZF90aW1lcihjbXJfc3RhdGUt PmV2LCBjbXJfc3RhdGUsDQorCQkJCQkgICAgICAgdGV2ZW50X3RpbWV2YWxfY3VycmVudF9vZnMo NSwgMCksDQorCQkJCQkJICAgICAgY3RkYl9tdXRleF9yYWRvc190aW1lcl9jYiwNCisJCQkJCQkg ICAgICAgY21yX3N0YXRlKTsNCisJCWlmIChjbXJfc3RhdGUtPnRpbWVyX2V2ID09IE5VTEwpIHsN CisJCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgdGltZXIgZXZlbnRcbiIpOw0K KwkJCS8qIHJlbHkgb24gc2lnbmFsIGNiICovDQorCQl9DQorCQlyZXR1cm47DQorCX0NCisNCisJ LyogcGFyZW50IGVuZGVkLCBkcm9wIGxvY2sgYW5kIGV4aXQgKi8NCisJcmV0ID0gY3RkYl9tdXRl eF9yYWRvc191bmxvY2soY21yX3N0YXRlLT5pb2N0eCwgY21yX3N0YXRlLT5vYmplY3QpOw0KK2Vy cl9jdHhfY2xlYW51cDoNCisJY3RkYl9tdXRleF9yYWRvc19jdHhfZGVzdHJveShjbXJfc3RhdGUt PmNlcGhfY2x1c3RlciwNCisJCQkJICAgICBjbXJfc3RhdGUtPmlvY3R4KTsNCisJdGFsbG9jX2Zy ZWUoY21yX3N0YXRlKTsNCisJZXhpdChyZXQgPyAxIDogMCk7DQorfQ0KKw0KK2ludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgY3RkYl9tdXRl eF9yYWRvc19zdGF0ZSAqY21yX3N0YXRlOw0KKw0KKwlwcm9nbmFtZSA9IGFyZ3ZbMF07DQorDQor CWlmIChhcmdjICE9IDUpIHsNCisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIDxDZXBoIENs dXN0ZXI+IDxDZXBoIHVzZXI+ICINCisJCQkJIjxSQURPUyBwb29sPiA8UkFET1Mgb2JqZWN0Plxu IiwNCisJCQlwcm9nbmFtZSk7DQorCQlyZXQgPSAtRUlOVkFMOw0KKwkJZ290byBlcnJfb3V0Ow0K Kwl9DQorDQorCXJldCA9IHNldHZidWYoc3Rkb3V0LCBOVUxMLCBfSU9OQkYsIDApOw0KKwlpZiAo cmV0ICE9IDApIHsNCisJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSB1bmJ1 ZmZlcmVkIHN0ZG91dCBJL09cbiIpOw0KKwl9DQorDQorCWNtcl9zdGF0ZSA9IHRhbGxvY196ZXJv KE5VTEwsIHN0cnVjdCBjdGRiX211dGV4X3JhZG9zX3N0YXRlKTsNCisJaWYgKGNtcl9zdGF0ZSA9 PSBOVUxMKSB7DQorCQlmcHJpbnRmKHN0ZG91dCwgQ1REQl9NVVRFWF9TVEFUVVNfRVJST1IpOw0K KwkJcmV0ID0gLUVOT01FTTsNCisJCWdvdG8gZXJyX291dDsNCisJfQ0KKw0KKwljbXJfc3RhdGUt PmNlcGhfY2x1c3Rlcl9uYW1lID0gYXJndlsxXTsNCisJY21yX3N0YXRlLT5jZXBoX2F1dGhfbmFt ZSA9IGFyZ3ZbMl07DQorCWNtcl9zdGF0ZS0+cG9vbF9uYW1lID0gYXJndlszXTsNCisJY21yX3N0 YXRlLT5vYmplY3QgPSBhcmd2WzRdOw0KKw0KKwljbXJfc3RhdGUtPnBwaWQgPSBnZXRwcGlkKCk7 DQorCWlmIChjbXJfc3RhdGUtPnBwaWQgPT0gMSkgew0KKwkJLyoNCisJCSAqIFRoZSBvcmlnaW5h bCBwYXJlbnQgaXMgZ29uZSBhbmQgdGhlIHByb2Nlc3MgaGFzDQorCQkgKiBiZWVuIHJlcGFyZW50 ZWQgdG8gaW5pdC4gIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUNCisJCSAqIGhlbHBlciBpcyBzdGFy dGVkIGp1c3QgYXMgdGhlIHBhcmVudCBpcyBraWxsZWQNCisJCSAqIGR1cmluZyBzaHV0ZG93bi4g IFRoZSBlcnJvciBtZXNzYWdlIGRvZXNuJ3QgbmVlZCB0bw0KKwkJICogYmUgc3RlbGxhciwgc2lu Y2UgdGhlcmUgd29uJ3QgYmUgYW55dGhpbmcgYXJvdW5kIHRvDQorCQkgKiBjYXB0dXJlIGFuZCBs b2cgaXQuLi4NCisJCSAqLw0KKwkJZnByaW50ZihzdGRlcnIsICIlczogUFBJRCA9PSAxXG4iLCBw cm9nbmFtZSk7DQorCQlyZXQgPSAtRVBJUEU7DQorCQlnb3RvIGVycl9zdGF0ZV9mcmVlOw0KKwl9 DQorDQorCWNtcl9zdGF0ZS0+ZXYgPSB0ZXZlbnRfY29udGV4dF9pbml0KGNtcl9zdGF0ZSk7DQor CWlmIChjbXJfc3RhdGUtPmV2ID09IE5VTEwpIHsNCisJCWZwcmludGYoc3RkZXJyLCAidGV2ZW50 X2NvbnRleHRfaW5pdCBmYWlsZWRcbiIpOw0KKwkJZnByaW50ZihzdGRvdXQsIENUREJfTVVURVhf U1RBVFVTX0VSUk9SKTsNCisJCXJldCA9IC1FTk9NRU07DQorCQlnb3RvIGVycl9zdGF0ZV9mcmVl Ow0KKwl9DQorDQorCS8qIHdhaXQgZm9yIHNpZ3Rlcm0gKi8NCisJY21yX3N0YXRlLT5zaWdfZXYg PSB0ZXZlbnRfYWRkX3NpZ25hbChjbXJfc3RhdGUtPmV2LCBjbXJfc3RhdGUsIFNJR1RFUk0sIDAs DQorCQkJCQkgICAgICBjdGRiX211dGV4X3JhZG9zX3NpZ3Rlcm1fY2IsDQorCQkJCQkgICAgICBj bXJfc3RhdGUpOw0KKwlpZiAoY21yX3N0YXRlLT5zaWdfZXYgPT0gTlVMTCkgew0KKwkJZnByaW50 ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRlIHNpZ25hbCBldmVudFxuIik7DQorCQlmcHJpbnRm KHN0ZG91dCwgQ1REQl9NVVRFWF9TVEFUVVNfRVJST1IpOw0KKwkJcmV0ID0gLUVOT01FTTsNCisJ CWdvdG8gZXJyX3N0YXRlX2ZyZWU7DQorCX0NCisNCisJLyogcGVyaW9kaWNhbGx5IGNoZWNrIHBh cmVudCAqLw0KKwljbXJfc3RhdGUtPnRpbWVyX2V2ID0gdGV2ZW50X2FkZF90aW1lcihjbXJfc3Rh dGUtPmV2LCBjbXJfc3RhdGUsDQorCQkJCQkgICAgICAgdGV2ZW50X3RpbWV2YWxfY3VycmVudF9v ZnMoNSwgMCksDQorCQkJCQkgICAgICAgY3RkYl9tdXRleF9yYWRvc190aW1lcl9jYiwNCisJCQkJ CSAgICAgICBjbXJfc3RhdGUpOw0KKwlpZiAoY21yX3N0YXRlLT50aW1lcl9ldiA9PSBOVUxMKSB7 DQorCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgdGltZXIgZXZlbnRcbiIpOw0K KwkJZnByaW50ZihzdGRvdXQsIENUREJfTVVURVhfU1RBVFVTX0VSUk9SKTsNCisJCXJldCA9IC1F Tk9NRU07DQorCQlnb3RvIGVycl9zdGF0ZV9mcmVlOw0KKwl9DQorDQorCXJldCA9IGN0ZGJfbXV0 ZXhfcmFkb3NfY3R4X2NyZWF0ZShjbXJfc3RhdGUtPmNlcGhfY2x1c3Rlcl9uYW1lLA0KKwkJCQkJ ICBjbXJfc3RhdGUtPmNlcGhfYXV0aF9uYW1lLA0KKwkJCQkJICBjbXJfc3RhdGUtPnBvb2xfbmFt ZSwNCisJCQkJCSAgJmNtcl9zdGF0ZS0+Y2VwaF9jbHVzdGVyLA0KKwkJCQkJICAmY21yX3N0YXRl LT5pb2N0eCk7DQorCWlmIChyZXQgPCAwKSB7DQorCQlmcHJpbnRmKHN0ZG91dCwgQ1REQl9NVVRF WF9TVEFUVVNfRVJST1IpOw0KKwkJZ290byBlcnJfc3RhdGVfZnJlZTsNCisJfQ0KKw0KKwlyZXQg PSBjdGRiX211dGV4X3JhZG9zX2xvY2soY21yX3N0YXRlLT5pb2N0eCwgY21yX3N0YXRlLT5vYmpl Y3QpOw0KKwlpZiAoKHJldCA9PSAtRUVYSVNUKSB8fCAocmV0ID09IC1FQlVTWSkpIHsNCisJCWZw cmludGYoc3Rkb3V0LCBDVERCX01VVEVYX1NUQVRVU19DT05URU5ERUQpOw0KKwkJZ290byBlcnJf Y3R4X2NsZWFudXA7DQorCX0gZWxzZSBpZiAocmV0IDwgMCkgew0KKwkJZnByaW50ZihzdGRvdXQs IENUREJfTVVURVhfU1RBVFVTX0VSUk9SKTsNCisJCWdvdG8gZXJyX2N0eF9jbGVhbnVwOw0KKwl9 DQorDQorCWNtcl9zdGF0ZS0+aG9sZGluZ19tdXRleCA9IHRydWU7DQorCWZwcmludGYoc3Rkb3V0 LCBDVERCX01VVEVYX1NUQVRVU19IT0xESU5HKTsNCisNCisJLyogd2FpdCBmb3IgdGhlIHNpZ25h bCAvIHRpbWVyIGV2ZW50cyB0byBkbyB0aGVpciB3b3JrICovDQorCXJldCA9IHRldmVudF9sb29w X3dhaXQoY21yX3N0YXRlLT5ldik7DQorCWlmIChyZXQgPCAwKSB7DQorCQlnb3RvIGVycl9jdHhf Y2xlYW51cDsNCisJfQ0KK2Vycl9jdHhfY2xlYW51cDoNCisJY3RkYl9tdXRleF9yYWRvc19jdHhf ZGVzdHJveShjbXJfc3RhdGUtPmNlcGhfY2x1c3RlciwNCisJCQkJICAgICBjbXJfc3RhdGUtPmlv Y3R4KTsNCitlcnJfc3RhdGVfZnJlZToNCisJdGFsbG9jX2ZyZWUoY21yX3N0YXRlKTsNCitlcnJf b3V0Og0KKwlyZXR1cm4gcmV0ID8gMSA6IDA7DQorfQ0KZGlmZiAtLWdpdCBhL2N0ZGIvd3Njcmlw dCBiL2N0ZGIvd3NjcmlwdA0KaW5kZXggZDdiMTg5MS4uNTliZDhlMiAxMDA2NDQNCi0tLSBhL2N0 ZGIvd3NjcmlwdA0KKysrIGIvY3RkYi93c2NyaXB0DQpAQCAtNzksNiArNzksOSBAQCBkZWYgc2V0 X29wdGlvbnMob3B0KToNCiAgICAgb3B0LmFkZF9vcHRpb24oJy0tZW5hYmxlLWV0Y2QtcmVjbG9j aycsDQogICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgZXRjZCByZWNvdmVyeSBsb2Nr IGhlbHBlciAoZGVmYXVsdD1ubykiKSwNCiAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9y ZV90cnVlIiwgZGVzdD0nY3RkYl9ldGNkX3JlY2xvY2snLCBkZWZhdWx0PUZhbHNlKQ0KKyAgICBv cHQuYWRkX29wdGlvbignLS1lbmFibGUtY2VwaC1yZWNsb2NrJywNCisgICAgICAgICAgICAgICAg ICAgaGVscD0oIkVuYWJsZSBDZXBoIENUREIgcmVjb3ZlcnkgbG9jayBoZWxwZXIgKGRlZmF1bHQ9 bm8pIiksDQorICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2N0 ZGJfY2VwaF9yZWNsb2NrJywgZGVmYXVsdD1GYWxzZSkNCiANCiAgICAgb3B0LmFkZF9vcHRpb24o Jy0td2l0aC1sb2dkaXInLA0KICAgICAgICAgICAgICAgICAgICBoZWxwPSgiUGF0aCB0byBsb2cg ZGlyZWN0b3J5IiksDQpAQCAtMjAxLDYgKzIwNCwxNSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOg0K ICAgICAgICAgTG9ncy5pbmZvKCdCdWlsZGluZyB3aXRoIGV0Y2Qgc3VwcG9ydCcpDQogICAgIGNv bmYuZW52LmV0Y2RfcmVjbG9jayA9IGhhdmVfZXRjZF9yZWNsb2NrDQogDQorICAgIGlmIE9wdGlv bnMub3B0aW9ucy5jdGRiX2NlcGhfcmVjbG9jazoNCisgICAgICAgIGlmIChjb25mLkNIRUNLX0hF QURFUlMoJ3JhZG9zL2xpYnJhZG9zLmgnLCBGYWxzZSwgRmFsc2UsICdyYWRvcycpIGFuZA0KKwkJ CQkJY29uZi5DSEVDS19MSUIoJ3JhZG9zJywgc2hsaWI9VHJ1ZSkpOg0KKyAgICAgICAgICAgIExv Z3MuaW5mbygnQnVpbGRpbmcgd2l0aCBDZXBoIGxpYnJhZG9zIHJlY292ZXJ5IGxvY2sgc3VwcG9y dCcpDQorICAgICAgICAgICAgY29uZi5kZWZpbmUoJ0hBVkVfTElCUkFET1MnLCAxKQ0KKyAgICAg ICAgZWxzZToNCisgICAgICAgICAgICBMb2dzLmVycm9yKCJNaXNzaW5nIGxpYnJhZG9zIGZvciBD ZXBoIHJlY292ZXJ5IGxvY2sgc3VwcG9ydCIpDQorICAgICAgICAgICAgc3lzLmV4aXQoMSkNCisN CiAgICAgY29uZi5lbnYuQ1REQl9CSU5ESVIgPSBvcy5wYXRoLmpvaW4oY29uZi5lbnYuRVhFQ19Q UkVGSVgsICdiaW4nKQ0KICAgICBjb25mLmVudi5DVERCX0VUQ0RJUiA9IG9zLnBhdGguam9pbihj b25mLmVudi5TWVNDT05GRElSLCAnY3RkYicpDQogICAgIGNvbmYuZW52LkNUREJfVkFSRElSID0g b3MucGF0aC5qb2luKGNvbmYuZW52LkxPQ0FMU1RBVEVESVIsICdsaWIvY3RkYicpDQpAQCAtNTQw LDYgKzU1MiwxMyBAQCBkZWYgYnVpbGQoYmxkKToNCiAgICAgICAgIGJsZC5JTlNUQUxMX0ZJTEVT KCcke0NUREJfUE1EQURJUn0nLCAndXRpbHMvcG1kYS9SRUFETUUnLA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVzdG5hbWU9J1JFQURNRScpDQogDQorICAgIGlmIGJsZC5lbnYuSEFWRV9M SUJSQURPUzoNCisgICAgICAgIGJsZC5TQU1CQV9CSU5BUlkoJ2N0ZGJfbXV0ZXhfY2VwaF9yYWRv c19oZWxwZXInLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9J3V0aWxzL2NlcGgv Y3RkYl9tdXRleF9jZXBoX3JhZG9zX2hlbHBlci5jJywNCisJCQkgZGVwcz0ndGFsbG9jIHRldmVu dCByYWRvcycsDQorCQkJIGluY2x1ZGVzPSdpbmNsdWRlJywNCisJCQkgaW5zdGFsbF9wYXRoPSck e0NUREJfSEVMUEVSX0JJTkRJUn0nKQ0KKw0KICAgICBzZWRfZXhwcjEgPSAnc3wvdXNyL2xvY2Fs L3Zhci9saWIvY3RkYnwlc3xnJyAgJSAoYmxkLmVudi5DVERCX1ZBUkRJUikNCiAgICAgc2VkX2V4 cHIyID0gJ3N8L3Vzci9sb2NhbC9ldGMvY3RkYnwlc3xnJyAgICAgICUgKGJsZC5lbnYuQ1REQl9F VENESVIpDQogICAgIHNlZF9leHByMyA9ICdzfC91c3IvbG9jYWwvdmFyL2xvZ3wlc3xnJyAgICAg ICAlIChibGQuZW52LkNUREJfTE9HRElSKQ0KLS0gDQoyLjEwLjINCg0KDQpGcm9tIDM1OTEyYjdk Y2E0MTc2Mzk2MTVhZDU2NjJiNWE3NmVlM2UyNWE2ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx DQpGcm9tOiBEYXZpZCBEaXNzZWxkb3JwIDxkZGlzc0BzYW1iYS5vcmc+DQpEYXRlOiBUaHUsIDEg RGVjIDIwMTYgMTQ6MjI6NDUgKzAxMDANClN1YmplY3Q6IFtQQVRDSCAyLzNdIGN0ZGIvZG9jOiBt YW4gcGFnZSBmb3IgQ2VwaCBSQURPUyBjbHVzdGVyIG11dGV4IGhlbHBlcg0KDQpTaWduZWQtb2Zm LWJ5OiBEYXZpZCBEaXNzZWxkb3JwIDxkZGlzc0BzYW1iYS5vcmc+DQotLS0NCiBjdGRiL2RvYy9j dGRiX211dGV4X2NlcGhfcmFkb3NfaGVscGVyLjcueG1sIHwgOTAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCiBjdGRiL3dzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMTIgKysrLQ0KIDIgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGN0ZGIvZG9jL2N0ZGJfbXV0ZXhfY2VwaF9yYWRv c19oZWxwZXIuNy54bWwNCg0KZGlmZiAtLWdpdCBhL2N0ZGIvZG9jL2N0ZGJfbXV0ZXhfY2VwaF9y YWRvc19oZWxwZXIuNy54bWwgYi9jdGRiL2RvYy9jdGRiX211dGV4X2NlcGhfcmFkb3NfaGVscGVy LjcueG1sDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uZTVkZWRjNw0KLS0t IC9kZXYvbnVsbA0KKysrIGIvY3RkYi9kb2MvY3RkYl9tdXRleF9jZXBoX3JhZG9zX2hlbHBlci43 LnhtbA0KQEAgLTAsMCArMSw5MCBAQA0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlz by04ODU5LTEiPz4NCis8IURPQ1RZUEUgcmVmZW50cnkNCisJUFVCTElDICItLy9PQVNJUy8vRFRE IERvY0Jvb2sgWE1MIFY0LjUvL0VOIg0KKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Ni b29rL3htbC80LjUvZG9jYm9va3guZHRkIj4NCis8cmVmZW50cnkgaWQ9ImN0ZGJfbXV0ZXhfY2Vw aF9yYWRvc19oZWxwZXIuNyI+DQorDQorICA8cmVmbWV0YT4NCisgICAgPHJlZmVudHJ5dGl0bGU+ Q2VwaCBSQURPUyBNdXRleDwvcmVmZW50cnl0aXRsZT4NCisgICAgPG1hbnZvbG51bT43PC9tYW52 b2xudW0+DQorICAgIDxyZWZtaXNjaW5mbyBjbGFzcz0ic291cmNlIj5jdGRiPC9yZWZtaXNjaW5m bz4NCisgICAgPHJlZm1pc2NpbmZvIGNsYXNzPSJtYW51YWwiPkNUREIgLSBjbHVzdGVyZWQgVERC IGRhdGFiYXNlPC9yZWZtaXNjaW5mbz4NCisgIDwvcmVmbWV0YT4NCisNCisgIDxyZWZuYW1lZGl2 Pg0KKyAgICA8cmVmbmFtZT5jdGRiX211dGV4X2NlcGhfcmFkb3NfaGVscGVyPC9yZWZuYW1lPg0K KyAgICA8cmVmcHVycG9zZT5DZXBoIFJBRE9TIGNsdXN0ZXIgbXV0ZXggaGVscGVyPC9yZWZwdXJw b3NlPg0KKyAgPC9yZWZuYW1lZGl2Pg0KKw0KKyAgPHJlZnNlY3QxPg0KKyAgICA8dGl0bGU+REVT Q1JJUFRJT048L3RpdGxlPg0KKyAgICA8cGFyYT4NCisgICAgICBjdGRiX211dGV4X2NlcGhfcmFk b3NfaGVscGVyX2xvY2sgY2FuIGJlIHVzZWQgYXMgYSByZWNvdmVyeSBsb2NrIHByb3ZpZGVyDQor ICAgICAgZm9yIENUREIuICBXaGVuIGNvbmZpZ3VyZWQsIHNwbGl0IGJyYWluIGF2b2lkYW5jZSBk dXJpbmcgQ1REQiByZWNvdmVyeQ0KKyAgICAgIHdpbGwgYmUgaGFuZGxlZCB1c2luZyBsb2NrcyBh Z2FpbnN0IGFuIG9iamVjdCBsb2NhdGVkIGluIGEgQ2VwaCBSQURPUw0KKyAgICAgIHBvb2wuDQor ICAgICAgVG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSwgaW5jbHVkZSB0aGUgZm9sbG93aW5n IGxpbmUgaW4geW91ciBDVERCDQorICAgICAgY29uZmlnIGZpbGU6DQorICAgIDwvcGFyYT4NCisg ICAgPHNjcmVlbiBmb3JtYXQ9ImxpbmVzcGVjaWZpYyI+DQorQ1REQl9SRUNPVkVSWV9MT0NLPSIh Y3RkYl9tdXRleF9jZXBoX3JhZG9zX2hlbHBlcl9sb2NrIFtDbHVzdGVyXSBbVXNlcl0gW1Bvb2xd IFtPYmplY3RdIg0KKw0KK0NsdXN0ZXI6IENlcGggY2x1c3RlciBuYW1lIChlLmcuIGNlcGgpDQor VXNlcjogQ2VwaCBjbHVzdGVyIHVzZXIgbmFtZSAoZS5nLiBjbGllbnQuYWRtaW4pDQorUG9vbDog Q2VwaCBSQURPUyBwb29sIG5hbWUNCitPYmplY3Q6IENlcGggUkFET1Mgb2JqZWN0IG5hbWUNCisg ICAgPC9zY3JlZW4+DQorICAgIDxwYXJhPg0KKyAgICAgIFRoZSBDZXBoIGNsdXN0ZXIgPHBhcmFt ZXRlcj5DbHVzdGVyPC9wYXJhbWV0ZXI+IG11c3QgYmUgdXAgYW5kIHJ1bm5pbmcsDQorICAgICAg d2l0aCBhIGNvbmZpZ3VyYXRpb24sIGFuZCBrZXlyaW5nIGZpbGUgZm9yIDxwYXJhbWV0ZXI+VXNl cjwvcGFyYW1ldGVyPg0KKyAgICAgIGxvY2F0ZWQgaW4gYSBsaWJyYWRvcyBkZWZhdWx0IHNlYXJj aCBwYXRoIChlLmcuIC9ldGMvY2VwaC8pLg0KKyAgICAgIDxwYXJhbWV0ZXI+UG9vbDwvcGFyYW1l dGVyPiBtdXN0IGFscmVhZHkgZXhpc3QuDQorICAgIDwvcGFyYT4NCisgIDwvcmVmc2VjdDE+DQor DQorICA8cmVmc2VjdDE+DQorICAgIDx0aXRsZT5TRUUgQUxTTzwvdGl0bGU+DQorICAgIDxwYXJh Pg0KKyAgICAgIDxjaXRlcmVmZW50cnk+PHJlZmVudHJ5dGl0bGU+Y3RkYjwvcmVmZW50cnl0aXRs ZT4NCisgICAgICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT48L2NpdGVyZWZlbnRyeT4sDQorDQor ICAgICAgPGNpdGVyZWZlbnRyeT48cmVmZW50cnl0aXRsZT5jdGRiZDwvcmVmZW50cnl0aXRsZT4N CisgICAgICA8bWFudm9sbnVtPjE8L21hbnZvbG51bT48L2NpdGVyZWZlbnRyeT4sDQorDQorICAg ICAgPHVsaW5rIHVybD0iaHR0cDovL2N0ZGIuc2FtYmEub3JnLyIvPg0KKyAgICA8L3BhcmE+DQor ICA8L3JlZnNlY3QxPg0KKw0KKyAgPHJlZmVudHJ5aW5mbz4NCisgICAgPGF1dGhvcj4NCisgICAg ICA8Y29udHJpYj4NCisJVGhpcyBkb2N1bWVudGF0aW9uIHdhcyB3cml0dGVuIGJ5IERhdmlkIERp c3NlbGRvcnANCisgICAgICA8L2NvbnRyaWI+DQorICAgIDwvYXV0aG9yPg0KKw0KKyAgICA8Y29w eXJpZ2h0Pg0KKyAgICAgIDx5ZWFyPjIwMTY8L3llYXI+DQorICAgICAgPGhvbGRlcj5EYXZpZCBE aXNzZWxkb3JwPC9ob2xkZXI+DQorICAgIDwvY29weXJpZ2h0Pg0KKyAgICA8bGVnYWxub3RpY2U+ DQorICAgICAgPHBhcmE+DQorCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisJbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMNCisJcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YNCisJdGhlIExpY2Vuc2Us IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICAgICAgPC9wYXJhPg0K KyAgICAgIDxwYXJhPg0KKwlUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlDQorCXVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQNCisJd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KKwlQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAgICAgIDwvcGFyYT4NCisgICAgICA8 cGFyYT4NCisJWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljDQorCUxpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2Vl DQorCTx1bGluayB1cmw9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcyIvPi4NCisgICAgICA8 L3BhcmE+DQorICAgIDwvbGVnYWxub3RpY2U+DQorICA8L3JlZmVudHJ5aW5mbz4NCisNCis8L3Jl ZmVudHJ5Pg0KZGlmZiAtLWdpdCBhL2N0ZGIvd3NjcmlwdCBiL2N0ZGIvd3NjcmlwdA0KaW5kZXgg NTliZDhlMi4uZDBlOGVjNyAxMDA2NDQNCi0tLSBhL2N0ZGIvd3NjcmlwdA0KKysrIGIvY3RkYi93 c2NyaXB0DQpAQCAtNTgsNiArNTgsMTAgQEAgbWFucGFnZXNfZXRjZCA9IFsNCiAgICAgJ2N0ZGIt ZXRjZC43JywNCiBdDQogDQorbWFucGFnZXNfY2VwaCA9IFsNCisgICAgJ2N0ZGJfbXV0ZXhfY2Vw aF9yYWRvc19oZWxwZXIuNycsDQorXQ0KKw0KIA0KIGRlZiBzZXRfb3B0aW9ucyhvcHQpOg0KICAg ICBvcHQuUFJJVkFURV9FWFRFTlNJT05fREVGQVVMVCgnY3RkYicpDQpAQCAtMjczLDcgKzI3Nyw5 IEBAIGRlZiBjb25maWd1cmUoY29uZik6DQogICAgICAgICBjb25mLmVudi5jdGRiX3ByZWJ1aWx0 X21hbnBhZ2VzID0gW10NCiAgICAgICAgIG1hbnBhZ2VzID0gbWFucGFnZXNfYmluYXJ5ICsgbWFu cGFnZXNfbWlzYw0KICAgICAgICAgaWYgY29uZi5lbnYuZXRjZF9yZWNsb2NrOg0KLSAgICAgICAg ICAgIG1hbnBhZ2VzID0gbWFucGFnZXMgKyBtYW5wYWdlc19ldGNkDQorICAgICAgICAgICAgbWFu cGFnZXMgKz0gbWFucGFnZXNfZXRjZA0KKwlpZiBjb25mLmVudi5IQVZFX0xJQlJBRE9TOg0KKyAg ICAgICAgICAgIG1hbnBhZ2VzICs9IG1hbnBhZ2VzX2NlcGgNCiAgICAgICAgIGZvciBtIGluIG1h bnBhZ2VzOg0KICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbigiZG9j IiwgbSkpOg0KICAgICAgICAgICAgICAgICBMb2dzLmluZm8oIiAgJXM6IHllcyIgJSAobSkpDQpA QCAtNTcyLDcgKzU3OCw5IEBAIGRlZiBidWlsZChibGQpOg0KIA0KICAgICBtYW5wYWdlc19leHRy YSA9IG1hbnBhZ2VzX21pc2MNCiAgICAgaWYgYmxkLmVudi5ldGNkX3JlY2xvY2s6DQotICAgICAg ICBtYW5wYWdlc19leHRyYSA9IG1hbnBhZ2VzX2V4dHJhICsgbWFucGFnZXNfZXRjZA0KKyAgICAg ICAgbWFucGFnZXNfZXh0cmEgKz0gbWFucGFnZXNfZXRjZA0KKyAgICBpZiBibGQuZW52LkhBVkVf TElCUkFET1M6DQorICAgICAgICBtYW5wYWdlc19leHRyYSArPSBtYW5wYWdlc19jZXBoDQogICAg IGZvciBmIGluIG1hbnBhZ2VzX2JpbmFyeSArIG1hbnBhZ2VzX2V4dHJhOg0KICAgICAgICAgeCA9 ICclcy54bWwnICUgKGYpDQogICAgICAgICBibGQuU0FNQkFfR0VORVJBVE9SKHgsDQotLSANCjIu MTAuMg0KDQoNCkZyb20gZGJjNDExNjc1YjMzOGJhNzU1YzQ1MjFhMGQ4NTllMmM5ZDY3YmY4NyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCkZyb206IERhdmlkIERpc3NlbGRvcnAgPGRkaXNzQHNh bWJhLm9yZz4NCkRhdGU6IFR1ZSwgNiBEZWMgMjAxNiAxMzowMzoyNyArMDEwMA0KU3ViamVjdDog W1BBVENIIDMvM10gY3RkYjogYWRkIHRlc3Qgc2NyaXB0IGZvciBjdGRiX211dGV4X2NlcGhfcmFk b3NfaGVscGVyDQoNClRoaXMgc3RhbmRhbG9uZSB0ZXN0IHNjcmlwdCBwZXJmb3JtcyB0aGUgZm9s bG93aW5nOg0KLSB1c2luZyBjdGRiX211dGV4X2NlcGhfcmFkb3NfaGVscGVyLCB0YWtlIGEgbG9j ayBvbiB0aGUgQ2VwaCBSQURPUw0KICBvYmplY3QgYSBDTFVTVEVSLyRQT09MLyRPQkpFQ1QgdXNp bmcgdGhlIENlcGgga2V5cmluZyBmb3IgJFVTRVINCiAgKyBjb25maXJtIHRoYXQgbG9jayBpcyBv YnRhaW5lZCwgdmlhIGN0ZGJfbXV0ZXhfY2VwaF9yYWRvc19oZWxwZXIgIjAiDQogICAgb3V0cHV0 DQotIGNoZWNrIFJBRE9TIG9iamVjdCBsb2NrIHN0YXRlLCB1c2luZyB0aGUgInJhZG9zIGxvY2sg aW5mbyIgY29tbWFuZA0KLSBhdHRlbXB0IHRvIG9idGFpbiB0aGUgbG9jayBhZ2FpbiwgdXNpbmcg Y3RkYl9tdXRleF9jZXBoX3JhZG9zX2hlbHBlcg0KICArIGNvbmZpcm0gdGhhdCB0aGUgbG9jayBp cyBub3Qgc3VjY2Vzc2Z1bGx5IHRha2VuDQotIHRlbGwgdGhlIGZpcnN0IGxvY2tlciB0byBkcm9w IHRoZSBsb2NrIGFuZCBleGl0LCB2aWEgU0lHVEVSTQ0KLSBvbmNlIHRoZSBmaXJzdCBsb2NrZXIg aGFzIGV4aXRlZCwgYXR0ZW1wdCB0byBnZXQgdGhlIGxvY2sgYWdhaW4NCiAgKyBjb25maXJtIHRo YXQgdGhpcyBhdHRlbXB0IHN1Y2NlZWRzDQoNClNpZ25lZC1vZmYtYnk6IERhdmlkIERpc3NlbGRv cnAgPGRkaXNzQHNhbWJhLm9yZz4NCi0tLQ0KIGN0ZGIvdXRpbHMvY2VwaC90ZXN0X2NlcGhfcmFk b3NfcmVjbG9jay5zaCB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIDEgZmls ZSBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDc1NSBjdGRiL3V0 aWxzL2NlcGgvdGVzdF9jZXBoX3JhZG9zX3JlY2xvY2suc2gNCg0KZGlmZiAtLWdpdCBhL2N0ZGIv dXRpbHMvY2VwaC90ZXN0X2NlcGhfcmFkb3NfcmVjbG9jay5zaCBiL2N0ZGIvdXRpbHMvY2VwaC90 ZXN0X2NlcGhfcmFkb3NfcmVjbG9jay5zaA0KbmV3IGZpbGUgbW9kZSAxMDA3NTUNCmluZGV4IDAw MDAwMDAuLjFhZGFjZjYNCi0tLSAvZGV2L251bGwNCisrKyBiL2N0ZGIvdXRpbHMvY2VwaC90ZXN0 X2NlcGhfcmFkb3NfcmVjbG9jay5zaA0KQEAgLTAsMCArMSwxNTEgQEANCisjIS9iaW4vYmFzaA0K KyMgc3RhbmRhbG9uZSB0ZXN0IGZvciBjdGRiX211dGV4X2NlcGhfcmFkb3NfaGVscGVyDQorIw0K KyMgQ29weXJpZ2h0IChDKSBEYXZpZCBEaXNzZWxkb3JwIDIwMTYNCisjDQorIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQ0KKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkNCisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQorIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLg0KKyMNCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorIw0KKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UN CisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uDQorDQorIyBYWFggVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIG1heSBy ZXF1aXJlIGNvbmZpZ3VyYXRpb246DQorQ0xVU1RFUj0iY2VwaCIJCQkJIyBOYW1lIG9mIHRoZSBD ZXBoIGNsdXN0ZXIgdW5kZXIgdGVzdA0KK1VTRVI9ImNsaWVudC5hZG1pbiIJCQkjIENlcGggdXNl ciAtIGEga2V5cmluZyBtdXN0IGV4aXN0DQorUE9PTD0icmJkIgkJCQkjIFJBRE9TIHBvb2wgLSBt dXN0IGV4aXN0DQorT0JKRUNUPSJjdGRiX3JlY2xvY2siCQkJIyBSQURPUyBvYmplY3Q6IHRhcmdl dCBmb3IgbG9jayByZXF1ZXN0cw0KKw0KKyMgdGVzdCBwcm9jZWR1cmU6DQorIyAtIHVzaW5nIGN0 ZGJfbXV0ZXhfY2VwaF9yYWRvc19oZWxwZXIsIHRha2UgYSBsb2NrIG9uIHRoZSBDZXBoIFJBRE9T IG9iamVjdCBhdA0KKyMgICBDTFVTVEVSLyRQT09MLyRPQkpFQ1QgdXNpbmcgdGhlIENlcGgga2V5 cmluZyBmb3IgJFVTRVINCisjICAgKyBjb25maXJtIHRoYXQgbG9jayBpcyBvYnRhaW5lZCwgdmlh IGN0ZGJfbXV0ZXhfY2VwaF9yYWRvc19oZWxwZXIgIjAiIG91dHB1dA0KKyMgLSBjaGVjayBSQURP UyBvYmplY3QgbG9jayBzdGF0ZSwgdXNpbmcgdGhlICJyYWRvcyBsb2NrIGluZm8iIGNvbW1hbmQN CisjIC0gYXR0ZW1wdCB0byBvYnRhaW4gdGhlIGxvY2sgYWdhaW4sIHVzaW5nIGN0ZGJfbXV0ZXhf Y2VwaF9yYWRvc19oZWxwZXINCisjICAgKyBjb25maXJtIHRoYXQgdGhlIGxvY2sgaXMgbm90IHN1 Y2Nlc3NmdWxseSB0YWtlbiAoIjEiIG91dHB1dD1jb250ZW50aW9uKQ0KKyMgLSB0ZWxsIHRoZSBm aXJzdCBsb2NrZXIgdG8gZHJvcCB0aGUgbG9jayBhbmQgZXhpdCwgdmlhIFNJR1RFUk0NCisjIC0g b25jZSB0aGUgZmlyc3QgbG9ja2VyIGhhcyBleGl0ZWQsIGF0dGVtcHQgdG8gZ2V0IHRoZSBsb2Nr IGFnYWluDQorIyAgICsgY29uZmlybSB0aGF0IHRoaXMgYXR0ZW1wdCBzdWNjZWVkcw0KKw0KK2Z1 bmN0aW9uIF9mYWlsKCkgew0KKwllY2hvICJGQUlMRUQ6ICQqIg0KKwlleGl0IDENCit9DQorDQor IyB0aGlzIHRlc3QgcmVxdWlyZXMgdGhlIENlcGggInJhZG9zIiBiaW5hcnksIGFuZCAianEiIGpz b24gcGFyc2VyDQord2hpY2gganEgPiAvZGV2L251bGwgfHwgZXhpdCAxDQord2hpY2ggcmFkb3Mg PiAvZGV2L251bGwgfHwgZXhpdCAxDQord2hpY2ggY3RkYl9tdXRleF9jZXBoX3JhZG9zX2hlbHBl ciB8fCBleGl0IDENCisNCitUTVBfRElSPSIkKG1rdGVtcCAtLWRpcmVjdG9yeSkiIHx8IGV4aXQg MQ0KK3JhZG9zIC1wICIkUE9PTCIgcm0gIiRPQkpFQ1QiDQorDQorKGN0ZGJfbXV0ZXhfY2VwaF9y YWRvc19oZWxwZXIgIiRDTFVTVEVSIiAiJFVTRVIiICIkUE9PTCIgIiRPQkpFQ1QiIFwNCisJCQkJ CQkJPiAke1RNUF9ESVJ9L2ZpcnN0KSAmDQorbG9ja2VyX3BpZD0kIQ0KKw0KKyMgVE9ETyB3YWl0 IGZvciBjdGRiX211dGV4X2NlcGhfcmFkb3NfaGVscGVyIHRvIHdyaXRlIG9uZSBieXRlIHRvIHN0 ZG91dCwNCisjIGluZGljYXRpbmcgbG9jayBhY3F1aXNpdGlvbiBzdWNjZXNzL2ZhaWx1cmUNCitz bGVlcCAxDQorDQorZmlyc3Rfb3V0PSQoY2F0ICR7VE1QX0RJUn0vZmlyc3QpDQorWyAiJGZpcnN0 X291dCIgPT0gIjAiIF0gXA0KKwl8fCBfZmFpbCAiZXhwZWN0ZWQgbG9jayBhY3F1aXNpdGlvbiAo MCksIGJ1dCBnb3QgJGZpcnN0X291dCINCisNCityYWRvcyAtcCAiJFBPT0wiIGxvY2sgaW5mbyAi JE9CSkVDVCIgY3RkYl9yZWNsb2NrX211dGV4IFwNCisJCQkJCQk+ICR7VE1QX0RJUn0vbG9ja19z dGF0ZV9maXJzdA0KKw0KKyMgZWNobyAid2l0aCBsb2NrOiBgY2F0ICR7VE1QX0RJUn0vbG9ja19z dGF0ZV9maXJzdGAiDQorDQorTE9DS19OQU1FPSIkKGpxIC1yICcubmFtZScgJHtUTVBfRElSfS9s b2NrX3N0YXRlX2ZpcnN0KSINCitbICIkTE9DS19OQU1FIiA9PSAiY3RkYl9yZWNsb2NrX211dGV4 IiBdIFwNCisJfHwgX2ZhaWwgInVuZXhwZWN0ZWQgbG9jayBuYW1lOiAkTE9DS19OQU1FIg0KK0xP Q0tfVFlQRT0iJChqcSAtciAnLnR5cGUnICR7VE1QX0RJUn0vbG9ja19zdGF0ZV9maXJzdCkiDQor WyAiJExPQ0tfVFlQRSIgPT0gImV4Y2x1c2l2ZSIgXSBcDQorCXx8IF9mYWlsICJ1bmV4cGVjdGVk IGxvY2sgdHlwZTogJExPQ0tfVFlQRSINCisNCitMT0NLX0NPVU5UPSIkKGpxIC1yICcubG9ja2Vy cyB8IGxlbmd0aCcgJHtUTVBfRElSfS9sb2NrX3N0YXRlX2ZpcnN0KSINCitbICRMT0NLX0NPVU5U IC1lcSAxIF0gfHwgX2ZhaWwgImV4cGVjdGVkIDEgbG9jayBpbiByYWRvcyBzdGF0ZSwgZ290ICRM T0NLX0NPVU5UIg0KK0xPQ0tFUl9DT09LSUU9IiQoanEgLXIgJy5sb2NrZXJzWzBdLmNvb2tpZScg JHtUTVBfRElSfS9sb2NrX3N0YXRlX2ZpcnN0KSINCitbICIkTE9DS0VSX0NPT0tJRSIgPT0gImN0 ZGJfcmVjbG9ja19tdXRleCIgXSBcDQorCXx8IF9mYWlsICJ1bmV4cGVjdGVkIGxvY2tlciBjb29r aWU6ICRMT0NLRVJfQ09PS0lFIg0KK0xPQ0tFUl9ERVNDPSIkKGpxIC1yICcubG9ja2Vyc1swXS5k ZXNjcmlwdGlvbicgJHtUTVBfRElSfS9sb2NrX3N0YXRlX2ZpcnN0KSINCitbICIkTE9DS0VSX0RF U0MiID09ICJDVERCIHJlY292ZXJ5IGxvY2siIF0gXA0KKwl8fCBfZmFpbCAidW5leHBlY3RlZCBs b2NrZXIgZGVzY3JpcHRpb246ICRMT0NLRVJfREVTQyINCisNCisjIHNlY29uZCBhdHRlbXB0IHdo aWxlIGZpcnN0IGlzIHN0aWxsIGhvbGRpbmcgdGhlIGxvY2sgLSBleHBlY3QgZmFpbHVyZQ0KK2N0 ZGJfbXV0ZXhfY2VwaF9yYWRvc19oZWxwZXIgIiRDTFVTVEVSIiAiJFVTRVIiICIkUE9PTCIgIiRP QkpFQ1QiIFwNCisJCQkJCQkJPiAke1RNUF9ESVJ9L3NlY29uZA0KK3NlY29uZF9vdXQ9JChjYXQg JHtUTVBfRElSfS9zZWNvbmQpDQorWyAiJHNlY29uZF9vdXQiID09ICIxIiBdIFwNCisJfHwgX2Zh aWwgImV4cGVjdGVkIGxvY2sgY29udGVudGlvbiAoMSksIGJ1dCBnb3QgJHNlY29uZF9vdXQiDQor DQorIyBjb25maXJtIGxvY2sgc3RhdGUgZGlkbid0IGNoYW5nZQ0KK3JhZG9zIC1wICIkUE9PTCIg bG9jayBpbmZvICIkT0JKRUNUIiBjdGRiX3JlY2xvY2tfbXV0ZXggXA0KKwkJCQkJCT4gJHtUTVBf RElSfS9sb2NrX3N0YXRlX3NlY29uZA0KKw0KK2RpZmYgJHtUTVBfRElSfS9sb2NrX3N0YXRlX2Zp cnN0ICR7VE1QX0RJUn0vbG9ja19zdGF0ZV9zZWNvbmQgXA0KKwkJCQkJfHwgX2ZhaWwgInVuZXhw ZWN0ZWQgbG9jayBzdGF0ZSBjaGFuZ2UiDQorDQorIyB0ZWxsIGZpcnN0IGxvY2tlciB0byBkcm9w IHRoZSBsb2NrIGFuZCB0ZXJtaW5hdGUNCitraWxsICRsb2NrZXJfcGlkIHx8IGV4aXQgMQ0KKw0K K3dhaXQgJGxvY2tlcl9waWQgJj4gL2Rldi9udWxsDQorDQorcmFkb3MgLXAgIiRQT09MIiBsb2Nr IGluZm8gIiRPQkpFQ1QiIGN0ZGJfcmVjbG9ja19tdXRleCBcDQorCQkJCQkJPiAke1RNUF9ESVJ9 L2xvY2tfc3RhdGVfdGhpcmQNCisjIGVjaG8gIndpdGhvdXQgbG9jazogYGNhdCAke1RNUF9ESVJ9 L2xvY2tfc3RhdGVfdGhpcmRgIg0KKw0KK0xPQ0tfTkFNRT0iJChqcSAtciAnLm5hbWUnICR7VE1Q X0RJUn0vbG9ja19zdGF0ZV90aGlyZCkiDQorWyAiJExPQ0tfTkFNRSIgPT0gImN0ZGJfcmVjbG9j a19tdXRleCIgXSBcDQorCXx8IF9mYWlsICJ1bmV4cGVjdGVkIGxvY2sgbmFtZTogJExPQ0tfTkFN RSINCitMT0NLX1RZUEU9IiQoanEgLXIgJy50eXBlJyAke1RNUF9ESVJ9L2xvY2tfc3RhdGVfdGhp cmQpIg0KK1sgIiRMT0NLX1RZUEUiID09ICJleGNsdXNpdmUiIF0gXA0KKwl8fCBfZmFpbCAidW5l eHBlY3RlZCBsb2NrIHR5cGU6ICRMT0NLX1RZUEUiDQorDQorTE9DS19DT1VOVD0iJChqcSAtciAn LmxvY2tlcnMgfCBsZW5ndGgnICR7VE1QX0RJUn0vbG9ja19zdGF0ZV90aGlyZCkiDQorWyAkTE9D S19DT1VOVCAtZXEgMCBdIFwNCisJfHwgX2ZhaWwgImRpZG5cJ3QgZXhwZWN0IGFueSBsb2NrcyBp biByYWRvcyBzdGF0ZSwgZ290ICRMT0NLX0NPVU5UIg0KKw0KK2V4ZWMgPiR7VE1QX0RJUn0vdGhp cmQgLS0gY3RkYl9tdXRleF9jZXBoX3JhZG9zX2hlbHBlciAiJENMVVNURVIiICIkVVNFUiIgIiRQ T09MIiAiJE9CSkVDVCIgJg0KK2xvY2tlcl9waWQ9JCENCisNCitzbGVlcCAxDQorDQorcmFkb3Mg LXAgIiRQT09MIiBsb2NrIGluZm8gIiRPQkpFQ1QiIGN0ZGJfcmVjbG9ja19tdXRleCBcDQorCQkJ CQkJPiAke1RNUF9ESVJ9L2xvY2tfc3RhdGVfZm91cnRoDQorIyBlY2hvICJ3aXRoIGxvY2sgYWdh aW46IGBjYXQgJHtUTVBfRElSfS9sb2NrX3N0YXRlX2ZvdXJ0aGAiDQorDQorTE9DS19OQU1FPSIk KGpxIC1yICcubmFtZScgJHtUTVBfRElSfS9sb2NrX3N0YXRlX2ZvdXJ0aCkiDQorWyAiJExPQ0tf TkFNRSIgPT0gImN0ZGJfcmVjbG9ja19tdXRleCIgXSBcDQorCXx8IF9mYWlsICJ1bmV4cGVjdGVk IGxvY2sgbmFtZTogJExPQ0tfTkFNRSINCitMT0NLX1RZUEU9IiQoanEgLXIgJy50eXBlJyAke1RN UF9ESVJ9L2xvY2tfc3RhdGVfZm91cnRoKSINCitbICIkTE9DS19UWVBFIiA9PSAiZXhjbHVzaXZl IiBdIFwNCisJfHwgX2ZhaWwgInVuZXhwZWN0ZWQgbG9jayB0eXBlOiAkTE9DS19UWVBFIg0KKw0K K0xPQ0tfQ09VTlQ9IiQoanEgLXIgJy5sb2NrZXJzIHwgbGVuZ3RoJyAke1RNUF9ESVJ9L2xvY2tf c3RhdGVfZm91cnRoKSINCitbICRMT0NLX0NPVU5UIC1lcSAxIF0gfHwgX2ZhaWwgImV4cGVjdGVk IDEgbG9jayBpbiByYWRvcyBzdGF0ZSwgZ290ICRMT0NLX0NPVU5UIg0KK0xPQ0tFUl9DT09LSUU9 IiQoanEgLXIgJy5sb2NrZXJzWzBdLmNvb2tpZScgJHtUTVBfRElSfS9sb2NrX3N0YXRlX2ZvdXJ0 aCkiDQorWyAiJExPQ0tFUl9DT09LSUUiID09ICJjdGRiX3JlY2xvY2tfbXV0ZXgiIF0gXA0KKwl8 fCBfZmFpbCAidW5leHBlY3RlZCBsb2NrZXIgY29va2llOiAkTE9DS0VSX0NPT0tJRSINCitMT0NL RVJfREVTQz0iJChqcSAtciAnLmxvY2tlcnNbMF0uZGVzY3JpcHRpb24nICR7VE1QX0RJUn0vbG9j a19zdGF0ZV9mb3VydGgpIg0KK1sgIiRMT0NLRVJfREVTQyIgPT0gIkNUREIgcmVjb3ZlcnkgbG9j ayIgXSBcDQorCXx8IF9mYWlsICJ1bmV4cGVjdGVkIGxvY2tlciBkZXNjcmlwdGlvbjogJExPQ0tF Ul9ERVNDIg0KKw0KK2tpbGwgJGxvY2tlcl9waWQgfHwgZXhpdCAxDQord2FpdCAkbG9ja2VyX3Bp ZCAmPiAvZGV2L251bGwNCisNCit0aGlyZF9vdXQ9JChjYXQgJHtUTVBfRElSfS90aGlyZCkNCitb ICIkdGhpcmRfb3V0IiA9PSAiMCIgXSBcDQorCXx8IF9mYWlsICJleHBlY3RlZCBsb2NrIGFjcXVp c2l0aW9uICgwKSwgYnV0IGdvdCAkdGhpcmRfb3V0Ig0KKw0KK3JtICR7VE1QX0RJUn0vKg0KK3Jt ZGlyICRUTVBfRElSDQorDQorZWNobyAiJDA6IGFsbCB0ZXN0cyBwYXNzZWQiDQotLSANCjIuMTAu Mg0KDQo= --MP_/O5v1XH+8Hkp.a1F6WsUa1_l--