dHJlZSAzY2U3MTJmODk5Y2FjYTJjMTA2ZDY1ZTU0MDRiMTQ0NTMxYWM4MjUzCnBhcmVudCAyMmY4MmY4MWU1MjJmZDZiYTJjZDA1MTJmZTRkN2VkNzJiNDllZGRlCmF1dGhvciBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4gMTY3MDMyMzA5OCArMDEwMApjb21taXR0ZXIgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+IDE2NzAzMzI0ODEgKzAxMDAKZW5jb2RpbmcgbGF0aW4xCgpCVUcvTUVESVVNOiBjaGVja3M6IGRvIG5vdCByZXNjaGVkdWxlIGEgcG9zc2libHkgcnVubmluZyB0YXNrIG9uIHN0YXRlIGNoYW5nZQoKQXVy6WxpZW4gZm91bmQgYW4gaXNzdWUgaW50cm9kdWNlZCBpbiAyLjctZGV2OCB3aXRoIGNvbW1pdCBkMTE0ZjRhNjgKKCJNRURJVU06IGNoZWNrczogc3ByZWFkIHRoZSBjaGVja3MgbG9hZCBvdmVyIHJhbmRvbSB0aHJlYWRzIiksIGJ1dCB3aGljaAppbiBmYWN0IGhhcyBkZWVwZXIgcm9vdHMuCgpXaGVuIGEgc2VydmVyJ3Mgc3RhdGUgaXMgY2hhbmdlZCB2aWEgX19oZWFsdGhfYWRqdXN0KCksIGlmIGEgZmFzdGludGVyCnNldHRpbmcgaXMgc2V0LCB0aGUgdGFzayBnZXRzIHJlc2NoZWR1bGVkIHRvIHJ1biBhdCB0aGUgbmV3IGRhdGUuIFRoZQp3YXkgaXQncyBkb25lIGlzIG5vdCB0aHJlYWQgc2FmZSwgYXMgbm90aGluZyBwcmV2ZW50cyBhbm90aGVyIHRocmVhZAp3aGVyZSB0aGUgdGFzayBpcyBhbHJlYWR5IHJ1bm5pbmcgZnJvbSBhbHNvIHVwZGF0aW5nIHRoZSBleHBpcmUgZmllbGQKaW4gcGFyYWxsZWwuIEJ1dCBzaW5jZSBzdWNoIGV2ZW50cyBhcmUgcXVpdGUgcmFyZSwgdGhpcyBzdGF0aXN0aWNhbGx5Cm5ldmVyIGhhcHBlbnMuIEhvd2V2ZXIsIHdpdGggdGhlIGNvbW1pdCBhYm92ZSwgdGhlIHRhc2tzIGFyZSBubyBsb25nZXIKcmVxdWlyZWQgdG8gZ28gdG8gdGhlIHNoYXJlZCB3YWl0IHF1ZXVlIGFuZCBhcmUgbm8gbG9uZ2VyIG1hcmtlZCBhcwpzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSB0aHJlYWRzLiBJdCdzIGp1c3QgdGhhdCAqYW55KiB0aHJlYWQgbWF5IHJ1bgp0aGVtIGF0IGEgdGltZSB3aXRob3V0IGltcGx5aW5nIHRoYXQgYWxsIG9mIHRoZW0gYXJlIGFsbG93ZWQgdG8gbW9kaWZ5CnRoZW0uIEFuZCB0aGlzIGNoYW5nZSBpcyBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhlIEJVR19PTigpIGNvbmRpdGlvbgppbiB0aGUgc2NoZWR1bGVyIHRoYXQgZGV0ZWN0cyB0aGUgaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIGEgdGFzayBxdWV1ZWQKaW4gb25lIHRocmVhZCBhbmQgYmVpbmcgbWFuaXB1bGF0ZWQgaW4gcGFyYWxsZWwgYnkgYW5vdGhlciBvbmU6CgogIEZBVEFMOiBidWcgY29uZGl0aW9uICJ0YXNrLT50aWQgIT0gdGlkIiBtYXRjaGVkIGF0CiAgaW5jbHVkZS9oYXByb3h5L3Rhc2suaDo2NzAKICAgIGNhbGwgdHJhY2UoMTMpOgogICAgfCAweDU1ZjYxY2Y1MjBjOSBbYzYgMDQgMjUgMDEgMDAgMDAgMDAgMDBdOiBtYWluLTB4MmVlNwogICAgfCAweDU1ZjYxZDA2NDZlOCBbOGIgNDUgMDggYTggNDAgMGYgODUgNjVdOiBiYWNrX2hhbmRsZV9zdF9jZXIrMHg3OC8weDRkNwogICAgfCAweDU1ZjYxY2ZmM2U3MiBbNDEgMGYgYjYgNGYgMDEgZTkgYzggZGZdOiBwcm9jZXNzX3N0cmVhbSsweDIyNTIvMHgzNjRmCiAgICB8IDB4NTVmNjFkMGQyZmFiIFs0OCA4OSBjMyA0OCA4NSBkYiA3NCA3NV06IHJ1bl90YXNrc19mcm9tX2xpc3RzKzB4MzRiLzB4OGM0CiAgICB8IDB4NTVmNjFkMGQzOGFkIFsyOSA0NCAyNCAxOCA4YiA1NCAyNCAxOF06IHByb2Nlc3NfcnVubmFibGVfdGFza3MrMHgzN2QvMHg2YzYKICAgIHwgMHg1NWY2MWQwYTIyZmEgWzgzIDNkIDBiIDYzIDFlIDAwIDAxIDBmXTogcnVuX3BvbGxfbG9vcCsweDEzYS8weDUzNgogICAgfCAweDU1ZjYxZDBhMjhjOSBbNDggOGIgMWQgZjAgNDYgMTkgMDAgNDhdOiBtYWluKzB4MTRkOTE5CiAgICB8IDB4NTVmNjFjZjU2ZGZlIFszMSBjMCBlOCBlYiA5MyAxYiAwMCAzMV06IG1haW4rMHgxZTRlLzB4MmQ1ZAoKQXQgZmlyc3QgZ2xhbmNlIGl0IGxvb2tlZCBsaWtlIGl0IGNvdWxkIGJlIGFkZHJlc3NlZCBpbiB0aGUgc2NoZWR1bGVyCm9ubHksIGJ1dCBpbiBmYWN0IHRoZSBwcm9ibGVtIGNsZWFybHkgaXMgYXQgdGhlIGFwcGxpY2F0aW9uIGxldmVsLCBzaW5jZQpzb21lIHNoYXJlZCBmaWVsZHMgYXJlIG1hbmlwdWxhdGVkIHdpdGhvdXQgcHJvdGVjdGlvbi4gQXQgbWluaW1hLCB0aGUKdGFzaydzIGV4cGlyeSBvdWdodCB0byBiZSB0b3VjaGVkIG9ubHkgdW5kZXIgdGhlIHNlcnZlcidzIGxvY2suIFdoaWxlCml0J3MgYXJndWFibGUgdGhhdCB0aGUgc2NoZWR1bGVyIGNvdWxkIG1ha2Ugc3VjaCB1cGRhdGVzIGVhc2llciwgY2hhbmdpbmcKaXQgYWxvbmUgd2lsbCBub3QgYmUgc3VmZmljaWVudCBoZXJlLgoKTG9va2luZyBhdCB0aGUgc2VxdWVuY2luZyBjbG9zZXIsIGl0IGJlY29tZXMgb2J2aW91cyB0aGF0IHdlIGRvIG5vdCBuZWVkCnRoaXMgdGFza19zY2hlZHVsZSgpIGF0IGFsbDogYSBzaW1wbGUgdGFza193YWtldXAoKSBpcyBzdWZmaWNpZW50IGZvciB0aGUKY2FsbGVlIHRvIHVwZGF0ZSBpdHMgdGltZXJzLiBJbmRlZWQsIHRoZSBwcm9jZXNzX2Noa19jb24oKSBmdW5jdGlvbiBhbHJlYWR5CmRlYWxzIHdpdGggc3B1cmlvdXMgd2FrZXVwcywgYW5kIGFscmVhZHkgdXNlcyBzcnZfZ2V0aW50ZXIoKSB0byBjYWxjdWxhdGUKdGhlIG5leHQgd2FrZXVwIGRhdGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUuIFNvIGhlcmUsIGluc3RlYWQgb2YKaGF2aW5nIHRvIHF1ZXVlIHRoZSB0YXNrIGZyb20gX19oZWFsdGhfYWRqdXN0KCkgdG8gYW50aWNpcGF0ZSBhIG5ldyBjaGVjaywKd2UgY2FuIHNpbXBseSB3YWtlIHRoZSB0YXNrIHVwIGFuZCBsZXQgaXQgZGVjaWRlIHdoZW4gaXQgbmVlZHMgdG8gcnVuCm5leHQuIFRoaXMgaXMgbXVjaCBjbGVhbmVyIGFzIHRoZSBleHBpcnkgY2FsY3VsYXRpb24gcmVtYWlucyBwZXJmb3JtZWQgYXQKYSBzaW5nbGUgcGxhY2UsIGZyb20gdGhlIHRhc2sgaXRzZWxmLCBhcyBpdCBzaG91bGQgYmUsIGFuZCBpdCBmaXhlcyB0aGUKcHJvYmxlbSBhYm92ZS4KClRoaXMgc2hvdWxkIGJlIGJhY2twb3J0ZWQgdG8gMi43LCBidXQgbm90IHRvIG9sZGVyIHZlcnNpb25zIHdoZXJlIHRoZQpyaXNrcyBvZiBicmVha2FnZSBhcmUgaGlnaGVyIHRoYW4gdGhlIGNoYW5jZSB0byBmaXggc29tZXRoaW5nIHRoYXQKZXZlciBoYXBwZW5lZC4K