T24gMjMgSnVuZSAyMDE2IGF0IDIyOjMxLCBCcmVudCBCcm93biA8YnJlbnQuYnJvd25AY2xlYXIu bmV0Lm56PiB3cm90ZToKCj4gT24gMjMgSnVuIDIwMTYgYXQgMTk6NTYsIFJ1c3NlbGxNYyB3cm90 ZToKPiA+IEUmT0UuCj4gPiBObyBndWFyYW50ZWUgdGhhdCB0aGlzIGlzIGZ1bGx5IGNvcnJlY3Qu Cj4gPiBBcyBpdCBpbiBwYXJ0IE1BWSBkaXNhZ3JlZSBpbiBzb21lIGRlZ3JlZSB3aXRoIEJyZW50 IGl0J3MgcHJvYmFibHkgaW4KPiBzb21lCj4gPiBkZWdyZWUgd3JvbmcgKHByb2JhYmx5IGZvciBi b3RoICBjb3JyZWxhdGVkIGFuZCBub24gY29ycmVsYXRlZCB2ZXJzaW9ucwo+IG9mCj4gPiBzb21l KQo+ID4gKiBJIGNoYW5nZWQgZGlzYWdyZWVzJyB0byAnbWF5IGRpc2FncmVlJyAgYXMgSSdtIHRh bGtpbmcgYWJvdXQgViBhbmQgaGUKPiBtYXkKPiA+IGhhdmUgYmVlbiB0YWxraW5nIGFib3V0IEku Cj4gPiBXZSBhcHBlYXIgdG8gc3RpbGwgbm90IGJlIGluIGZ1bGwgYWdyZWVtZW50LiAgZWcgSSBz YXkgbWF4IHBvd2VyIGF0IFYgKy8tCj4gPiA5MCBsZWFkL2xhZyBvZiBWZ3JpZC4gLgo+Cj4gSSBk b24ndCBrbm93IGlmIHdlIGFncmVlIG9yIGRpc2FncmVlIHlldC4uLiBtb3JlIGxpa2VseSBteSBk ZWdyZWUgb2YKPiB3cm9uZ25lc3MgaXMKPiBqdXN0IHdhaXRpbmcgZm9yIG1lIHRvIGdyYXNwIGl0 IDotKQo+Cj4gSSB3YXMgdHJ5aW5nIHRvIGltYWdpbmUgKGFuZCBub3QgZXhwbGFpbmluZyB3ZWxs KSBjdXJyZW50IGFzIHNlZW4gYnkgYW4KPiBpbXBvcnQvZXhwb3J0Cj4gcG93ZXIgbWV0ZXIgKGdy aWQgY29ubmVjdGlvbiBwb2ludCkuIFNheSB0aGVyZSBpcyBubyBQViBnZW5lcmF0aW9uLCB0aGUK PiBtZXRlcgo+IHdvdWxkIHNlZSBpbXBvcnRlZCBwb3dlciBhY2NvcmRpbmcgdG8gd2hhdGV2ZXIg bG9hZCBpcyBwcmVzZW50LCB0aGF0IGlzLAo+IGN1cnJlbnQgaW4KPiBwaGFzZSB3aXRoIHZvbHRh Z2UgYXNzdW1pbmcgYSByZXNpc3RpdmUgbG9hZC4gUmlnaHQgc28gZmFyPwoKCkkgdGhpbmsgdGhh dCB0aGF0J3MgdGhlIGFyZWEgb2YgZGVwYXJ0dXJlLgpHcmlkIGltcGVkYW5jZSBhbmQgZWZmZWN0 aXZlIHJlc2lzdGFuY2UgYXJlIHZlcnkgbG93LiDigIsKVGhlIGFiaWxpdHkgb2Ygc2F5IGEgNSBr VyAobGFyZ2UgYnkgZG9tZXN0aWMgc3RhbmRhcmRzKSB0byBhbHRlciB0aGUgbWFpbnMKdm9sdGFn ZSBzdWJzdGFudGlhbGx5IGlzICJzbWFsbCIuCkxldHMgc2VlLiA1IGtXIGF0IDIzMCBWLiBSZWZm ZWN0aXZlIGludmVydGVyIG91dCA9IDIzMF4yLzUwMDAgPSAxMC42IE9obXMsCm9yIH49IDUzL2tX IE9obXMuCkkgPSBQL1YgPX4gMjJBIG9yIH49IDQuM0Eva1cuCk1haW5zIGltcGVkYW5jZSBhbmQg ZmVlZCByZXNpc3RhbmNlIGFyZSB3ZWxsIGRvd24gb24gdGhhdC4KVGhlIGxhcmdlc3QgY29tcG9u ZW50IG1heSB3ZWxsIGJlIHRoZSBzdWJzY3JpYmVycyBmZWVkIGluIGxlYWQsIGFuZCBpdApwcm9i YWJseSBkb2VzIG5vdCBoZWxwIHN0YWJpbGl0eSBpZiB5b3UgdXNlIHRoZSBpbXBlZGFuY2Ugb2Yg eW91ciBmZWVkIGluCmNhYmxlIGFzIHlvdXIgY3VycmVudCBjb250cm9sIGltcGVkYW5jZS4KClNv IHRoZXkgaGF2ZSBhbiBlZmZlY3RpdmUgaW5kdWN0YW5jZSBpbiB0aGUgc3lzdGVtIHRoYXQgc3dh bXBzIHRoZQpyZXNpc3RhbmNlIG9mIHRoZSBncmlkLiBTbyBmb3IgcHVyZSBub24gcmVhY3RpdmUg bG9hZCB0aGUgaW52ZXJ0ZXIgaXMKZHJpdmluZyBhbiBpbmR1Y3Rvci4gQWdoIDotKS4KCkdpdmlu ZyB0aGVpciBmb3JtdWxhIFAgPSBWMSB4IFYyIC8gWGwgeCBzaW4oZGVsdGEpLgpUaGUgdm9sdGFn ZSBkaWZmZXJlbnRpYWwgZHJpdmVzIHRoZSBjdXJyZW50IHRocm91Z2ggdGhlIGluZHVjdG9yIGFu ZCB0aGUKZGVsdGEgYW5nbGUgYWZmZWN0cyBib3RoIG1hZ25pdHVkZSBvZiBjdXJyZW50IGFuZCBo b3cgbXVjaCBlbmRzIHVwIGFzCidyZWFjdGl2ZSBwb3dlcicgKFZBKS4KClRvIGdvIGZyb20gaW1w b3J0IHRvIGV4cG9ydCB5b3UgY2hhbmdlIHBoYXNlIGJ5IDE4MCBkZWdyZWVzIGFzIHlvdSBzYWlk LgpCdXQgeW91IHN0YXJ0IGF0IGEgZGlmZmVyZW50IHBoYXNlIGFuZ2xlIGR1ZSB0byB0aGUgcmVz aXN0aXZlIGxvYWQgYmVpbmcKbWFkZSB0byBsb29rIG1haW5seSBpbmR1Y3RpdmUgYnkgdGhlIHN5 c3RlbS4KU28gd2UgcHJvYmFibHkgbW9yZSBvciBsZXNzIGFncmVlLgoKSSBoYWQgY2FyZWZ1bGx5 IGF2b2lkZWQgZ2V0dGluZyB0byBjbG9zZSB0byB0aGUgcGhhc2Ugb2YgdGhlIGludmVydGVyCnJl bGF0aXZlIHRvIGdyaWQgZHVyaW5nIGVnIGV4cG9ydCBidXQgYWZ0ZXIgd3JpdGluZyB0aGUgYWJv dmUsIGZvciBhCnJlc2lzdGl2ZSBncmlkIGxvYWQgd2hpY2ggYXBwZWFycyBhcyBhbiBpbmR1Y3Rp dmUgcmVhY3RhbmNlIHRoZSBjdXJyZW50CnNob3VsZCBsZWFkIHRoZSB2b2x0YWdlIHNvIHRoYXQg c2VlbXMgdG8gbWVhbiB0aGF0IGludmVydGVyIFYgcGhhc2UgbGFncwptYWlucyBWIHBoYXNlIGZv ciBleHBvcnQuIFdoaWNoIG1lc3NlcyB3aXRoIG15IGhlYWQgc28gZmFyLiAoQWJvdXQgdXN1YWwK Oi0pICkuCgpPdmVyYWxsIGl0J3Mgbm90IHZlcnkgY29tcGxleCAocHVuIG5vdGVkIGVuIHBhc3Nh bnQpLCBqdXN0IGFubm95aW5nLgoKU29tZSBvciBhbGwgb2YgdGhlIGFib3ZlIG1heSBiZSB3cm9u ZyA6LSkuCgoKICAgICAgICAgUnVzc2VsbAoKCgoKCgoKCgoKCj4gVGhlbiBsZXQncyBzYXkgUFYK PiBnZW5lcmF0aW9uIGtpY2tzIGluIGFuZCBleGNlZWRzIGxvYWQgb3IgbG9hZCBpcyBkaXNjb25u ZWN0ZWQsIG1ldGVyIHNlZXMKPiBleHBvcnRlZAo+IHBvd2VyLiBBc3N1bWluZyB1bml0eSBwb3dl ciBmYWN0b3IgKGJhZCBhc3N1bXB0aW9uPykgd291bGQgSSBiZSBjb3JyZWN0IGluCj4gc2F5aW5n Cj4gdGhlIGN1cnJlbnQgaXMgbm93IGZsaXBwZWQsIGVnLiAxODAgZGVncmVlcyBvdXQgb2YgcGhh c2Ugd2l0aCB0aGUgdm9sdGFnZT8KPiBJZiBub3QsCj4gdGhlbiBob3cgZG9lcyBhbiBpbXBvcnQv ZXhwb3J0IG1ldGVyIGRldGVybWluZSBkaXJlY3Rpb24gb2YgcG93ZXIgZmxvdz8KPgo+ID4gQSBz aW1wbGlzdGljIGJ1dCB1c2VmdWwgbG9vayBhdCBwb3dlciB0cmFuc2ZlciBpcyBnaXZlbiBieToK PiA+Cj4gPiBWMSA9IGludmVydGVydm9sdGFnZQo+ID4gVjIgPSBncmlkIHZvbHRhZ2UKPiA+IFgx MiBvciBqdXN0IFggaXMgY291cGxpbmcgaW1wZWRhbmNlIGJldHdlZW4gaW52ZXJ0ZXIgYW5kIGdy aWQuIFRoaXMKPiB1c3VhbGx5Cj4gPiBpbmNsdWRlcyBhIHBoeXNpY2FsIGluZHVjdG9yIG9yIHN1 c3RlbSBpbmR1Y3RhbmNlLgo+ID4gRGVsdGEgPSBkIGlzIHBoYXNlIGFuZ2xlIGJldHdlZW4gaW52 ZXJ0ZXIgYW5kIGdyaWQuCj4gPiBzaW5kID0gc2luKGQpICwgY29kID0gY29zKGQpCj4gPgo+ID4g UmVhbCBwb3dlciB0cmFuc2ZlciA9IFZeMi9YID0gKFYxIHggVjIpL1ggeCBzaW5kCj4gPiBTbyBt YXkgdHJhbnNmZXIgb2NjdXJzIGF0IGQgPSA5MCBkZWdyZWVzLgo+ID4gVjEgbGVhZGluZyBWMiBn aXZlcyBtYXggcmVhbCBwb3dlcmV4cG9ydC4KPiA+IFYxIGxhZ2dpbmcgVjIgZ2l2ZXMgbWF4IHJl YWwgcG93ZXIgaW1wb3J0Lgo+ID4gUG93ZXIgaXMgYWxzbyBjb250cm9sbGFibGUgYnkgdmFyeWlu ZyBWMS4KPiA+IFtNdXJwaHkgc3VnZ2VzdHMgdGhhdCBnZXR0aW5nIFYxIGxlYWRpbmcgVjIgbWF5 IHJlcXVpcmUgVjEgPiBWMiBidXQKPiB0aGF0J3MKPiA+IGEgdGVjaG5pY2FsaXR5XS4KPiA+Cj4g PiBJbWFnaW5hcnkgcG93ZXIgdHJhbnNmZXIgPSBWMV4yL1ggLSAoVjEgeCBWMikvWCB4IGNvc2QK PiA+Cj4gPiBBcyBjb3NkID0gbWF4ID0gMSB3aGVuIHNpbmQgPSAwIGFuZCBkPTAsIHB1ciAgcmVh Y3RpdmUgcG93ZXIgbWF4IG9jY3Vycwo+ID4gd2hlbiBWMSBhbmQgVjIgYXJlIGluIHBoYXNlIEJV VCBpZiBWMSA9IFYyIHlvdSB0aGVuIGdldCB6ZXJvIHJlYWN0aXZlCj4gPiBwb3dlci4gQnkgdGhl biBhbHRlcmluZyBWMSByZWxhdGl2ZSB0byBWMiB5b3UgZ2VuZXJhdGUgbmVnYXRpdmUgb3IKPiBw b3NpdGl2ZQo+ID4gcmVhY3RpdmUgY3VycmVudCBpbiBYIGFuZCB0aHVzIG92ZXJhbGwgcmVhY3Rp dmUgcG93ZXIuCj4KPiBBaCwgbWF0aHMuIEkgd2lsbCBoYXZlIHRvIHRoaW5rIG9uIGl0IGEgYml0 IG1vcmUuIEl0J3MgbW9yZSBsb29raW5nIGZyb20KPiB0aGUgdmlld3BvaW50Cj4gb2YgdGhlIGlu dmVydGVyLCB3aGljaCBJJ2xsIGJlIGhhcHB5IHdpdGggaWYgSSBjYW4gY29ycmVsYXRlIGl0IHdp dGggd2hhdAo+IHRoZSBtZXRlciBzZWVzLgo+Cj4gVGhhbmtzIGZvciB0aGUgbGlua3MgdG9vLCBy ZWFkaW5nLi4uCj4KPgo+Cj4gLS0KPiBodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGlj bGlzdCBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlCj4gVmlldy9jaGFuZ2UgeW91ciBtZW1iZXJz aGlwIG9wdGlvbnMgYXQKPiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8v cGljbGlzdAo+Ci0tIApodHRwOi8vd3d3LnBpY2xpc3QuY29tL3RlY2hyZWYvcGljbGlzdCBQSUMv U1ggRkFRICYgbGlzdCBhcmNoaXZlClZpZXcvY2hhbmdlIHlvdXIgbWVtYmVyc2hpcCBvcHRpb25z IGF0Cmh0dHA6Ly9tYWlsbWFuLm1pdC5lZHUvbWFpbG1hbi9saXN0aW5mby9waWNsaXN0Cg== .