From mboxrd@z Thu Jan 1 00:00:00 1970 From: Richard Guy Briggs Subject: Re: Linux audit performance impact Date: Thu, 12 Feb 2015 13:25:26 -0500 Message-ID: <20150212182526.GX29998@madcap2.tricolour.ca> References: <9DBA79E0CE64AA42B07DEDAAD0F7DB914165C5B7@G4W3222.americas.hpqcorp.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <9DBA79E0CE64AA42B07DEDAAD0F7DB914165C5B7@G4W3222.americas.hpqcorp.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com To: "Viswanath, Logeswari P (MCOU OSTL)" Cc: Richard Guy Briggs , "linux-audit@redhat.com" List-Id: linux-audit@redhat.com T24gMTUvMDIvMTIsIFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3JvdGU6Cj4g SGkgYWxsLAo+IAo+IFdlIGRpZCBwcm9maWxpbmcgb2YgdGhlIGtlcm5lbCAodXNpbmcgcGVyZiB0 b29sKSBkdXJpbmcgb3VyIHBlcmZvcm1hbmNlIHRlc3QgYW5kIGJlbG93IHdlcmUgdGhlIHRvcCA0 IGZ1bmN0aW9ucyBmb3IgdGhlIG92ZXJoZWFkLgo+IAo+IDExLjMzJSAgICAgICAgbG9hZGVyMSAg W2tlcm5lbC5rYWxsc3ltc10gICBba10gZm9ybWF0X2RlY29kZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCj4gICAgIDEwLjQwJSAgICAgICAgbG9hZGVyMSAgW2tlcm5lbC5rYWxsc3lt c10gICBba10gbWVtY3B5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4g ICAgICA3LjQ2JSAgICAgICAgbG9hZGVyMSAgW2tlcm5lbC5rYWxsc3ltc10gICBba10gbnVtYmVy LmlzcmEuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4gICAgICA2Ljk5JSAgICAg ICAgbG9hZGVyMSAgW2tlcm5lbC5rYWxsc3ltc10gICBba10gdnNucHJpbnRmICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCj4gCj4gSSB3YXMgdW5hYmxlIHRvIGF0dGFjaCB0aGUg ZW50aXJlIHByb2ZpbGluZyBkYXRhIG9mIHRoZSBrZXJuZWwgYmVjYXVzZSBpdCBleGNlZWRzIHRo ZSBsaW1pdCBvZiA4MEtCLgo+ICAgIAo+ID5Gcm9tIHRoZSBwZXJmIGRhdGEsIHdlIGJlbGlldmVk IHRoZSBvdmVyaGVhZCBpcyBiZWNhdXNlIG9mIGludm9raW5nIGF1ZGl0X2xvZ19mb3JtYXQgZnVu Y3Rpb24gbXVsdGlwbGUgdGltZXMuCj4gV2UgY2hhbmdlZCB0aGUgY29kZSB0byByZWR1Y2UgdGhl IG51bWJlciBvZiB0aW1lcyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KPiBXaXRoIHRoaXMgY2hh bmdlIHRoZSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBpcyAyMCUgbm93IGNvbXBhcmVkIHRvIHRo ZSBwZXJmb3JtYW5jZSB3aXRob3V0IGF1ZGl0aW5nLgo+IFdpdGhvdXQgdGhpcyBjaGFuZ2UgdGhl IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGlzIDIwMCUgY29tcGFyZWQgdG8gdGhlIHBlcmZvcm1h bmNlIHdpdGhvdXQgYXVkaXRpbmcuCgpUaG9zZSBudW1iZXJzIGFyZSBub3QgaW5zaWduaWZpY2Fu dCEgIEkgYW0gYSBiaXQgc3VycHJpc2VkIHlvdSB3ZXJlIGFibGUKdG8gZ2V0IHRoYXQgbXVjaCBv ZiBhbiBpbXByb3ZlbWVudCB3aXRoIGp1c3QgdGhpcyBjbGFzcyBvZiBjaGFuZ2UuCgo+IFdlIGNh biBwdWJsaXNoIHRoZSBjb2RlIGNoYW5nZSBkb25lIHRvbW9ycm93LgoKSSdkIGNlcnRhaW5seSBi ZSBpbnRlcmVzdGVkIHRvIHNlZSB0aGUgY29kZS4KCj4gUGxlYXNlIGxldCBtZSBrbm93IHlvdXIg ZmVlZGJhY2sgb24gdGhpcyBpZGVhLiAKPiAKPiBSZWdhcmRzLAo+IExvZ2Vzd2FyaS4KPiAKPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFp bHRvOnJnYkByZWRoYXQuY29tXQo+IFNlbnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMTEsIDIwMTUg MTA6MjEgUE0KPiBUbzogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKQo+IENjOiBs aW51eC1hdWRpdEByZWRoYXQuY29tCj4gU3ViamVjdDogUmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1h bmNlIGltcGFjdAo+IAo+IE9uIDE1LzAyLzA2LCBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09V IE9TVEwpIHdyb3RlOgo+ID4gSGkgYWxsLAo+ID4gCj4gPiBQbGVhc2UgZmluZCB0aGUgYmVsb3cg dGhlIGRldGFpbHMgb2YgdGhlIHBlcmZvcm1hbmNlIHRlc3Qgd2UgcmFuLgo+ID4gSXQgd291bGQg YmUgZ3JlYXQgaWYgd2UgZ2V0IGhlbHAgdG8gaWRlbnRpZnkgdGhlIHJlYXNvbiBiZWhpbmQgdGhl IGRlZ3JhZGF0aW9uIGFuZCB0aGUgd2F5cyBvZiBpbXByb3ZpbmcgaXQuIAo+ID4gCj4gPiBLZXJu ZWwgVmVyc2lvbjoKPiA+IHJvb3QgPiB1bmFtZSAtcgo+ID4gMy4xMy4wLTM2LWdlbmVyaWMKPiA+ IAo+ID4gT1MgVmVyc2lvbjoKPiA+IFVidW50dSAxNC4wNC4xCj4gPiAKPiA+IE5vLiBvZiBDUFVz OiAKPiA+IHJvb3QgPiBucHJvYwo+ID4gMjQKPiA+IAo+ID4gQXVkaXQgU3RhdHVzOgo+ID4gcm9v dCA+IGF1ZGl0Y3RsIC1zCj4gPiBBVURJVF9TVEFUVVM6IGVuYWJsZWQ9MSBmbGFnPTEgcGlkPTAg cmF0ZV9saW1pdD0wIGJhY2tsb2dfbGltaXQ9MzIwCj4gPiBsb3N0PTU3MTkwMzUzIGJhY2tsb2c9 MAo+ID4gCj4gPiBSdWxlcyBDb25maWd1cmVkOgo+ID4gcm9vdCA+IGF1ZGl0Y3RsIC1sCj4gPiBM SVNUX1JVTEVTOiBleGl0LGFsd2F5cyBhcmNoPTMyMjEyMjU1MzQgKDB4YzAwMDAwM2UpIHN5c2Nh bGw9YWxsCj4gPiAKPiA+IEF0dGFjaGVkIGlzIHRoZSBwcm9ncmFtIHVzZWQgdG8gbG9hZCB0aGUg c3lzdGVtLgo+ID4gCj4gPiBSZXN1bHRzOgo+ID4gCj4gPiBXaXRob3V0IGVuYWJsaW5nIGF1ZGl0 CTEyLjI5Cj4gPiBXaXRoIGF1ZGl0aW5nIGVuYWJsZWQgYW5kIG5vIHJ1bGVzIGNvbmZpZ3VyZWQg MTIuMzEKPiA+IFdpdGggYXVkaXRpbmcgZW5hYmxlZCwgMSBydWxlIGNvbmZpZ3VyZWQgYnV0IGF1 ZGl0ZCBub3QgcnVubmluZyAtIGthdWRpdGQgbG9ncyBhdWRpdCByZWNvcmRzIHRvIHN5c2xvZyB2 aWEgcHJpbnRrCTQxLjAyCQkKPiAKPiBUaGlzIHdvdWxkIGJlIG1vcmUgbWVhbmluZ2Z1bCBpZiB5 b3UgaGFja2VkIHRoZSBrZXJuZWwgdG8gZHJhaW4gdGhlIHF1ZXVlIGZpZ3VyYXRpdmVseSB0byAv ZGV2L251bCB0byBlbGltaW5hdGUgdGhlIGVmZmVjdCBvZiBhdWRpdGQgZHJhaW5pbmcgaXQsIG9y IHN5c2xvZyBjb3ZlcmluZyBmb3IgYSBtaXNzaW5nIGF1ZGl0ZC4gIFRoaXMgc3RhdCBkb2Vzbid0 IHRlbGwgdXMgdGhhdCBtdWNoIHNpbmNlIHRoZSBJL08gYWN0IGNhbiB2YXJ5IHNpZ25pZmljYW50 bHkgcGVyIGluc3RhbGxhdGlvbi4gIFRoYXQgb25lIHJ1bGUgeW91IGNob3NlIGlzIHByZXR0eSB1 bm5hdHVyYWxseSBhYnVzaXZlIGFuZCBuZWVkcyB0byBiZSBjYXJlZnVsbHkgdGhvdWdodCBvdXQg dG8gYXZvaWQgc2VsZi1tZWFzdXJlbWVudC4KPiAKPiA+IFRoZSBkZWdyYWRhdGlvbiBpcyBhcm91 bmQgMjAwJQo+ID4gCj4gPiBSZWdhcmRzLAo+ID4gTG9nZXN3YXJpLgo+ID4gCj4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogUmljaGFyZCBHdXkgQnJpZ2dzIFttYWlsdG86 cmdiQHJlZGhhdC5jb21dCj4gPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDA0LCAyMDE1IDk6 NDYgUE0KPiA+IFRvOiBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwpCj4gPiBDYzog U2F0aXNoIENoYW5kcmEgS2lsYXJ1OyBTdGV2ZSBHcnViYjsgbGludXgtYXVkaXRAcmVkaGF0LmNv bQo+ID4gU3ViamVjdDogUmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gCj4g PiBPbiAxNS8wMi8wNCwgVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKSB3cm90ZToK PiA+ID4gVGhlIGludGVudCBpcyB0byBjYWxjdWxhdGUgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBi eSB0aGUgYXVkaXRpbmcgCj4gPiA+IGNvbXBvbmVudHMgc3VjaCBhcwo+ID4gPiAKPiA+ID4gMSkg aW1wYWN0IGJlY2F1c2Ugb2Yga2F1ZGl0ZCB3aXRob3V0IGF1ZGl0ZCAtIGJ1dCBrYXVkaXRkIHdy aXRlcyB0byBzeXNsb2csIHNvIHdlIGFyZSB1bmFibGUgdG8gZGV0ZXJtaW5lIHRoZSBpbXBhY3Qg anVzdCBiZWNhdXNlIG9mIGthdWRpdGQgLSBJdCBpcyBmaW5lIGV2ZW4gaWYgdGhlIGF1ZGl0IHJl Y29yZCBpcyBkcm9wcGVkIGJ5IGthdWRpdGQuIElzIHRoZXJlIGFueSB3YXkgdG8gZG8gdGhpcz8K PiA+IAo+ID4gTm90IHlldC4gIFRoYXQgaXMgYSBtb2RlIHRoYXQgaGFzIG5vdCBiZWVuIHVzZWZ1 bCB0byBhbnlvbmUgeWV0LiAgWW91IGFyZSB3ZWxjb21lIHRvIGhhY2sgYSBjdXN0b20ga2VybmVs IHRvIGRpc2FibGUga2xvZyBmb3IgZG9pbmcgdGVzdGluZyBpbnN0cnVtZW50YXRpb24uCj4gPiAK PiA+ID4gMikgaW1wYWN0IGJlY2F1c2Ugb2YgcnVubmluZyBhdWRpdGQgLSBsb2cgZm9ybWF0IE5P TE9HCj4gPiA+IDMpIGltcGFjdCBiZWNhdXNlIG9mIHJ1bm5pbmcgYXVkaXNwZCAtIHNtYWxsIHBs dWdpbiBpcyB3cml0dGVuIHdoaWNoIHdpbGwganVzdCByZWFkIHRoZSBhdWRpdCByZWNvcmRzIGFu ZCBkb2Vzbid0IHByb2Nlc3NlcyBpdC4KPiA+ID4gCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4gPiA+IEZyb206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFpbHRvOnJnYkByZWRoYXQu Y29tXQo+ID4gPiBTZW50OiBUdWVzZGF5LCBGZWJydWFyeSAwMywgMjAxNSAxMDozMyBQTQo+ID4g PiBUbzogU2F0aXNoIENoYW5kcmEgS2lsYXJ1Cj4gPiA+IENjOiBWaXN3YW5hdGgsIExvZ2Vzd2Fy aSBQIChNQ09VIE9TVEwpOyBTdGV2ZSBHcnViYjsgCj4gPiA+IGxpbnV4LWF1ZGl0QHJlZGhhdC5j b20KPiA+ID4gU3ViamVjdDogUmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4g PiAKPiA+ID4gT24gMTUvMDIvMDMsIFNhdGlzaCBDaGFuZHJhIEtpbGFydSB3cm90ZToKPiA+ID4g PiBUaGFua3MgZm9yIFRoZSBpbmZvLiBCdXQgbXkgcXVlc3Rpb24gd2FzIHJoZXRvcmljYWwuLi4g SSBtZWFudCB0byAKPiA+ID4gPiBzYXkgdGhhdCBpdCB3b3VsZCBub3QgYmUgbXVjaC4uLiBTaGUg aXMgdHJ5aW5nIHRvIGJvbWJhcmQgdGhlIAo+ID4gPiA+IHN5c3RlbSB3aXRoIG9wZW4gY2FsbHMg Li4uIFNvIGxvdHMgYW5kIGxvdHMgb2YgZXZlbnRzIHdpbGwgYmUgCj4gPiA+ID4gZ2VuZXJhdGVk IGFuZCBrZXJuZWwgaGFzIHRvIHdyaXRlIGRvd24gdGhlIGV2ZW50cyBzb21lIHdoZXJlIG9yIGRp c2NhcmQgdGhlbS4uLgo+ID4gPiAKPiA+ID4gRXhhY3RseS4gIEl0IGlzIG9mIGxpdHRsZSBwcmFj dGljYWwgdXNlLiAgWW91IGhhdmUgdG8gZG8gSS9PIGF0IHNvbWUgcG9pbnQsIGVpdGhlciB0byB0 aGUgc2FtZSBkaXNrIG9yIGFub3RoZXIsIG9yIHRvIGEgbmV0d29yayBpbnRlcmZhY2Ugb3Igc2Vy aWFsIHBvcnQsIG90aGVyd2lzZSwganVzdCBjaHVjayBpdCBvdXQuICBZb3UgY291bGQgZG8gYSBw ZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBvbiBhIHNob3J0IGJ1cnN0LCB0aGVuIGRyYWluIHRoZSBx dWV1ZSwgYnV0IHdoYXQgd2lsbCB0aGF0IGFjdHVhbGx5IHRlbGwgdXM/Cj4gPiA+IAo+ID4gPiA+ IE9uIFR1ZXNkYXksIEZlYnJ1YXJ5IDMsIDIwMTUsIFJpY2hhcmQgR3V5IEJyaWdncyA8cmdiQHJl ZGhhdC5jb20+IHdyb3RlOgo+ID4gPiA+IAo+ID4gPiA+ID4gT24gMTUvMDIvMDMsIFNhdGlzaCBD aGFuZHJhIEtpbGFydSB3cm90ZToKPiA+ID4gPiA+ID4gSG93IG1hbnkgZXZlbnRzIGNhbiBrZXJu ZWwgYWNjdW11bGF0ZSB3aXRob3V0IEkvbyA/Cj4gPiA+ID4gPgo+ID4gPiA+ID4gVGhlIGtlcm5l bCBkZWZhdWx0IGlzIDY0ICpidWZmZXJzKiwgYnV0IEkgdGhpbmsgRmVkb3JhIGFuZCBSSEVMIAo+ ID4gPiA+ID4gc2V0IGl0IHRvIDMyMC4gIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBzZXQgaXQgdG8g IjAiIHdoaWNoIG1lYW5zIAo+ID4gPiA+ID4gbGltaXRlZCBvbmx5IGJ5IHN5c3RlbSByZXNvdXJj ZXMuICBTZWUgIm1hbiBhdWRpdGN0bCIsICItYiIKPiA+ID4gPiA+IG9wdGlvbi4gIEFuIGV2ZW50 IGNhbiBiZSBtYWRlIHVwIG9mIHNldmVyYWwgYnVmZmVycy4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBP ZiBjb3Vyc2UsIGhvdyBsb25nIGEgc3lzdGVtIGxhc3RzIGJlZm9yZSB0aGUgcXVldWUgYmxvd3Mg dXAgCj4gPiA+ID4gPiBkZXBlbmRzIG9uIHlvdXIgcnVsZSBzZXQuLi4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBIb3dldmVyLCBhdCB0aGUgbW9tZW50LCBpdCB3aWxsIHN0aWxsIHdyaXRlIG91dCB0byBr bG9nIGlmIAo+ID4gPiA+ID4gYXVkaXRkIGlzbid0IHJ1bm5pbmcuCj4gPiA+ID4gPgo+ID4gPiA+ ID4gPiBPbiBUdWVzZGF5LCBGZWJydWFyeSAzLCAyMDE1LCBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQ IChNQ09VCj4gPiA+ID4gPiA+IE9TVEwpIDwgbG9nZXN3YXJpLnB2QGhwLmNvbSA8amF2YXNjcmlw dDo7Pj4gd3JvdGU6Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gSSBkb24ndCB3YW50IHRvIGRp c2FibGUgYXVkaXRpbmcgKGkuZS4gZGlzYWJsZSBhdWRpdCByZWNvcmQKPiA+ID4gPiA+IGNvbGxl Y3Rpb24pLAo+ID4gPiA+ID4gPiA+IGJ1dCBqdXN0IGRvIG5vdCB3YW50IHRoZSByZWNvcmRzIHRv IGRlbGl2ZXJlZCB0byB1c2VyIHNwYWNlIAo+ID4gPiA+ID4gPiA+IHNpbmNlIEkKPiA+ID4gPiA+ IHdhbnQgdG8KPiA+ID4gPiA+ID4gPiByZW1vdmUgdGhlIEkvTyBvdmVyaGVhZCB3aGlsZSBydW5u aW5nIHRoZSBwZXJmb3JtYW5jZSB0ZXN0Lgo+ID4gPiA+ID4gPiA+IElzIHRoZXJlIGFueSBvcHRp b24gZm9yIHRoaXM/Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQo+ID4gPiA+ID4gPiA+IEZyb206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFpbHRv OnJnYkByZWRoYXQuY29tIAo+ID4gPiA+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA8 amF2YXNjcmlwdDo7Pl0KPiA+ID4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgSmFudWFyeSAyOSwg MjAxNSAxMDoyMyBQTQo+ID4gPiA+ID4gPiA+IFRvOiBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChN Q09VIE9TVEwpCj4gPiA+ID4gPiA+ID4gQ2M6IFNhdGlzaCBDaGFuZHJhIEtpbGFydTsgU3RldmUg R3J1YmI7IAo+ID4gPiA+ID4gPiA+IGxpbnV4LWF1ZGl0QHJlZGhhdC5jb20KPiA+ID4gPiA+IDxq YXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+ID4gPGphdmFzY3JpcHQ6Oz4KPiA+ID4gPiA+ID4gPiBT dWJqZWN0OiBSZTogTGludXggYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0Cj4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiBPbiAxNS8wMS8yOSwgVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBP U1RMKSB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IFBsZWFzZSByZWFkIG15IHF1ZXN0aW9uIGFzIOKA nElzIHRoZXJlIGFueSBvcHRpb24gdG8gCj4gPiA+ID4gPiA+ID4gPiBjb25maWd1cmUga2F1ZGl0 IG5vdCB0byBsb2cgYXVkaXQgcmVjb3JkcyB0byBzeXNsb2c/IHdoZW4gYXVkaXRkIG5vdCBydW5u aW5nLuKAnQo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gWWVhaCwgcmVtb3ZlIGF1ZGl0PTEg ZnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZSwgb3Igc2V0Cj4gPiA+ID4gPiA+ID4gYXVkaXQ9 MCBpbgo+ID4gPiA+ID4gaXRzCj4gPiA+ID4gPiA+ID4gcGxhY2UuICBUaGlzIHdpbGwgc3RvcCBh bGwgYnV0IEFWQ3MgYW5kIGlmIGF1ZGl0ZCBoYXMgZXZlciAKPiA+ID4gPiA+ID4gPiBydW4gc2lu Y2UKPiA+ID4gPiA+IGJvb3QuCj4gPiA+ID4gPiA+ID4gSWYgYXVkaXQ9MCBpcyBvbiB0aGUga2Vy bmVsIGJvb3QgbGluZSwgaXQgd2lsbCBiZSBpbXBvc3NpYmxlIAo+ID4gPiA+ID4gPiA+IHRvIHJ1 bgo+ID4gPiA+ID4gYXVkaXRkLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gVGhlcmUgaXMg YSBmZWF0dXJlIHJlcXVlc3QgdGhhdCBpcyBsaWtlbHkgY29taW5nIHNvb24gdGhhdCAKPiA+ID4g PiA+ID4gPiBjb3VsZCBiZQo+ID4gPiA+ID4gPiA+IHVzZWZ1bDoKPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTE2 MDA0Ngo+ID4gPiA+ID4gPiA+ICJJZiBubyBhdWRpdCBkYWVtb24gaXMgcnVubmluZywgYnV0IGFu IGF1ZGl0IG11bHRpY2FzdCAKPiA+ID4gPiA+ID4gPiBzdWJzY3JpYmVyIGlzIGFyb3VuZCwgdGhl biB0aGUga2VybmVsIHNob3VsZG4ndCBmb3J3YXJkIGF1ZGl0IGRhdGEgdG8ga21zZyIKPiA+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gRnJvbTogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNP VSBPU1RMKQo+ID4gPiA+ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIEphbnVhcnkgMjksIDIwMTUg MTE6NDkgQU0KPiA+ID4gPiA+ID4gPiA+IFRvOiAnU2F0aXNoIENoYW5kcmEgS2lsYXJ1JzsgU3Rl dmUgR3J1YmIKPiA+ID4gPiA+ID4gPiA+IENjOiBsaW51eC1hdWRpdEByZWRoYXQuY29tIDxqYXZh c2NyaXB0Ojs+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSRTogTGlu dXggYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ ID4gSXMgdGhlcmUgYW55IG9wdGlvbiB0byBjb25maWd1cmUga2F1ZGl0IG5vdCB0byBsb2cgYXVk aXQgCj4gPiA+ID4gPiA+ID4gPiByZWNvcmRzIHRvCj4gPiA+ID4gPiA+ID4gc3lzbG9nIHdoZW4g YXVkaXRkIGlzIHJ1bm5pbmc/Cj4gPiA+ID4gPiA+ID4gPiBUaGlzIHdheSB3ZSBjYW4gYXNzZXNz IHRoZSBpbXBhY3Qgb2YgZW5hYmxpbmcgYXVkaXQgCj4gPiA+ID4gPiA+ID4gPiB3aXRob3V0IGlu dm9sdmluZwo+ID4gPiA+ID4gPiA+IGRpc2sgSS9vIG92ZXJoZWFkLgo+ID4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiA+IEZyb206IFNhdGlzaCBDaGFuZHJhIEtpbGFydSBbbWFpbHRvOmlhbS5r aWxhcnVAZ21haWwuY29tCj4gPiA+ID4gPiA8amF2YXNjcmlwdDo7PiA8amF2YXNjcmlwdDo7Pl0K PiA+ID4gPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBKYW51YXJ5IDI5LCAyMDE1IDk6MTIgQU0K PiA+ID4gPiA+ID4gPiA+IFRvOiBTdGV2ZSBHcnViYgo+ID4gPiA+ID4gPiA+ID4gQ2M6IGxpbnV4 LWF1ZGl0QHJlZGhhdC5jb20gPGphdmFzY3JpcHQ6Oz4gPGphdmFzY3JpcHQ6Oz48bWFpbHRvOgo+ ID4gPiA+ID4gbGludXgtYXVkaXRAcmVkaGF0LmNvbSA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4g PiA+IDxqYXZhc2NyaXB0Ojs+PjsgVmlzd2FuYXRoLAo+ID4gPiA+ID4gPiA+ID4gTG9nZXN3YXJp IFAgKE1DT1UgT1NUTCkKPiA+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBMaW51eCBhdWRpdCBw ZXJmb3JtYW5jZSBpbXBhY3QKPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBJIGFncmVl IHdpdGggeW91Li4uIGJ1dCB3cml0aW5nIHRvIGRpc2sgY2FuIHRyaWdnZXIgCj4gPiA+ID4gPiA+ ID4gPiBmdXJ0aGVyIGV2ZW50cwo+ID4gPiA+ID4gPiA+IGxlYWRpbmcgc3BpcmFsbGluZyBvZiBl dmVudHMuLi4KPiA+ID4gPiA+ID4gPiA+IEkgYnJvdWdodCBkb3duIG15IHNlcnZlciBmZXcgdGlt ZXMgd2l0aCBzdHVwaWQgcnVsZXMuLi4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBP biBXZWQsIEphbiAyOCwgMjAxNSBhdCAxMDozOSBQTSwgU3RldmUgR3J1YmIgCj4gPiA+ID4gPiA+ ID4gPiA8c2dydWJiQHJlZGhhdC5jb20KPiA+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4g PiA+ID4gPGphdmFzY3JpcHQ6Oz48bWFpbHRvOnNncnViYkByZWRoYXQuY29tIDxqYXZhc2NyaXB0 Ojs+Cj4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pj4+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gT24g V2VkbmVzZGF5LCBKYW51YXJ5IDI4LCAyMDE1IDEwOjE4OjQ3IEFNIFNhdGlzaCBDaGFuZHJhIAo+ ID4gPiA+ID4gPiA+ID4gS2lsYXJ1Cj4gPiA+ID4gPiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4g V3JpdGUgeW91ciBvd24gcHJvZ3JhbSB0byByZWNlaXZlIGF1ZGl0IGV2ZW50cyBkaXJlY3RseSAK PiA+ID4gPiA+ID4gPiA+ID4gd2l0aG91dCB1c2luZyBhdWRpdGQuLi4KPiA+ID4gPiA+ID4gPiA+ ID4gVGhhdCBzaG91bGQgYmUgZmFzdGVyIC4uLi4KPiA+ID4gPiA+ID4gPiA+ID4gQXVkaXRkIHdp bGwgbG9nIHRoZSBldmVudHMgdG8gZGlzayBjYXVzaW5nIG1vcmUgSS9vIHRoYW4gdSBuZWVkLi4u Cj4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gQnV0IGV2ZW4gdGhhdCBpcyBjb25maWd1 cmFibGUgaW4gbWFueSB3YXlzLiBZb3UgY2FuIGRlY2lkZSAKPiA+ID4gPiA+ID4gPiA+IGlmIHlv dQo+ID4gPiA+ID4gd2FudAo+ID4gPiA+ID4gPiA+ID4gbG9nZ2luZyB0byBkaXNrIG9yIG5vdCBh bmQgd2hhdCBraW5kIG9mIGFzc3VyYW5jZSB0aGF0IGl0IAo+ID4gPiA+ID4gPiA+ID4gbWFkZSBp dCB0byBkaXNrIGFuZCB0aGUgcHJpb3JpdHkgb2YgdGhhdCBhdWRpdCBkYWVtb24uCj4gPiA+ID4g PiA+ID4gPiBUaGVuIHlvdSBhbHNvIGhhdmUgYWxsCj4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4g PiA+IG5vcm1hbCB0dW5pbmcga25vYnMgZm9yIGRpc2sgdGhyb3VnaHB1dCB0aGF0IHlvdSB3b3Vs ZCB1c2UgCj4gPiA+ID4gPiA+ID4gPiBmb3IgYW55IGRpc2sgcGVyZm9ybWFuY2UgY3JpdGljYWwg c3lzdGVtLgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+IC1TdGV2ZQo+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gT24gV2VkbmVzZGF5LCBKYW51YXJ5IDI4LCAyMDE1LCBW aXN3YW5hdGgsIExvZ2Vzd2FyaSBQIAo+ID4gPiA+ID4gPiA+ID4gPiAoTUNPVQo+ID4gPiA+ID4g PiA+ID4gPiBPU1RMKQo+ID4gPiA+ID4gPAo+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ ID4gPiBsb2dlc3dhcmkucHZAaHAuY29tIDxqYXZhc2NyaXB0Ojs+IDxqYXZhc2NyaXB0Ojs+PG1h aWx0bzoKPiA+ID4gPiA+IGxvZ2Vzd2FyaS5wdkBocC5jb20gPGphdmFzY3JpcHQ6Oz4KPiA+ID4g PiA+ID4gPiA8amF2YXNjcmlwdDo7Pj4+IHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+ICBIaSBT dGV2ZSwKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IEkgYW0gTG9nZXN3 YXJpIHdvcmtpbmcgZm9yIEhQLgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IFdlIHdhbnQgdG8ga25v dyBhdWRpdCBwZXJmb3JtYW5jZSBpbXBhY3Qgb24gUkhFTCBhbmQgCj4gPiA+ID4gPiA+ID4gPiA+ ID4gU3VzZSBsaW51eAo+ID4gPiA+ID4gdG8KPiA+ID4gPiA+ID4gPiA+ID4gPiBoZWxwIHVzIGV2 YWx1YXRlIGxpbnV4IGF1ZGl0IGFzIGRhdGEgc291cmNlIGZvciBvdXIgCj4gPiA+ID4gPiA+ID4g PiA+ID4gaG9zdCBiYXNlZAo+ID4gPiA+ID4gSURTLgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ ID4gPiA+ID4gPiA+ID4gV2hlbiB3ZSByYW4gb3VyIG93biBwZXJmb3JtYW5jZSB0ZXN0IHdpdGgg YSB0ZXN0IAo+ID4gPiA+ID4gPiA+ID4gPiA+IGF1ZGlzcGQgcGx1Z2luLCB3ZSBmb3VuZCBpZiBh IHN5c3RlbSBjYW4gcGVyZm9ybQo+ID4gPiA+ID4gPiA+ID4gPiA+IDIwMDAwMCBvcGVuL2Nsb3Nl IHN5c3RlbSBjYWxscyBwZXIgc2Vjb25kIHdpdGhvdXQgCj4gPiA+ID4gPiA+ID4gPiA+ID4gYXVk aXRpbmcsIHN5c3RlbSBjYW4gcGVyZm9ybSBvbmx5IDMwMDAgb3Blbi9jbG9zZSAKPiA+ID4gPiA+ ID4gPiA+ID4gPiBzeXN0ZW0gY2FsbHMgYXVkaXRpbmcgaXMgZW5hYmxlZCBmb3Igb3Blbi9jbG9z ZSBzeXN0ZW0gCj4gPiA+ID4gPiA+ID4gPiA+ID4gY2FsbCB3aGljaCBpcyBhIEhVR0UgaW1wYWN0 IG9uIHRoZSBzeXN0ZW0gcGVyZm9ybWFuY2UuCj4gPiA+ID4gPiA+ID4gPiA+ID4gSXQgd291bGQK PiA+ID4gPiA+IGJlCj4gPiA+ID4gPiA+ID4gPiA+ID4gZ3JlYXQgaWYgYW55b25lIGNhbiBoZWxw IHVzIGFuc3dlcmluZyB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy4KPiA+ID4gPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ ID4gPiAxKSAgICAgIElzIHRoaXMgcGVyZm9ybWFuY2UgaW1wYWN0IGV4cGVjdGVkPyBJZiB5ZXMs IHdoYXQgaXMgdGhlCj4gPiA+ID4gPiA+ID4gcmVhc29uCj4gPiA+ID4gPiA+ID4gPiA+ID4gYmVo aW5kIGl0IGFuZCBjYW4gd2UgZml4IGl0Pwo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gMikgICAgICBIYXZlIGFueW9uZSBkb25lIGFueSBiZW5jaG1hcmtpbmcgZm9yIHBl cmZvcm1hbmNlCj4gPiA+ID4gPiBpbXBhY3Q/IElmCj4gPiA+ID4gPiA+ID4geWVzLAo+ID4gPiA+ ID4gPiA+ID4gPiA+IGNhbiB5b3UgcGxlYXNlIHNoYXJlIHRoZSBudW1iZXJzIGFuZCBhbHNvIHRo ZSAKPiA+ID4gPiA+ID4gPiA+ID4gPiBzdGVwcy9wcm9ncmFtcyB1c2VkIHRoZSBydW4gdGhlIHNh bWUuCj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiAzKSAgICAgIEhlbHAg dXMgdmFsaWRhdGluZyB0aGUgcGVyZm9ybWFuY2UgdGVzdCB3ZSBoYXZlIGRvbmUgaW4KPiA+ID4g PiA+IG91cgo+ID4gPiA+ID4gPiA+IHRlc3QKPiA+ID4gPiA+ID4gPiA+ID4gPiBzZXR1cCB1c2lu ZyB0aGUgc3RlcHMgbWVudGlvbmVkIGFsb25nIHdpdGggdGhlIHJlc3VsdHMgYXR0YWNoZWQuCj4g PiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQXR0YWNoZWQgdGVzdCBwcm9ncmFtIChsb2FkZXIuYykgdG8g aW52b2tlIG9wZW4gYW5kIAo+ID4gPiA+ID4gPiA+ID4gPiA+IGNsb3NlIHN5c3RlbQo+ID4gPiA+ ID4gPiA+IGNhbGxzLgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gQXR0 YWNoZWQgaWRza2VybmRzcCBpcyB0aGUgYXVkaXNwZCBwbHVnaW4gcHJvZ3JhbS4KPiA+ID4gPiA+ ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IFdlIHVzZWQgdGltZSBjb21tYW5kIHRvIGRl dGVybWluZSBob3cgbXVjaCB0aW1lIHRoZSAKPiA+ID4gPiA+ID4gPiA+ID4gPiBzeXN0ZW0gdG9v awo+ID4gPiA+ID4gdG8KPiA+ID4gPiA+ID4gPiA+ID4gPiBjb21wbGV0ZSA1MDAwMCBvcGVuL2Ns b3NlIHN5c3RlbSBjYWxscyB3aXRob3V0IAo+ID4gPiA+ID4gPiA+ID4gPiA+IChyZXN1bHRzIGF0 dGFjaGVkCj4gPiA+ID4gPiA+ID4gPiA+ID4gV2l0aG91dC1hdWRpdGluZykgYW5kIHdpdGggYXVk aXRpbmcgZW5hYmxlZCBvbiB0aGUgCj4gPiA+ID4gPiA+ID4gPiA+ID4gc3lzdGVtIChXaXRoLWF1 ZGl0aW5nLU5PTE9HLWF1ZGlzcGQtcGx1Z2luIGFuZAo+ID4gPiA+ID4gPiA+ID4gPiA+IFdpdGgt YXVkaXRpbmctUkFXKQo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IFN5c3RlbSBkZXRhaWxzOgo+ID4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiA+ID4gPiA+IDEgQ1BVIG1hY2hpbmUKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiAq T1MgVmVyc2lvbioKPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IFJIRUwg Ni41Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKktlcm5lbCBWZXJzaW9uKgo+ID4gPiA+ID4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4gdW5hbWUg4oCTcgo+ID4gPiA+ID4gPiA+ID4gPiA+ Cj4gPiA+ID4gPiA+ID4gPiA+ID4gMi42LjMyLTQzMS5lbDYueDg2XzY0Cj4gPiA+ID4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gTm90ZTogYXVkaXRkIHdhcyBvY2N1cHlpbmcgMzUlIG9mIENQVSBhbmQgd2FzIHNs ZWVwaW5nIAo+ID4gPiA+ID4gPiA+ID4gPiA+IGZvciBtb3N0Cj4gPiA+ID4gPiBvZgo+ID4gPiA+ ID4gPiA+ID4gPiA+IHRoZSB0aW1lIHdoZXJlYXMga2F1ZGl0ZCB3YXMgb2NjdXB5aW5nIDIwJSBv ZiB0aGUgQ1BVLgo+ID4gPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+ID4gPiA+IFRoYW5rcyAmIFJlZ2FyZHMsCj4gPiA+ ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+ID4gPiBMb2dlc3dhcmkuCj4gPiA+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiAtLQo+ ID4gPiA+ID4gPiA+ID4gUGxlYXNlIERvbmF0ZSB0bwo+ID4gPiA+ID4gPiA+ID4gd3d3Lndpa2lw ZWRpYS5vcmc8aHR0cDovL3d3dy53aWtpcGVkaWEub3JnPgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4g PiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+ID4gTGludXgtYXVkaXQgbWFpbGluZyBsaXN0Cj4gPiA+ ID4gPiA+ID4gPiBMaW51eC1hdWRpdEByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+IDxqYXZhc2Ny aXB0Ojs+IAo+ID4gPiA+ID4gPiA+ID4gaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWF1ZGl0Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4g PiA+IC0gUkdCCj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+IFJp Y2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+IAo+ID4g PiA+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+PiBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIsIEtlcm5l bCBTZWN1cml0eSwgCj4gPiA+ID4gPiA+ID4gQU1FUiBFTkcgQmFzZSBPcGVyYXRpbmcgU3lzdGVt cywgUmVkIEhhdCBSZW1vdGUsIE90dGF3YSwgCj4gPiA+ID4gPiA+ID4gQ2FuYWRhCj4gPiA+ID4g PiA+ID4gVm9pY2U6ICsxLjY0Ny43NzcuMjYzNSwgSW50ZXJuYWw6ICg4MSkgMzI2MzUsIEFsdDog Cj4gPiA+ID4gPiA+ID4gKzEuNjEzLjY5My4wNjg0eDM1NDUKPiA+ID4gPiA+ID4gPgo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiBQbGVhc2UgRG9uYXRl IHRvIHd3dy53aWtpcGVkaWEub3JnCj4gPiA+ID4gPgo+ID4gPiA+ID4gLSBSR0IKPiA+ID4gPiA+ Cj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gUmljaGFyZCBHdXkgQnJpZ2dzIDxyYnJpZ2dzQHJlZGhh dC5jb20gPGphdmFzY3JpcHQ6Oz4+IFNlbmlvciAKPiA+ID4gPiA+IFNvZnR3YXJlIEVuZ2luZWVy LCBLZXJuZWwgU2VjdXJpdHksIEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIAo+ID4gPiA+ID4gU3lz dGVtcywgUmVkIEhhdCBSZW1vdGUsIE90dGF3YSwgQ2FuYWRhCj4gPiA+ID4gPiBWb2ljZTogKzEu NjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAzMjYzNSwgQWx0OiAKPiA+ID4gPiA+ICsxLjYx My42OTMuMDY4NHgzNTQ1Cj4gPiA+ID4gPgo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IC0tCj4g PiA+ID4gUGxlYXNlIERvbmF0ZSB0byB3d3cud2lraXBlZGlhLm9yZwo+ID4gPiAKPiA+ID4gLSBS R0IKPiA+ID4gCj4gPiA+IC0tCj4gPiA+IFJpY2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRo YXQuY29tPiBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIsIAo+ID4gPiBLZXJuZWwgU2VjdXJpdHks IEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsIFJlZCBIYXQgUmVtb3RlLCAKPiA+ID4g T3R0YXdhLCBDYW5hZGEKPiA+ID4gVm9pY2U6ICsxLjY0Ny43NzcuMjYzNSwgSW50ZXJuYWw6ICg4 MSkgMzI2MzUsIEFsdDogCj4gPiA+ICsxLjYxMy42OTMuMDY4NHgzNTQ1Cj4gPiAKPiA+IC0gUkdC Cj4gPiAKPiA+IC0tCj4gPiBSaWNoYXJkIEd1eSBCcmlnZ3MgPHJicmlnZ3NAcmVkaGF0LmNvbT4g U2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCAKPiA+IEtlcm5lbCBTZWN1cml0eSwgQU1FUiBFTkcg QmFzZSBPcGVyYXRpbmcgU3lzdGVtcywgUmVkIEhhdCBSZW1vdGUsIAo+ID4gT3R0YXdhLCBDYW5h ZGEKPiA+IFZvaWNlOiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAoODEpIDMyNjM1LCBBbHQ6 IAo+ID4gKzEuNjEzLjY5My4wNjg0eDM1NDUKPiAKPiA+ICNpbmNsdWRlIDxzdGRpby5oPgo+ID4g I2luY2x1ZGUgPHN0ZGxpYi5oPgo+ID4gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gPiAjaW5jbHVk ZSA8ZmNudGwuaD4KPiA+ICNpbmNsdWRlIDx1bmlzdGQuaD4KPiA+ICNpbmNsdWRlIDxlcnJuby5o Pgo+ID4gCj4gPiB2b2lkIGNyZWF0ZV9sb2FkKGludCBpdGVycyk7Cj4gPiB2b2lkIGNsZWFudXAo KTsKPiA+IAo+ID4gaW50ICAgaGlnaF9yYXRlID0gMDsKPiA+IGludCAgIG51bV9pdGVycyA9IDEw MDAwMDsKPiA+IGludCAgIGZkMTsKPiA+IGNoYXIgIGZpbGUxWzUwXTsKPiA+IGNoYXIgIGZpbGUy WzUwXTsKPiA+IGNoYXIgIGRpcjFbNTBdOwo+ID4gY2hhciAgc3ltbGluazFbNTBdOwo+ID4gCj4g PiAvKiBQdXJwb3NlOiBUbyBjcmVhdGUgc3lzdGVtIGxvYWQgYnkgaW52b2tpbmcgc3lzdGVtIGNh bGxzIHVzZWQgYnkgdGVtcGxhdGVzLgo+ID4gICoKPiA+ICAqIE5vdGU6IFRoZSB1bmxpbmsoMikg b2YgYSBmaWxlIGNhbiBiZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIChpLmUuLCBldmVudCAKPiA+ ICAqICAgICAgIHJhdGUgZ29lcyB3YXkgZG93bikuCj4gPiAgKi8KPiA+IAo+ID4gbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpIHsKPiA+IAo+ID4gICBpbnQgICAgICAgICAgICAgIG51bV9jaGls ZHJlbj0xOwo+ID4gICBpbnQgICAgICAgICAgICAgIGl0ZXJzOwo+ID4gICBpbnQgICAgICAgICAg ICAgIGk7Cj4gPiAgIGNoYXIgICAgICAgICAgICAgYzsKPiA+IAo+ID4gICB3aGlsZSAoKGMgPSBn ZXRvcHQoYXJnYywgYXJndiwgImhpOiIpKSAhPSAtMSkgewo+ID4gICAgIHN3aXRjaCAoYykgewo+ ID4gICAgIGNhc2UgJ2gnOgo+ID4gICAgICAgLyoKPiA+ICAgICAgICAqIERlc2lyZSAiaGlnaCIg ZXZlbnQgcmF0ZQo+ID4gICAgICAgICovCj4gPiAgICAgICBoaWdoX3JhdGUgPSAxOwo+ID4gICAg ICAgYXJnYy0tOwo+ID4gICAgICAgYnJlYWs7Cj4gPiAgICAgY2FzZSAnaSc6Cj4gPiAgICAgICAv Kgo+ID4gICAgICAgICogRGVzaXJlIGEgc3BlY2lmaWVkIG51bWJlciBvZiBpdGVyYXRpb25zCj4g PiAgICAgICAgKi8KPiA+ICAgICAgIG51bV9pdGVycyA9IGF0b2kob3B0YXJnKTsKPiA+ICAgICAg IGFyZ2MtLTsKPiA+ICAgICAgIGJyZWFrOwo+ID4gICAgIGRlZmF1bHQ6Cj4gPiAgICAgICBmcHJp bnRmKHN0ZGVyciwiVW5rbm93biBvcHRpb246ICVjXG4iLG9wdGFyZyk7Cj4gPiAgICAgICBleGl0 KDEpOwo+ID4gICAgIH0KPiA+ICAgfQo+ID4gCj4gPiAKPiA+ICAgLyppZihhcmd2W29wdGluZF0g IT0gTlVMTCkgewo+ID4gICAgIG51bV9jaGlsZHJlbiA9IGF0b2koYXJndltvcHRpbmRdKTsKPiA+ ICAgfSBlbHNlIHsKPiA+ICAgICBudW1fY2hpbGRyZW4gPSAwOwo+ID4gICB9Cj4gPiAgIFJlZ2lz dGVyIGNsZWFudXAgcm91dGluZSAqLwo+ID4gICBmcHJpbnRmKHN0ZGVyciwiUmVnaXN0ZXJpbmcg Y2xlYW51cCByb3V0aW5lLi4uXG4iKTsKPiA+ICAgaWYgKGF0ZXhpdChjbGVhbnVwKSA9PSAtMSkg ewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJFcnJvciBjYWxsaW5nIGF0ZXhpdCgpLCBlcnJubz0l ZCglcylcbiIsCj4gPiAJICAgIGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgx KTsKPiA+ICAgfQo+ID4gICAgIAo+ID4gCj4gPiAgIC8qIGZvcmsgY2hpbGQgcHJvY2Vzc2VzLCBp ZiBhbnkgcmVxdWVzdGVkICovCj4gPiAgIGZvcihpPTE7IGkgPCBudW1fY2hpbGRyZW47IGkrKykg ewo+ID4gICAgIGlmKGZvcmsoKSA9PSAwKSB7Cj4gPiAKPiA+ICAgICAgIHByaW50ZigiY2hpbGQg cGlkOiAlZFxuIixnZXRwaWQoKSk7Cj4gPiAKPiA+ICAgICAgIC8qIFNldHVwIGZpbGUgbmFtZXMg YmFzZWQgb24gY2hpbGQncyBwaWQgKi8KPiA+ICAgICAgIHNwcmludGYoZmlsZTEsIi4vZmlsZTFf JWQiLGdldHBpZCgpKTsKPiA+ICAgICAgIHNwcmludGYoZmlsZTIsIi4vZmlsZTJfJWQiLGdldHBp ZCgpKTsKPiA+ICAgICAgIHNwcmludGYoZGlyMSwiLi9kaXIxXyVkIixnZXRwaWQoKSk7Cj4gPiAg ICAgICBzcHJpbnRmKHN5bWxpbmsxLCIuL2ZpbGUxc3ltbGlua18lZCIsZ2V0cGlkKCkpOwo+ID4g Cj4gPiAgICAgICAvKiBlYWNoIGNoaWxkIGNyZWF0ZXMgbG9hZCAqLwkKPiA+ICAgICAgIGl0ZXJz PTA7Cj4gPiAgICAgICBpZiAobnVtX2l0ZXJzID09IC0xKSB7Cj4gPiAJd2hpbGUoMSkgewo+ID4g CSAgY3JlYXRlX2xvYWQoaXRlcnMpOwo+ID4gCSAgaXRlcnMrKzsKPiA+IAkgIGlmKCAoaXRlcnMg JSAxMDAwKSA9PSAwKSB7Cj4gPiAJICAgIHByaW50ZigicGlkICVkIGl0ZXJhdGlvbiAlZFxuIixn ZXRwaWQoKSxpdGVycyk7Cj4gPiAJICB9Cj4gPiAJfQo+ID4gICAgICAgfSBlbHNlIHsKPiA+IAl3 aGlsZShpdGVycyA8IG51bV9pdGVycykgewo+ID4gCSAgY3JlYXRlX2xvYWQoaXRlcnMpOwo+ID4g CSAgaXRlcnMrKzsKPiA+IAkgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7Cj4gPiAJICAgIHBy aW50ZigicGlkICVkIGl0ZXJhdGlvbiAlZFxuIixnZXRwaWQoKSxpdGVycyk7Cj4gPiAJICB9Cj4g PiAJfQo+ID4gICAgICAgfQo+ID4gICAgIH0KPiA+ICAgfQo+ID4gCj4gPiAgIC8qIFBhcmVudCBj cmVhdGVzIGxvYWQgYWxzbyAqLwo+ID4gICBwcmludGYoInBhcmVudCBwaWQ6ICVkXG4iLGdldHBp ZCgpKTsKPiA+IAo+ID4gICAvKiBTZXR1cCBmaWxlIG5hbWVzIGJhc2VkIG9uIHBhcmVudCdzIHBp ZCAqLwo+ID4gICBzcHJpbnRmKGZpbGUxLCIuL2ZpbGUxXyVkIixnZXRwaWQoKSk7Cj4gPiAgIHNw cmludGYoZmlsZTIsIi4vZmlsZTJfJWQiLGdldHBpZCgpKTsKPiA+ICAgc3ByaW50ZihkaXIxLCIu L2RpcjFfJWQiLGdldHBpZCgpKTsKPiA+ICAgc3ByaW50ZihzeW1saW5rMSwiLi9maWxlMXN5bWxp bmtfJWQiLGdldHBpZCgpKTsKPiA+IAo+ID4gICBpdGVycz0wOwo+ID4gICBpZiAobnVtX2l0ZXJz ID09IC0xKSB7Cj4gPiAgICAgd2hpbGUoMSkgewo+ID4gICAgICAgY3JlYXRlX2xvYWQoaXRlcnMp Owo+ID4gICAgICAgaXRlcnMrKzsKPiA+ICAgICAgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7 Cj4gPiAJcHJpbnRmKCJwaWQgJWQgaXRlcmF0aW9uICVkXG4iLGdldHBpZCgpLGl0ZXJzKTsKPiA+ ICAgICAgIH0KPiA+ICAgICB9Cj4gPiAgIH0gZWxzZSB7Cj4gPiAgICAgd2hpbGUoaXRlcnMgPCBu dW1faXRlcnMpIHsKPiA+ICAgICAgIGNyZWF0ZV9sb2FkKGl0ZXJzKTsKPiA+ICAgICAgIGl0ZXJz Kys7Cj4gPiAgICAgICBpZiggKGl0ZXJzICUgMTAwMCkgPT0gMCkgewo+ID4gCXByaW50ZigicGlk ICVkIGl0ZXJhdGlvbiAlZFxuIixnZXRwaWQoKSxpdGVycyk7Cj4gPiAgICAgICB9Cj4gPiAgICAg fQo+ID4gICB9Cj4gPiAKPiA+IH0gLyogbWFpbiAqLwo+ID4gCj4gPiAKPiA+IHZvaWQgY3JlYXRl X2xvYWQoaW50IGl0ZXJzKSB7Cj4gPiAKPiA+ICAgaW50IHBpZDsKPiA+ICAgY2hhciAqYXJnc1sy XTsKPiA+ICAgc3RydWN0IHN0YXQgc3RhdF9idWY7Cj4gPiAKPiA+ICAgZmQxID0gY3JlYXQoZmls ZTEsMHg2NDQpOwo+ID4gICBpZiAoZmQxID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIs InBpZCAlZDogY3JlYXQoKSByZXR1cm5lZCBlcnJvciBmb3IgZmlsZSAlcywgZXJybm89JWQoJXMp XG4iLAo+ID4gCSAgICBnZXRwaWQoKSxmaWxlMSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4g ICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKGNsb3NlKGZkMSkgPT0gLTEpIHsKPiA+ICAg ICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBjbG9zZSgpIHJldHVybmVkIGVycm9yLCBlcnJubz0l ZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAg ICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gICBmZDEgPSBvcGVuKGZpbGUxLCBPX1JEV1IsIDA3Nzcp Owo+ID4gICBpZiAoZmQxID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDog b3BlbigpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgp LGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gCj4g PiAgIC8qIENob3duIHRoaXMgZmlsZSB0byByb290IGluc3RlYWQgb2YgdXNlciBpZHMgc28gdGhh dCB3ZSBkb24ndCBnZW5lcmF0ZSBhIAo+ID4gICAgKiBub24tb3duZWQgYWxlcnQgd2hlbiB0aGUg ZmlsZSBpcyB0cnVuY2F0ZWQgd2hlbiBpbnZva2luZyBjcmVhdCgpIGFnYWluCj4gPiAgICAqIGFz IHJvb3Qgb24gYW4gZXhpc3RpbmcgZmlsZSBvd25lZCBieSBhbm90aGVyIHVzZXIuCj4gPiAgICAq Lwo+ID4gICBpZiAoY2hvd24oZmlsZTEsMCwwKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3Rk ZXJyLCJwaWQgJWQ6IGNob3duKCVkLCVkKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4i LAo+ID4gCSAgICBnZXRwaWQoKSwwLDAsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBl eGl0KDEpOwo+ID4gICB9ICAgIAo+ID4gIAo+ID4gICBpZiAoZmNob3duKGZkMSwwLDApID09IC0x KSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogZmNob3duKCVkLCVkKSByZXR1cm5l ZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQoKSwwLDAsZXJybm8sc3Ry ZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9ICAgCj4gPiAgICAKPiA+ICAg aWYgKGNobW9kKGZpbGUxLCBTX0lSVVNSfFNfSVdVU1J8U19JUkdSUHxTX0lST1RIKSA9PSAtMSkg ewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGNobW9kKFNfSVJVU1J8U19JV1VTUnxT X0lSR1JQfFNfSVJPVEgpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAg IGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAg fSAgICAKPiA+ICAgaWYgKGZjaG1vZChmZDEsICAgU19JWFVTUnxTX0lYR1JQfFNfSVhPVEgpID09 IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogZmNobW9kKFNfSVhVU1J8U19J WEdSUHxTX0lYT1RIKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBn ZXRwaWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0K PiA+IAo+ID4gCj4gPiAgIGlmICh3cml0ZShmZDEsIlNvbWUgc3R1ZmYiLHN0cmxlbigiU29tZSBz dHVmZiIpKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHdyaXRlKCkg cmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZXJybm8s c3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAgIGlmIChmdHJ1 bmNhdGUoZmQxLDcpID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogZnRy dW5jYXRlKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlk KCksZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAg IGlmIChjbG9zZShmZDEpID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDog Y2xvc2UoKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQo KSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+IAo+ ID4gICBpZiAodHJ1bmNhdGUoZmlsZTEsMykgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVy ciwicGlkICVkOiB0cnVuY2F0ZSgpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4g PiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsK PiA+ICAgfQo+ID4gICBpZiAocmVuYW1lKGZpbGUxLGZpbGUyKSA9PSAtMSkgewo+ID4gICAgIGZw cmludGYoc3RkZXJyLCJwaWQgJWQ6IHJlbmFtZSglcywlcykgcmV0dXJuZWQgZXJyb3IsIGVycm5v PSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsZmlsZTIsZXJybm8sc3RyZXJyb3Io ZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAgIGlmIChyZW5hbWUoZmlsZTIs ZmlsZTEpID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogcmVuYW1lKCVz LCVzKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQoKSxm aWxlMixmaWxlMSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAg IH0KPiA+ICAgaWYgKGxpbmsoZmlsZTEsZmlsZTIpID09IC0xKSB7Cj4gPiAgICAgZnByaW50Zihz dGRlcnIsInBpZCAlZDogbGluayglcywlcykgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxu IiwKPiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsZmlsZTIsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsK PiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAgIGlmIChzeW1saW5rKGZpbGUxLHN5bWxpbmsx KSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHN5bWxpbmsoJXMsJXMp IHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGZpbGUx LHN5bWxpbmsxLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAg fQo+ID4gICBpZiAobGNob3duKHN5bWxpbmsxLDAsMCkgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRm KHN0ZGVyciwicGlkICVkOiBsY2hvd24oJXMsJWQsJWQpIHJldHVybmVkIGVycm9yLCBlcnJubz0l ZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLHN5bWxpbmsxLDAsMCxlcnJubyxzdHJlcnJvcihl cnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgCj4gPiAgIGlmIChsc3RhdChz eW1saW5rMSwmc3RhdF9idWYpID09IC0xKSB7Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAl ZDogbHN0YXQoJXMpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdl dHBpZCgpLHN5bWxpbmsxLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsK PiA+ICAgfQo+ID4gICBpZiAoc3RhdChmaWxlMSwmc3RhdF9idWYpID09IC0xKSB7Cj4gPiAgICAg ZnByaW50ZihzdGRlcnIsInBpZCAlZDogc3RhdCglcykgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVk KCVzKVxuIiwKPiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsK PiA+ICAgICBleGl0KDEpOwo+ID4gICB9Cj4gPiAgIGlmICh1bmxpbmsoZmlsZTEpID09IC0xKSB7 Cj4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogdW5saW5rKCVzKSByZXR1cm5lZCBlcnJv ciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICBnZXRwaWQoKSxmaWxlMSxlcnJubyxzdHJlcnJv cihlcnJubykpOwo+ID4gICAgIGV4aXQoMSk7Cj4gPiAgIH0KPiA+ICAgaWYgKHVubGluayhmaWxl MikgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB1bmxpbmsoJXMpIHJl dHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGZpbGUyLGVy cm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gICBpZiAo dW5saW5rKHN5bWxpbmsxKSA9PSAtMSkgewo+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6 IHVubGluayglcykgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+IAkgICAgZ2V0 cGlkKCksc3ltbGluazEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ICAgICBleGl0KDEpOwo+ ID4gICB9Cj4gPiAgIGlmIChta2RpcihkaXIxLFNfSVJVU1J8U19JV1VTUnxTX0lYVVNSfFNfSVJH UlB8U19JWEdSUCkgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBta2Rp cigpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGVy cm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gICBpZiAo cm1kaXIoZGlyMSkgPT0gLTEpIHsKPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBybWRp cigpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgIGdldHBpZCgpLGVy cm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgZXhpdCgxKTsKPiA+ICAgfQo+ID4gCj4gPiAg IC8qIEZvcmsgZXZlcnkgMTAwMDAgaXRlcmF0aW9ucyB0byBub3QgdXNlIHVwIHByb2Nlc3MgcmVz b3VyY2VzIHRvbyBxdWlja2x5ICovCj4gPiAgIGlmICggKGl0ZXJzICUgMTAwMDApID09IDApIHsK PiA+ICAgICBwaWQgPSBmb3JrKCk7Cj4gPiAgICAgaWYocGlkID09IDApIHsKPiA+ICAgICAgIGZw cmludGYoc3RkZXJyLCJjaGlsZCBwaWQgJWQ6IGZvcmshXG4iLGdldHBpZCgpKTsKPiA+ICAgICAg IC8vIGNoaWxkCj4gPiAgICAgICBhcmdzWzBdID0gIi9iaW4vbHMiOwo+ID4gICAgICAgYXJnc1sx XSA9IE5VTEw7Cj4gPiAgICAgICBjbG9zZSgxKTsKPiA+ICAgICAgIGNsb3NlKDIpOyAgICAKPiA+ ICAgICAgIGV4ZWN2ZShhcmdzWzBdLCBhcmdzLCBOVUxMKTsKPiA+ICAgICAgIGZwcmludGYoc3Rk ZXJyLCJwaWQgJWQ6IGV4ZWN2ZSglcykgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwK PiA+IAkgICAgICBnZXRwaWQoKSxhcmdzWzBdLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAg ICAgICBfZXhpdCgxKTsKPiA+ICAgICB9IGVsc2UgaWYgKHBpZCA8IDApIHsgCj4gPiAgICAgICBm cHJpbnRmKHN0ZGVyciwicGlkICVkOiBmb3JrKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVz KVxuIiwKPiA+IAkgICAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAg ICAgZXhpdCgxKTsKPiA+ICAgICB9IGVsc2Ugewo+ID4gICAgICAgZnByaW50ZihzdGRlcnIsInBh cmVudCBwaWQgJWQsIGNoaWxkIHBpZDogJWQ6IGZvcmshXG4iLGdldHBpZCgpLHBpZCk7Cj4gPiAg ICAgfQo+ID4gCj4gPiAgICAgcGlkID0gdmZvcmsoKTsKPiA+ICAgICBpZihwaWQgPT0gMCkgewo+ ID4gICAgICAgYXJnc1swXSA9ICIvYmluL3B3ZCI7Cj4gPiAgICAgICBhcmdzWzFdID0gTlVMTDsK PiA+ICAgICAgIGNsb3NlKDEpOwo+ID4gICAgICAgY2xvc2UoMik7ICAgIAo+ID4gICAgICAgZXhl Y3YoYXJnc1swXSwgYXJncyk7Cj4gPiAgICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBleGVj dmUoJXMpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiAJICAgICAgZ2V0cGlk KCksYXJnc1swXSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gICAgICAgX2V4aXQoMSk7Cj4g PiAgICAgfSBlbHNlIGlmIChwaWQgPCAwKSB7IAo+ID4gICAgICAgZnByaW50ZihzdGRlcnIsInBp ZCAlZDogdmZvcmsoKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4gCSAgICAg IGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiAgICAgICBleGl0KDEpOwo+ID4g ICAgIH0KPiA+ICAgfQo+ID4gCj4gPiAgIC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFu ZWQgdXAgYW5kIGRlbGV0ZWQgYmVmb3JlIHJldHVybmluZyAqLwo+ID4gICBjbGVhbnVwKCk7Cj4g PiAKPiA+IH0gLyogY3JlYXRlX2xvYWQoKSAqLwo+ID4gCj4gPiB2b2lkIGNsZWFudXAoKSB7Cj4g PiAgIGNsb3NlKGZkMSk7Cj4gPiAgIHVubGluayhmaWxlMSk7Cj4gPiAgIHVubGluayhmaWxlMik7 Cj4gPiAgIHVubGluayhzeW1saW5rMSk7Cj4gPiAgIHVubGluayhkaXIxKTsKPiA+ICAgcmV0dXJu Owo+ID4gfQo+IAo+ID4gLS0KPiA+IExpbnV4LWF1ZGl0IG1haWxpbmcgbGlzdAo+ID4gTGludXgt YXVkaXRAcmVkaGF0LmNvbQo+ID4gaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWF1ZGl0Cj4gCj4gCj4gLSBSR0IKPiAKPiAtLQo+IFJpY2hhcmQgR3V5IEJyaWdn cyA8cmJyaWdnc0ByZWRoYXQuY29tPgo+IFNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciwgS2VybmVs IFNlY3VyaXR5LCBBTUVSIEVORyBCYXNlIE9wZXJhdGluZyBTeXN0ZW1zLCBSZWQgSGF0IFJlbW90 ZSwgT3R0YXdhLCBDYW5hZGEKPiBWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgx KSAzMjYzNSwgQWx0OiArMS42MTMuNjkzLjA2ODR4MzU0NQo+IAo+IC0tCj4gTGludXgtYXVkaXQg bWFpbGluZyBsaXN0Cj4gTGludXgtYXVkaXRAcmVkaGF0LmNvbQo+IGh0dHBzOi8vd3d3LnJlZGhh dC5jb20vbWFpbG1hbi9saXN0aW5mby9saW51eC1hdWRpdAoKLSBSR0IKCi0tClJpY2hhcmQgR3V5 IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tPgpTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIsIEtl cm5lbCBTZWN1cml0eSwgQU1FUiBFTkcgQmFzZSBPcGVyYXRpbmcgU3lzdGVtcywgUmVkIEhhdApS ZW1vdGUsIE90dGF3YSwgQ2FuYWRhClZvaWNlOiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAo ODEpIDMyNjM1LCBBbHQ6ICsxLjYxMy42OTMuMDY4NHgzNTQ1CgotLQpMaW51eC1hdWRpdCBtYWls aW5nIGxpc3QKTGludXgtYXVkaXRAcmVkaGF0LmNvbQpodHRwczovL3d3dy5yZWRoYXQuY29tL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXVkaXQ=