From mboxrd@z Thu Jan 1 00:00:00 1970 From: Noah Watkins Subject: Re: Passing LUA script via python rados execute Date: Sat, 18 Feb 2017 11:55:31 -0800 Message-ID: References: <1fa1fa7d.AEEAIBzI4F8AAAAAAAAAAF3gdzcAADNJBWwAAAAAAACRXwBYpMPz@mailjet.com> <3177d648.AEQAH1DOmSwAAAAAAAAAAF3gdzcAADNJBWwAAAAAAACRXwBYphEb@mailjet.com> <1cadb44c.ADsAAGb8C0gAAAAAAAAAAF3gdzcAADNJBWwAAAAAAACRXwBYphQY@mailjet.com> <3a5eb209.AEEAIECau6cAAAAAAAAAAF3gdzcAADNJBWwAAAAAAACRXwBYp3rL@mailjet.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <3a5eb209.AEEAIECau6cAAAAAAAAAAF3gdzcAADNJBWwAAAAAAACRXwBYp3rL-ImYt9qTNe79BDgjK7y7TUQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ceph-users-bounces-idqoXFIVOFJgJs9I8MT0rw@public.gmane.org Sender: "ceph-users" To: Nick Fisk Cc: ceph-devel , ceph-users List-Id: ceph-devel.vger.kernel.org SGkgTmljaywKClRoZSBzaG9ydCBhbnN3ZXIgdG8geW91ciBxdWVzdGlvbiBpcyB0aGF0IGJhcnJp bmcgYSBob2xlIGluIHRoZQpzYW5kYm94IChvciBsb2FkaW5nIGEgbW9kaWZpZWQgdmVyc2lvbiBv ZiB0aGUgcGx1Z2luIHdoaWNoIGlzIGFuCm9wdGlvbiksIGFueSBkZXBlbmRlbmNpZXMgbmVlZCB0 byBiZSBwYWNrYWdlZCB1cCBpbnRvIHRoZSB0aGUgcmVxdWVzdAphbmQgY2FuJ3QgYmUgbG9hZGVk IGR5bmFtaWNhbGx5IGZyb20gdGhlIGhvc3QgZmlsZSBzeXN0ZW0uIEluIHZlcnNpb24KMSBvZiB0 aGUgTHVhIHBsdWdpbiB3ZSB3YW50ZWQgdG8gbG9jayBkb3duIHRoZSBzYW5kYm94LCBidXQga25l dyB3ZSdkCmhhdmUgdG8gYWRkcmVzcyBleHBhbmRlZCB1c2UgY2FzZXMuIEkgZ3Vlc3MgdGhhdCB0 aW1lIGlzIG5vdyA6KQoKV2hhdCBmb2xsb3dzIGFyZSBteSBpbml0aWFsIHRob3VnaHRzIG9uIGEg dmVyc2lvbiAyIG9mIHRoZSBwbHVnaW4uIEknZApsaWtlIHRvIGdldCBmZWVkYmFjayBvbiB0aGVz ZSBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIHlvdXIgdXNlIGNhc2UuCkkndmUgYWxzbyBDQydk IFBhdHJpY2sgRG9ubmVsbHksIHdobyBJIGhvcGUgY2FuIGNoaW1lIGluIHRvbyB3aXRoIGhpcwpv cGluaW9uLgoKVGhlIGxlYXN0IGludHJ1c2l2ZSBzb2x1dGlvbiBpcyB0byBzaW1wbHkgY2hhbmdl IHRoZSBzYW5kYm94IHRvIGFsbG93CnRoZSBzdGFuZGFyZCBmaWxlIHN5c3RlbSBtb2R1bGUgbG9h ZGluZyBmdW5jdGlvbiBhcyBleHBlY3RlZC4gVGhlbiBhbnkKdXNlciB3b3VsZCBuZWVkIHRvIG1h a2Ugc3VyZSB0aGF0IGV2ZXJ5IE9TRCBoYWQgY29uc2lzdGVudCB2ZXJzaW9ucyBvZgpkZXBlbmRl bmNpZXMgaW5zdGFsbGVkIHVzaW5nIHNvbWV0aGluZyBsaWtlIEx1YVJvY2tzLiBUaGlzIGlzIHNp bXBsZSwKYnV0IGNvdWxkIG1ha2UgZGVidWdnaW5nIGFuZCBkZXBsb3ltZW50IGEgbWFqb3IgaGVh ZGFjaGUuCgpBIG1vcmUgYW1iaXRpb3VzIHZlcnNpb24gd291bGQgYmUgdG8gY3JlYXRlIGFuIGlu dGVyZmFjZSBmb3IgdXNlcnMgdG8KdXBsb2FkIHNjcmlwdHMgYW5kIGRlcGVuZGVuY2llcyBpbnRv IG9iamVjdHMsIGFuZCBzdXBwb3J0IHJlZmVyZW5jaW5nCnRob3NlIG9iamVjdHMgYXMgc3RhbmRh cmQgZGVwZW5kZW5jaWVzIGluIEx1YSBzY3JpcHRzIGFzIGlmIHRoZXkgd2VyZQpzdGFuZGFyZCBt b2R1bGVzIG9uIHRoZSBmaWxlIHN5c3RlbS4gRWFjaCBPU0QgY291bGQgdGhlbiBjYWNoZSBzY3Jp cHRzCmFuZCBkZXBlbmRlbmNpZXMsIGFsbG93aW5nIGFwcGxpY2F0aW9ucyB0byB1c2UgcmVmZXJl bmNlcyB0byBzY3JpcHRzCmluc3RlYWQgb2Ygc2VuZGluZyBhIHNjcmlwdCB3aXRoIGV2ZXJ5IHJl cXVlc3QuCgpJbiB0aGUgc2hvcnQgdGVybSB3ZSBjYW4gYWRkIGEgY29uZmlndXJhdGlvbiBwYXJh bWV0ZXIgdG8gYWxsb3cgdGhlCnNhbmRib3ggdG8gYWNjZXNzIHRoZSBmaWxlIHN5c3RlbSwgYnV0 IEknbSBub3QgZmFtaWxpYXIgd2l0aCB0aGUKcG9saWNpZXMgb2YgYmFja3BvcnRpbmcgdGhlc2Ug dHlwZXMgb2YgY2hhbmdlcy4KClRob3VnaHRzPwotTm9haAoKT24gRnJpLCBGZWIgMTcsIDIwMTcg YXQgMjozNSBQTSwgTmljayBGaXNrIDxuaWNrQGZpc2subWUudWs+IHdyb3RlOgo+IEhpIE5vYWgs Cj4KPiBPbmUgbGFzdCBxdWVzdGlvbiwgSSB0aGluay4KPiBJcyBpdCBwb3NzaWJsZSB0byB1c2Ug dGhlIHJlcXVpcmUgc3RhdGVtZW50IHRvIGxvYWQgZXh0cmEgbW9kdWxlcyBpbnRvIHRoZSBsdWEg c2NyaXB0LCBpZiB0aGF0IG1vZHVsZSBleGlzdHMgc29tZXdoZXJlIG9uIHRoZSBPU0Qgbm9kZXMg bG9jYWwgRlM/Cj4KPiBJJ20gdHJ5aW5nIHRvIGxvYWQgYSBsdWEgbWQ1IG1vZHVsZSBpbiwgbGlr ZToKPiBjbWQgPSB7Cj4gICAic2NyaXB0IjogIiIiCj4gICAgICAgbG9jYWwgbWQ1ID0gcmVxdWly ZSAibWQ1Igo+ICAgICAgIGZ1bmN0aW9uIGNhbGNtZDUoaW5wdXQsIG91dHB1dCkKPiAuLi4KPgo+ IGFuZCBJJ20gZ2V0dGluZwo+Cj4gPGNscz4gL3RtcC9idWlsZGQvY2VwaC0xMS4yLjAvc3JjL2Ns cy9sdWEvY2xzX2x1YS5jYzoxMDA0OiBlcnJvcjogW3N0cmluZyAiLi4uIl06MjogYXR0ZW1wdCB0 byBjYWxsIGEgbmlsIHZhbHVlIChnbG9iYWwgJ3JlcXVpcmUnKQo+Cj4gSSBkaWQgc2VlIHRoaXMg Y29tbWVudAo+Cj4gaHR0cHM6Ly9naXRodWIuY29tL2NlcGgvY2VwaC9ibG9iL2tyYWtlbi9zcmMv Y2xzL2x1YS9jbHNfbHVhLmNjI0w3MDMKPgo+IFNvIG5vdCBzdXJlIGlmIHRoYXQgbWVhbnMgY3Vy cmVudGx5IGxvYWRpbmcgbW9kdWxlcyBmcm9tIHRoZSBsb2NhbCBGUyBpcyByZXN0cmljdGVkPwo+ Cj4gVGhhbmtzCj4gTmljawo+Cj4KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4gRnJv bTogTm9haCBXYXRraW5zIFttYWlsdG86bm9haHdhdGtpbnNAZ21haWwuY29tXQo+PiBTZW50OiAx NiBGZWJydWFyeSAyMDE3IDIyOjE3Cj4+IFRvOiBOaWNrIEZpc2sgPG5pY2tAZmlzay5tZS51az4K Pj4gQ2M6IGNlcGgtZGV2ZWwgPGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnPgo+PiBTdWJqZWN0 OiBSZTogUGFzc2luZyBMVUEgc2NyaXB0IHZpYSBweXRob24gcmFkb3MgZXhlY3V0ZQo+Pgo+PiBT b3JyeSBhYm91dCB0aGUgY29uZnVzaW9uLiBMZXQgdXMga25vdyBpZiB5b3UgaGF2ZSBhbnkgaXNz dWVzIC8gcXVlc3Rpb25zIDopCj4+Cj4+IE9uIFRodSwgRmViIDE2LCAyMDE3IGF0IDE6MDUgUE0s IE5pY2sgRmlzayA8bmlja0BmaXNrLm1lLnVrPiB3cm90ZToKPj4gPiBCaW5nbyEhCj4+ID4KPj4g PiBUaGF0IHdhcyBpdCwgSSB3YXMganVzdCB1c2luZyB0aGUgZXhhbXBsZSBmcm9tIGhlcmUKPj4g Pgo+PiA+IGh0dHA6Ly9ub2FoZGVzdS5naXRodWIuaW8vMjAxNS8xMi8wNi9sb2FkLWx1YS1yYWRv cy1wbHVnaW4tZnJvbS1mcy5odG0KPj4gPiBsCj4+ID4KPj4gPiBjbWQgPSB7Cj4+ID4gICAic2Ny aXB0IjogIiIiCj4+ID4gICAgICAgZnVuY3Rpb24gdXBwZXIoaW5wdXQsIG91dHB1dCkKPj4gPiAg ICAgICAgIGlucHV0X3N0ciA9IGlucHV0OnN0cigpCj4+ID4gICAgICAgICB1cHBlcl9zdHIgPSBz dHJpbmcudXBwZXIoaW5wdXRfc3RyKQo+PiA+ICAgICAgICAgb3V0cHV0OmFwcGVuZCh1cHBlcl9z dHIpCj4+ID4gICAgICAgZW5kCj4+ID4gICAgICAgY2xzLnJlZ2lzdGVyKHVwcGVyKQo+PiA+ICAg IiIiLAo+PiA+ICAgImhhbmRsZXIiOiAidXBwZXIiLAo+PiA+ICAgImlucHV0IjogInRoaXMgc3Ry aW5nIHdhcyBpbiBsb3dlciBjYXNlIiwgfQo+PiA+Cj4+ID4gVGhhbmtzIGZvciBhbGwgeW91ciBo ZWxwIG9uIHRoaXMuCj4+ID4KPj4gPiBOaWNrCj4+ID4KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0KPj4gPj4gRnJvbTogTm9haCBXYXRraW5zIFttYWlsdG86bm9haHdhdGtpbnNAZ21h aWwuY29tXQo+PiA+PiBTZW50OiAxNiBGZWJydWFyeSAyMDE3IDIxOjAxCj4+ID4+IFRvOiBOaWNr IEZpc2sgPG5pY2tAZmlzay5tZS51az4KPj4gPj4gQ2M6IGNlcGgtZGV2ZWwgPGNlcGgtZGV2ZWxA dmdlci5rZXJuZWwub3JnPgo+PiA+PiBTdWJqZWN0OiBSZTogUGFzc2luZyBMVUEgc2NyaXB0IHZp YSBweXRob24gcmFkb3MgZXhlY3V0ZQo+PiA+Pgo+PiA+PiBJdCBsb29rcyBsaWtlIHlvdSBtaWdo dCBiZSB1c2luZyBhIHNjcmlwdCAvIGV4YW1wbGUgdGhhdCB3YXMgd3JpdHRlbgo+PiA+PiBiZWZv cmUgdGhlIGNvZGUgd2FzIG1lcmdlZCBpbnRvIENlcGggYW5kIG1pZ2h0IGJlIGEgbGl0dGxlIG91 dCBvZgo+PiA+PiBkYXRlLiBVc2UgYG9iamNsYXNzLnJlZ2lzdGVyYCBpbnN0ZWFkIG9mIGBjbHMu cmVnaXN0ZXJgLiBUaGVyZSBpcyBhCj4+ID4+IHRlc3Qgc2NyaXB0IGF0IHRoZSB0b3Agb2YKPj4g Pj4gaHR0cHM6Ly9naXRodWIuY29tL2NlcGgvY2VwaC9ibG9iL21hc3Rlci9zcmMvdGVzdC9jbHNf bHVhL3Rlc3RfY2xzX2x1Cj4+ID4+IGEuY2MgdGhhdCB5b3UgY2FuIHVzZSBhcyBhIHJlZmVyZW5j ZS4gSWYgdGhlIHRlc3QgcHJvZ3JhbXMgYXJlCj4+ID4+IGluc3RhbGxlZCB5b3Ugc2hvdWxkIGFs c28gaGF2ZSB0aGUgZXhlY3V0YWJsZSBgY2VwaF90ZXN0X2Nsc19sdWFgCj4+ID4+IHdoaWNoIHdp bGwgcnVuIHRoZSBjbHNfbHVhIHVuaXQgdGVzdHMuCj4+ID4+Cj4+ID4+IE9uIFRodSwgRmViIDE2 LCAyMDE3IGF0IDEyOjUyIFBNLCBOaWNrIEZpc2sgPG5pY2tAZmlzay5tZS51az4gd3JvdGU6Cj4+ ID4+ID4gSGkgTm9haCwKPj4gPj4gPgo+PiA+PiA+IFRoYW5rcyBmb3IgdGhlIHJlc3BvbnNlLgo+ PiA+PiA+Cj4+ID4+ID4gWW91IHdlcmUgcmlnaHQgYWJvdXQgdGhlIG5lZWQgdG8gZW5hYmxlIHRo ZSBjbGFzcyBpbiB0aGUgY2VwaC5jb25mLgo+PiA+PiA+IEkgZGlkCj4+ID4+IHNlZSB0aGF0IG5v dGUgaW4gdGhlIEtyYWtlbiByZWxlYXNlIG5vdGVzLCBidXQgYXNzdW1lZCB0aGF0IGFzIHRoZQo+ PiA+PiBMVUEgY2xhc3MgaXMgaW4gdGhlIENlcGggc291cmNlIHRyZWUgbm93LCB0aGF0IGl0IHdv dWxkIGhhdmUgYmVlbgo+PiA+PiBpbmNsdWRlZCB3aXRoIGFsbCB0aGUgb3RoZXJzIGluIHRoYXQg ZGlyZWN0b3J5LiBBbnl3YXkgc2xhcCBvbiB0aGUgd3Jpc3QgZm9yCj4+IG1lIG5vdCBjaGVja2lu ZyB0aGF0Lgo+PiA+PiA+Cj4+ID4+ID4gSG93ZXZlciwgYWx0aG91Z2ggdGhhdCBnb3QgbWUgYSBi aXQgZnVydGhlciwgSSdtIG5vdyBnZXR0aW5nIGEgcmVhZAo+PiA+PiA+IGVycm9yCj4+ID4+ID4K Pj4gPj4gPiByYWRvcy5JT0Vycm9yOiBJb2N0eC5yZWFkKHJiZCk6IGZhaWxlZCB0byByZWFkIHRl c3QKPj4gPj4gPgo+PiA+PiA+IFdoaWNoIGlzIGEgYml0IHB1enpsaW5nLiBBcyB0aGVyZSBpcyBk ZWZpbml0ZWx5IGFuIG9iamVjdCBjYWxsZWQKPj4gPj4gPiB0ZXN0IG9uIHRoZSByYmQKPj4gPj4g cG9vbCBhbmQgaWYgSSBpc3N1ZSBhIGlvY3R4LnJlYWQgcmlnaHQgYmVmb3JlIHRoZSBleGVjdXRl IGNhbGwsIGl0Cj4+ID4+IHJldHVybnMgc3VjY2Vzc2Z1bGx5IHdpdGggdGhlIG9iamVjdHMgY29u dGVudHMuIFNvIEknbSBndWVzc2luZyB0aGlzCj4+ID4+IGlzIGFjdHVhbGx5IHRoZSBsdWEgY2xh c3Mvc2NyaXB0IGJvbWJpbmcgb3V0IGFuZCBub3QgYSByZWFkIGVycm9yPwo+PiA+PiA+Cj4+ID4+ ID4gSSBhbHNvIGdldCB0aGlzIGVycm9yIGluIHRoZSBPU0QgbG9nCj4+ID4+ID4KPj4gPj4gPiAy MDE3LTAyLTE2IDIwOjQxOjQ1LjA2NTYxNyA3ZjA4ZGEzMzY3MDAgIDAgPGNscz4KPj4gPj4gPiAv dG1wL2J1aWxkZC9jZXBoLTExLjIuMC9zcmMvY2xzL2x1YS9jbHNfbHVhLmNjOjEwMDQ6IGVycm9y OiBbc3RyaW5nCj4+ID4+ID4gIi4uLiJdOjc6IGF0dGVtcHQgdG8gaW5kZXggYSBuaWwgdmFsdWUg KGdsb2JhbCAnY2xzJykKPj4gPj4gPgo+PiA+PiA+IERvbid0IGtub3cgaWYgdGhhdCByaW5ncyBh bnkgYmVsbHM/Cj4+ID4+ID4KPj4gPj4gPiBOaWNrCj4+ID4+ID4KPj4gPj4gPj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0KPj4gPj4gPj4gRnJvbTogTm9haCBXYXRraW5zIFttYWlsdG86bm9h aHdhdGtpbnNAZ21haWwuY29tXQo+PiA+PiA+PiBTZW50OiAxNSBGZWJydWFyeSAyMDE3IDIzOjQz Cj4+ID4+ID4+IFRvOiBuaWNrQGZpc2subWUudWsKPj4gPj4gPj4gQ2M6IGNlcGgtZGV2ZWwgPGNl cGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnPgo+PiA+PiA+PiBTdWJqZWN0OiBSZTogUGFzc2luZyBM VUEgc2NyaXB0IHZpYSBweXRob24gcmFkb3MgZXhlY3V0ZQo+PiA+PiA+Pgo+PiA+PiA+PiBIaSBO aWNrLAo+PiA+PiA+Pgo+PiA+PiA+PiBGaXJzdCB0aGluZyB0byBub3RlIGlzIHRoYXQgaW4gS3Jh a2VuIHRoYXQgb2JqZWN0IGNsYXNzZXMgbm90Cj4+ID4+ID4+IHdoaXRlbGlzdGVkIG5lZWQgdG8g YmUgZW5hYmxlZCBleHBsaWNpdGx5LiBUaGlzIGlzIGluIHRoZSBLcmFrZW4KPj4gPj4gPj4gcmVs ZWFzZSBub3Rlcwo+PiA+PiA+PiAoaHR0cDovL2RvY3MuY2VwaC5jb20vZG9jcy9tYXN0ZXIvcmVs ZWFzZS1ub3Rlcy8pOgo+PiA+PiA+Pgo+PiA+PiA+PiB0bGRyOiBhZGQgJ29zZCBjbGFzcyBsb2Fk IGxpc3QgPSAqJyBhbmQgJ29zZCBjbGFzcyBkZWZhdWx0IGxpc3QgPSAqJwo+PiA+PiA+PiB0byBj ZXBoLmNvbmYuCj4+ID4+ID4+Cj4+ID4+ID4+IC0gVGhlIOKAmG9zZCBjbGFzcyBsb2FkIGxpc3Ti gJkgY29uZmlnIG9wdGlvbiBpcyBhIGxpc3Qgb2Ygb2JqZWN0Cj4+ID4+ID4+IGNsYXNzIG5hbWVz IHRoYXQgdGhlIE9TRCBpcyBwZXJtaXR0ZWQgdG8gbG9hZCAob3Ig4oCYKuKAmSBmb3IgYWxsCj4+ ID4+ID4+IGNsYXNzZXMpLiBCeSBkZWZhdWx0IGl0IGNvbnRhaW5zIGFsbCBleGlzdGluZyBpbi10 cmVlIGNsYXNzZXMgZm9yIGJhY2t3YXJkcwo+PiBjb21wYXRpYmlsaXR5Lgo+PiA+PiA+Pgo+PiA+ PiA+PiAtIFRoZSDigJhvc2QgY2xhc3MgZGVmYXVsdCBsaXN04oCZIGNvbmZpZyBvcHRpb24gaXMg YSBsaXN0IG9mIG9iamVjdAo+PiA+PiA+PiBjbGFzcyBuYW1lcyAob3IKPj4gPj4g4oCYKuKAmQo+ PiA+PiA+PiBmb3IgYWxsIGNsYXNzZXMpIHRoYXQgY2xpZW50cyBtYXkgaW52b2tlIGhhdmluZyBv bmx5IHRoZSDigJgq4oCZLCDigJh44oCZLAo+PiA+PiA+PiDigJhjbGFzcy1yZWFk4oCZLCBvciDi gJhjbGFzcy13cml0ZeKAmSBjYXBhYmlsaXRpZXMuIEJ5IGRlZmF1bHQgaXQKPj4gPj4gPj4gY29u dGFpbnMgYWxsIGV4aXN0aW5nIGluLXRyZWUgY2xhc3NlcyBmb3IgYmFja3dhcmRzIGNvbXBhdGli aWxpdHkuCj4+ID4+ID4+IEludm9raW5nIGNsYXNzZXMgbm90IGxpc3RlZCBpbiDigJhvc2QgY2xh c3MgZGVmYXVsdCBsaXN04oCZIHJlcXVpcmVzIGEKPj4gPj4gPj4gY2FwYWJpbGl0eSBuYW1pbmcg dGhlIGNsYXNzIChlLmcuIOKAmGFsbG93IGNsYXNzIGZvb+KAmSkuCj4+ID4+ID4+Cj4+ID4+ID4+ IEkgc3VzcGVjdCB0aGF0IHdpbGwgcmVzb2x2ZSB0aGUgaXNzdWUuCj4+ID4+ID4+Cj4+ID4+ID4+ IElmIHlvdSd2ZSBkb25lIHRoYXQgYW5kIGl0IHN0aWxsIGRvZXNuJ3Qgd29yayB0aGVuIHRoZSBu ZXh0IHRoaW5nCj4+ID4+ID4+IEknZCBzdWdnZXN0IGlzIGNyZWF0aW5nIHRoZSB0YXJnZXQgb2Jq ZWN0IGJlZm9yZSBydW5uaW5nIHRoZSBjb21tYW5kLgo+PiA+PiA+PiBPcGVyYXRpb25zIG9uIG9i amVjdHMgdGhhdCBkb24ndCBleGlzdCBzb21ldGltZXMgc2VlbQo+PiA+PiA+PiBub24taW50dWl0 aXZlIHRvCj4+ID4+IG1lLgo+PiA+PiA+Pgo+PiA+PiA+PiBMZXQgbWUga25vdyBpZiB0aGF0IGRv ZXNuJ3Qgd29yayBhbmQgd2UgY2FuIGxvb2sgYXQgZGVidWdnaW5nIGZ1cnRoZXIuCj4+ID4+ID4+ Cj4+ID4+ID4+IFRoYW5rcywKPj4gPj4gPj4gLSBOb2FoCj4+ID4+ID4+Cj4+ID4+ID4+IE9uIFdl ZCwgRmViIDE1LCAyMDE3IGF0IDE6MTEgUE0sIE5pY2sgRmlzayA8bmlja0BmaXNrLm1lLnVrPiB3 cm90ZToKPj4gPj4gPj4gPiBIaSBOb2FoLAo+PiA+PiA+PiA+Cj4+ID4+ID4+ID4gSSdtIHRyeWlu ZyB0byBmb2xsb3cgeW91ciBleGFtcGxlIHdoZXJlIHlvdSBjYW4gcGFzcyBhIExVQQo+PiA+PiA+ PiA+IHNjcmlwdCBhcyBqc29uIHdoZW4gY2FsbGluZyB0aGUgcmFkb3MgZXhlY3V0ZSBmdW5jdGlv biBpbgo+PiA+PiA+PiA+IFB5dGhvbi4gSG93ZXZlciBJJ20gZ2V0dGluZyBhIHJhZG9zIHBlcm1p c3Npb24gZGVuaWVkIGVycm9yCj4+ID4+ID4+ID4gc2F5aW5nIGl0cyBmYWlsZWQgdG8gcmVhZCB0 aGUgdGVzdCBvYmplY3QgSSBoYXZlIHBsYWNlZCBvbiB0aGUgcG9vbC4KPj4gPj4gPj4gPgo+PiA+ PiA+PiA+IEkgaGF2ZSBhbHNvIHRyaWVkIGNhbGxpbmcgdGhlIGNsc19oZWxsbyBvYmplY3QgY2xh c3MgYW5kIHRoaXMKPj4gPj4gPj4gPiB3b3Jrcywgc28gSSBiZWxpZXZlIGl0cyBzb21ldGhpbmcg dG8gZG8gd2l0aCB0aGUgTFVBCj4+ID4+ID4+ID4gZnVuY3Rpb25hbGl0eSB0aGF0J3MgY2F1c2lu ZyBpdCB0byBib21iIG91dC4gVGhpcyBpcyBydW5uaW5nIG9uIEtyYWtlbi4KPj4gPj4gPj4gPgo+ PiA+PiA+PiA+IEFueSBpZGVhcyB3b3VsZCBiZSBncmF0ZWZ1bGx5IHJlY2VpdmVkLgo+PiA+PiA+ PiA+Cj4+ID4+ID4+ID4gTmljawo+PiA+PiA+PiA+Cj4+ID4+ID4+ID4gSWUKPj4gPj4gPj4gPiBw cmludCBqc29uLmR1bXBzKGNtZCkKPj4gPj4gPj4gPiByZXQsIGRhdGEgPSBpb2N0eC5leGVjdXRl KCd0ZXN0JywgJ2x1YScsICdldmFsX2pzb24nLAo+PiA+PiA+PiA+IGpzb24uZHVtcHMoY21kKSkK Pj4gPj4gPj4gPgo+PiA+PiA+PiA+IE91dHB1dHMKPj4gPj4gPj4gPiBweXRob24gcmFkb3NsdWEu cHkgLS1vYmplY3QtbmFtZT10ZXN0IC0tcG9vbD1yYmQKPj4gPj4gPj4gPiB7ImhhbmRsZXIiOiAi dXBwZXIiLCAic2NyaXB0IjogIlxuICAgICAgZnVuY3Rpb24gdXBwZXIoaW5wdXQsIG91dHB1dClc bgo+PiA+PiA+PiA+IGlucHV0X3N0ciA9IGlucHV0OnN0cigpXG4gICAgICAgIHVwcGVyX3N0ciA9 IHN0cmluZy51cHBlcihpbnB1dF9zdHIpXG4KPj4gPj4gPj4gPiBvdXRwdXQ6YXBwZW5kKHVwcGVy X3N0cilcbiAgICAgIGVuZFxuICAgICAgY2xzLnJlZ2lzdGVyKHVwcGVyKVxuICAifQo+PiA+PiA+ PiA+IFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKPj4gPj4gPj4gPiAgIEZpbGUg InJhZG9zbHVhLnB5IiwgbGluZSA0NywgaW4gPG1vZHVsZT4KPj4gPj4gPj4gPiAgICAgcmV0LCBk YXRhID0gaW9jdHguZXhlY3V0ZSgndGVzdCcsICdsdWEnLCAnZXZhbF9qc29uJywganNvbi5kdW1w cyhjbWQpKQo+PiA+PiA+PiA+ICAgRmlsZSAicmFkb3MucHl4IiwgbGluZSA0NTEsIGluCj4+ID4+ ID4+ID4gcmFkb3MucmVxdWlyZXMud3JhcHBlci52YWxpZGF0ZV9mdW5jCj4+ID4+ID4+ID4gKC90 bXAvYnVpbGRkL2NlcGgtMTEuMi4wL29iai14ODZfNjQtbGludXgtZ251L3NyYy9weWJpbmQvcmFk b3MvcAo+PiA+PiA+PiA+IHlyZQo+PiA+PiA+PiA+IHgvcgo+PiA+PiA+PiA+IGFkb3MuYwo+PiA+ PiA+PiA+IDo0NDM5KQo+PiA+PiA+PiA+ICAgRmlsZSAicmFkb3MucHl4IiwgbGluZSAyNjU3LCBp biByYWRvcy5Jb2N0eC5leGVjdXRlCj4+ID4+ID4+ID4gKC90bXAvYnVpbGRkL2NlcGgtMTEuMi4w L29iai14ODZfNjQtbGludXgtZ251L3NyYy9weWJpbmQvcmFkb3MvcAo+PiA+PiA+PiA+IHlyZQo+ PiA+PiA+PiA+IHgvcgo+PiA+PiA+PiA+IGFkb3MuYwo+PiA+PiA+PiA+IDozNDA1NikKPj4gPj4g Pj4gPiByYWRvcy5QZXJtaXNzaW9uRXJyb3I6IElvY3R4LnJlYWQocmJkKTogZmFpbGVkIHRvIHJl YWQgdGVzdAo+PiA+PiA+PiA+Cj4+ID4+ID4KPj4gPgo+Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmNlcGgtdXNlcnMgbWFpbGluZyBsaXN0CmNlcGgtdXNl cnNAbGlzdHMuY2VwaC5jb20KaHR0cDovL2xpc3RzLmNlcGguY29tL2xpc3RpbmZvLmNnaS9jZXBo LXVzZXJzLWNlcGguY29tCg==