PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4NCg0KPGh0bWw+DQoNCjxoZWFkPg0KDQogICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPg0KDQogICA8bWV0YSBuYW1lPSJBdXRob3IiIGNvbnRlbnQ9IkVjbGlwc2UgUHJvamVjdCBQTUMiPg0KDQogICA8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNC4wIj4NCg0KICAgPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4NCg0KICAgPHRpdGxlPkVjbGlwc2UgUHJvamVjdCBEcmFmdCAzLjAgUGxhbjwvdGl0bGU+DQoNCiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZGVmYXVsdF9zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4NCg0KPC9oZWFkPg0KDQo8Ym9keT4NCg0KDQoNCjxoMT4NCg0KRWNsaXBzZSBQcm9qZWN0PGJyPg0KICBEUkFGVCAzLjAgUGxhbjwvaDE+DQoNCjxwPkxhc3QgcmV2aXNlZCBUaHVyc2RheSBNYXkgMjIsIDIwMDMgKHJlcGxhY2VzIHRoZSA8YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9lY2xpcHNlX3Byb2plY3RfcGxhbl8yXzJfMjAwMjEyMjAuaHRtbCI+ZHJhZnQgDQogIDIuMiBwbGFuIG9mIERlYy4gMjAsIDIwMDI8L2E+OyA8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiANCiAgbWFya3MgaW50ZXJlc3RpbmcgY2hhbmdlcyBzaW5jZSB0aGUgPGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VjbGlwc2UvZGV2ZWxvcG1lbnQvZWNsaXBzZV9wcm9qZWN0X3BsYW5fMl8xLmh0bWwiPmZpbmFsIA0KICAyLjEgcGxhbjwvYT4pPGJyPg0KICA8YnI+DQogIDxpPiZuYnNwOyZuYnNwOyZuYnNwOyBQbGVhc2Ugc2VuZCBjb21tZW50cyBhYm91dCB0aGlzIGRyYWZ0IHBsYW4gdG8gdGhlIDwvaT48YSBocmVmPSJtYWlsdG86ZWNsaXBzZS1kZXZAZWNsaXBzZS5vcmciPmVjbGlwc2UtZGV2QGVjbGlwc2Uub3JnPC9hPiANCiAgPGk+ZGV2ZWxvcGVyIG1haWxpbmcgbGlzdC48L2k+IDwvcD4NCg0KPHA+VGhpcyBkb2N1bWVudCBsYXlzIG91dCB0aGUgZmVhdHVyZSBhbmQgQVBJIHNldCBmb3IgdGhlIG5leHQgZmVhdHVyZSByZWxlYXNlIA0KICBvZiBFY2xpcHNlIGFmdGVyIDIuMSwgZGVzaWduYXRlZCByZWxlYXNlIDMuMCAoPGEgaHJlZj0id2h5X2VjbGlwc2VfM18wLmh0bWwiPldoeSANCiAgRWNsaXBzZSAmcXVvdDszLjAmcXVvdDs/PC9hPikuDQo8dWw+DQogIDxsaT48YSBocmVmPSIjRGVsaXZlcmFibGVzIj5SZWxlYXNlIGRlbGl2ZXJhYmxlczwvYT48L2xpPg0KICA8bGk+PGEgaHJlZj0iI01pbGVzdG9uZXMiPlJlbGVhc2UgbWlsZXN0b25lczwvYT48L2xpPg0KICA8bGk+PGEgaHJlZj0iI1RhcmdldE9wZXJhdGluZ0Vudmlyb25tZW50cyI+VGFyZ2V0IG9wZXJhdGluZyBlbnZpcm9ubWVudHM8L2E+PC9saT4NCiAgPGxpPjxhIGhyZWY9IiNDb21wYXRpYmlsaXR5Ij5Db21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcmVsZWFzZXM8L2E+PC9saT4NCiAgPGxpPjxhIGhyZWY9IiNQbGF0Zm9ybSI+RWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0PC9hPjwvbGk+DQogIDxsaT48YSBocmVmPSIjSkRUIj5KYXZhIGRldmVsb3BtZW50IHRvb2xzIChKRFQpIHN1YnByb2plY3Q8L2E+PC9saT4NCiAgPGxpPjxhIGhyZWY9IiNQREUiPlBsdWctaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgKFBERSkgc3VicHJvamVjdDwvYT48L2xpPg0KPC91bD4NCjxwPlBsYW5zIGRvIG5vdCBtYXRlcmlhbGl6ZSBvdXQgb2Ygbm93aGVyZSwgbm9yIGFyZSB0aGV5IGVudGlyZWx5IHN0YXRpYy4gVG8gZW5zdXJlIA0KICB0aGUgcGxhbm5pbmcgcHJvY2VzcyBpcyB0cmFuc3BhcmVudCBhbmQgb3BlbiB0byB0aGUgZW50aXJlIEVjbGlwc2UgY29tbXVuaXR5LCANCiAgd2UgKHRoZSBFY2xpcHNlIFBNQykgcG9zdCBwbGFucyBpbiBhbiBlbWJyeW9uaWMgZm9ybSBhbmQgcmV2aXNlIHRoZW0gdGhyb3VnaG91dCANCiAgdGhlIHJlbGVhc2UgY3ljbGUuIA0KPHA+VGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBsYW4NCmRlYWxzIHdpdGggdGhlIGltcG9ydGFudCBtYXR0ZXJzIG9mIHJlbGVhc2UgZGVsaXZlcmFibGVzLCByZWxlYXNlIG1pbGVzdG9uZXMsDQp0YXJnZXQgb3BlcmF0aW5nIGVudmlyb25tZW50cywgYW5kIHJlbGVhc2UtdG8tcmVsZWFzZSBjb21wYXRpYmlsaXR5LiBUaGVzZSBhcmUNCmFsbCB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIGNsZWFyIGZvciBhbnkgcmVsZWFzZSwgZXZlbiBpZiBubyBmZWF0dXJlcyB3ZXJlIHRvDQpjaGFuZ2UuJm5ic3A7IA0KPHA+VGhlIHJlbWFpbmRlciBvZiB0aGUgcGxhbiBjb25zaXN0cyBvZiBwbGFuIGl0ZW1zIGZvciB0aGUgdmFyaW91cyBFY2xpcHNlIHN1YnByb2plY3RzLiANCiAgRWFjaCBwbGFuIGl0ZW0gY292ZXJzIGEgZmVhdHVyZSBvciBBUEkgdGhhdCBpcyB0byBiZSBhZGRlZCB0byBFY2xpcHNlLCBvciBzb21lIA0KICBhc3BlY3Qgb2YgRWNsaXBzZSB0aGF0IGlzIHRvIGJlIGltcHJvdmVkLiBFYWNoIHBsYW4gaXRlbSBoYXMgaXRzIG93biBlbnRyeSBpbiANCiAgdGhlIEVjbGlwc2UgYnVnemlsbGEgZGF0YWJhc2UsIHdpdGggYSB0aXRsZSBhbmQgYSBjb25jaXNlIHN1bW1hcnkgKHVzdWFsbHkgYSANCiAgc2luZ2xlIHBhcmFncmFwaCkgdGhhdCBleHBsYWlucyB0aGUgd29yayBpdGVtIGF0IGEgc3VpdGFibHkgaGlnaCBlbm91Z2ggbGV2ZWwgDQogIHNvIHRoYXQgZXZlcnlvbmUgY2FuIHJlYWRpbHkgdW5kZXJzdGFuZCB3aGF0IHRoZSB3b3JrIGl0ZW0gaXMgd2l0aG91dCBoYXZpbmcgDQogIHRvIHVuZGVyc3RhbmQgdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWwuDQo8cD5Ob3QgYWxsIHBsYW4gaXRlbXMgcmVwcmVzZW50IHRoZSBzYW1lIGFtb3VudCBvZiB3b3JrOyBzb21lIG1heSBiZSBxdWl0ZSBsYXJnZSwgDQogIG90aGVycywgcXVpdGUgc21hbGwuIFNvbWUgcGxhbiBpdGVtcyBtYXkgaW52b2x2ZSB3b3JrIHRoYXQgaXMgbG9jYWxpemVkIHRvIGEgDQogIHNpbmdsZSBQbGF0Zm9ybSBjb21wb25lbnQ7IG90aGVycyBtYXkgaW52b2x2ZSBjb29yZGluYXRlZCBjaGFuZ2VzIHRvIHNldmVyYWwgDQogIGNvbXBvbmVudHM7IG90aGVyIG1heSBwZXJ2YWRlIHRoZSBlbnRpcmUgUGxhdGZvcm0uIEFsdGhvdWdoIHNvbWUgcGxhbiBpdGVtcyANCiAgYXJlIGZvciB3b3JrIHRoYXQgaXMgbW9yZSBwcmVzc2luZyB0aGF0IG90aGVycywgdGhlIHBsYW4gaXRlbXMgYXBwZWFyIGluIG5vIA0KICBwYXJ0aWN1bGFyIG9yZGVyLg0KPHA+V2l0aCB0aGUgcHJldmlvdXMgcmVsZWFzZSBhcyB0aGUgc3RhcnRpbmcgcG9pbnQsIHRoaXMgaXMgdGhlIHBsYW4gZm9yIGhvdyB3ZSANCiAgd2lsbCBlbmhhbmNlIGFuZCBpbXByb3ZlIGl0LiBGaXhpbmcgYnVncywgaW1wcm92aW5nIHRlc3QgY292ZXJhZ2UsIGRvY3VtZW50YXRpb24sIA0KICBleGFtcGxlcywgcGVyZm9ybWFuY2UsIHVzYWJpbGl0eSwgZXRjLiBhcmUgY29uc2lkZXJlZCByb3V0aW5lIG9uZ29pbmcgbWFpbnRlbmFuY2UgYWN0aXZpdGllcyBhbmQgYXJlIA0KICBub3QgaW5jbHVkZWQgaW4gdGhpcyBwbGFuIHVubGVzcyB0aGV5IHdvdWxkIGFsc28gaW52b2x2ZSBhIHNpZ25pZmljYW50IGNoYW5nZSANCiAgdG8gdGhlIEFQSSBvciBmZWF0dXJlIHNldCwgb3IgaW52b2x2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiB3b3JrLiBBbGwgaW50ZXJlc3RpbmcgDQogIGZlYXR1cmUgd29yayBpcyBhY2NvdW50ZWQgZm9yIGluIHRoaXMgcGxhbi4NCjxwPlRoZSBjdXJyZW50IHN0YXR1cyBvZiBlYWNoIHBsYW4gaXRlbSBpcw0Kbm90ZWQ6DQo8dWw+DQogIDxsaT48Yj5Db21taXR0ZWQ8L2I+IHBsYW4gaXRlbSAtIEEgY29tbWl0dGVkIHBsYW4gaXRlbSBpcyBvbmUgdGhhdCB3ZSBoYXZlIGRlY2lkZWQgDQogICAgdG8gYWRkcmVzcyBmb3IgdGhlIHJlbGVhc2UuPC9saT4NCiAgPGxpPjxiPlByb3Bvc2VkPC9iPiBwbGFuIGl0ZW0gLSBBIHByb3Bvc2VkIHBsYW4gaXRlbSBpcyBvbmUgdGhhdCB3ZSBhcmUgY29uc2lkZXJpbmcgDQogICAgYWRkcmVzc2luZyBmb3IgdGhlIHJlbGVhc2UuIEFsdGhvdWdoIHdlIGFyZSBhY3RpdmVseSBpbnZlc3RpZ2F0aW5nIGl0LCB3ZSANCiAgICBhcmUgbm90IHlldCBpbiBhIHBvc2l0aW9uIHRvIGNvbW1pdCB0byBpdCwgb3IgdG8gc2F5IHRoYXQgd2Ugd29uJ3QgYmUgYWJsZSANCiAgICB0byBhZGRyZXNzIGl0LiBBZnRlciBkdWUgY29uc2lkZXJhdGlvbiwgYSBwcm9wb3NhbCB3aWxsIGVpdGhlciBiZSBjb21taXR0ZWQsIA0KICAgIGRlZmVycmVkLCBvciByZWplY3RlZC48L2xpPg0KICA8bGk+PGI+RGVmZXJyZWQ8L2I+IHBsYW4gaXRlbSAtIEEgcmVhc29uYWJsZSBwcm9wb3NhbCB0aGF0IHdpbGwgbm90IG1ha2UgaXQgDQogICAgaW4gdG8gdGhpcyByZWxlYXNlIGZvciBzb21lIHJlYXNvbiBpcyBtYXJrZWQgYXMgZGVmZXJyZWQgd2l0aCBhIGJyaWVmIG5vdGUgDQogICAgYXMgdG8gd2h5IGl0IHdhcyBkZWZlcnJlZC4gRGVmZXJyZWQgcGxhbiBpdGVtcyBtYXkgcmVzdXJmYWNlIGFzIGNvbW1pdHRlZCANCiAgICBwbGFuIGl0ZW1zIGF0IGEgbGF0ZXIgcG9pbnQuPC9saT4NCiAgPGxpPjxiPlJlamVjdGVkPC9iPiBwbGFuIGl0ZW0gLSBQbGFuIGl0ZW1zIHRoYXQgd2VyZSBwcm9wb3NlZCBidXQganVkZ2VkIHVud29ya2FibGUgDQogICAgYXJlIG1hcmtlZCBhcyByZWplY3RlZCBwbGFuIGl0ZW1zLCB3aXRoIGFuIGFjY29tcGFueWluZyBzdW1tYXJ5IG9mIHdoeSB0aGV5IA0KICAgIHdlcmUgZGlzbWlzc2VkLiBLZWVwaW5nIHRyYWNrIG9mIHJlamVjdGVkIGl0ZW1zIGF2b2lkcyByZXBlYXRpbmcgdGhlIGRpc2N1c3Npb24uPC9saT4NCjwvdWw+DQo8aDI+PGEgbmFtZT0iRGVsaXZlcmFibGVzIj48L2E+UmVsZWFzZSBkZWxpdmVyYWJsZXM8L2gyPg0KDQo8cD5UaGUgcmVsZWFzZSBkZWxpdmVyYWJsZXMgaGF2ZSB0aGUgc2FtZSBmb3JtIGFzIHByZXZpb3VzIHJlbGVhc2VzLCBuYW1lbHk6DQoNCjx1bD4NCiAgPGxpPlNvdXJjZSBjb2RlIHJlbGVhc2UgZm9yIEVjbGlwc2UgUHJvamVjdCwgYXZhaWxhYmxlIGFzIHZlcnNpb25zIHRhZ2dlZCAmcXVvdDtSM18wJnF1b3Q7IA0KICAgIGluIHRoZSBFY2xpcHNlIFByb2plY3QgPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZy92aWV3Y3ZzLyI+Q1ZTIHJlcG9zaXRvcnk8L2E+LjwvbGk+DQogIDxsaT5FY2xpcHNlIFByb2plY3QgU0RLIChpbmNsdWRlcyBQbGF0Zm9ybSwgSkRULCBhbmQgUERFIHNvdXJjZSB6aXBzKSAoZG93bmxvYWRhYmxlKS48L2xpPg0KICA8bGk+RWNsaXBzZSBQbGF0Zm9ybSBydW50aW1lIGJpbmFyeSBkaXN0cmlidXRpb24gKGRvd25sb2FkYWJsZSkuPC9saT4NCiAgPGxpPkpEVCBydW50aW1lIGJpbmFyeSBkaXN0cmlidXRpb24gKGRvd25sb2FkYWJsZSkuPC9saT4NCiAgPGxpPkVjbGlwc2UgU0RLIEV4YW1wbGVzIChkb3dubG9hZGFibGUpLjwvbGk+DQogIDxsaT5TV1QgZGlzdHJpYnV0aW9uIChkb3dubG9hZGFibGUpLjwvbGk+DQo8L3VsPg0KDQo8aDI+PGEgbmFtZT0iTWlsZXN0b25lcyI+PC9hPlJlbGVhc2UgbWlsZXN0b25lczwvaDI+DQoNCjxwPlJlbGVhc2UgbWlsZXN0b25lIG9jY3VycmluZyBhdCByb3VnaGx5IDYgd2VlayBpbnRlcnZhbHMgZXhpc3QgdG8gZmFjaWxpdGF0ZSANCiAgY29hcnNlLWdyYWluZWQgcGxhbm5pbmcgYW5kIHN0YWdpbmcuIFRoZSBtaWxlc3RvbmVzIGZvciAyMDAzIGFyZTo8L3A+DQoNCjx1bD4NCiAgPGxpPkZyaWRheSBKdW5lIDYsIDIwMDMgLSBNaWxlc3RvbmUgMSAoMy4wIE0xKSAtIHN0YWJsZSBidWlsZCByZWZsZWN0aW5nIHByb2dyZXNzPC9saT4NCiAgPGxpPkZyaWRheSBKdWx5IDE4LCAyMDAzIC0gTWlsZXN0b25lIDIgKDMuMCBNMikgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZyBwcm9ncmVzczwvbGk+DQogIDxsaT5GcmlkYXkgQXVndXN0IDI5LCAyMDAzIC0gTWlsZXN0b25lIDMgKDMuMCBNMykgLSBzdGFibGUgYnVpbGQgcmVmbGVjdGluZyANCiAgICBwcm9ncmVzczwvbGk+DQogIDxsaT5GcmlkYXkgT2N0b2JlciAxMCwgMjAwMyAtIE1pbGVzdG9uZSA0ICgzLjAgTTQpIC0gaW5pdGlhbCBBUEkgZnJlZXplIC0gc3RhYmxlIA0KICAgIGJ1aWxkIHJlZmxlY3RpbmcgcHJvZ3Jlc3M8L2xpPg0KICA8bGk+RnJpZGF5IE5vdmVtYmVyIDIxLCAyMDAzIC0gTWlsZXN0b25lIDUgKDMuMCBNNSkgLSBBUElzIGZyb3plbiAtIHN0YWJsZSBidWlsZCANCiAgICByZWZsZWN0aW5nIHByb2dyZXNzPC9saT4NCjwvdWw+DQoNCjxwPiBBZGRpdGlvbmFsIDIwMDQgbWlsZXN0b25lcyB3aWxsIGJlIGFkZGVkIGxhdGVyLiBPdXIgdGFyZ2V0IGlzIHRvIGNvbXBsZXRlIA0KICAzLjAgaW4gMlEyMDA0LiBBbGwgcmVsZWFzZSBkZWxpdmVyYWJsZXMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGFzIHNvb24gDQogIGFzIHRoZSByZWxlYXNlIGhhcyBiZWVuIHRlc3RlZCBhbmQgdmFsaWRhdGVkIGluIHRoZSB0YXJnZXQgb3BlcmF0aW5nIGNvbmZpZ3VyYXRpb25zIA0KICBsaXN0ZWQgYmVsb3cuPC9wPg0KDQo8aDI+PGEgbmFtZT0iVGFyZ2V0T3BlcmF0aW5nRW52aXJvbm1lbnRzIj48L2E+VGFyZ2V0IE9wZXJhdGluZyBFbnZpcm9ubWVudHM8L2gyPg0KDQoNCg0KPHA+SW4gb3JkZXIgdG8gcmVtYWluIGN1cnJlbnQsIGVhY2ggRWNsaXBzZSByZWxlYXNlIHRhcmdldHMgcmVhc29uYWJseSBjdXJyZW50DQp2ZXJzaW9ucyBvZiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLjwvcD4NCg0KPHA+TW9zdCBvZiB0aGUgRWNsaXBzZSBTREsgaXMgJnF1b3Q7cHVyZSZxdW90OyBKYXZhmSBjb2RlIGFuZCBoYXMgbm8gZGlyZWN0IGRlcGVuZGVuY2UgDQogIG9uIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uIFRoZSBjaGllZiBkZXBlbmRlbmNlIGlzIHRoZXJlZm9yZSBvbiB0aGUgDQogIEphdmEgMiBQbGF0Zm9ybSBpdHNlbGYuIDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IA0KICBUaGUgMy4wIHJlbGVhc2Ugb2YgdGhlIEVjbGlwc2UgUHJvamVjdCBpcyB3cml0dGVuIGFuZCBjb21waWxlZCBhZ2FpbnN0IHZlcnNpb24gDQogIDEuNCBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIEFQSXMsIGFuZCB0YXJnZXRlZCB0byBydW4gb24gdmVyc2lvbiAxLjQgb2YgdGhlIEphdmEgDQogIDIgUnVudGltZSBFbnZpcm9ubWVudCwgU3RhbmRhcmQgRWRpdGlvbi48L3A+DQo8cD48aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBUaGVyZSBhcmUgbWFueSBkaWZmZXJlbnQgDQogIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgSmF2YSAyIFBsYXRmb3JtIHJ1bm5pbmcgYXRvcCBhIHZhcmlldHkgb2Ygb3BlcmF0aW5nIHN5c3RlbXMuIA0KICBXZSBmb2N1cyBFY2xpcHNlIHRlc3Rpbmcgb24gYSBoYW5kZnVsIG9mIHBvcHVsYXIgPHNwYW4gY2xhc3M9ImhlYWRlciI+Y29tYmluYXRpb25zIA0KICBvZiBvcGVyYXRpbmcgc3lzdGVtIGFuZCBKYXZhIDIgUGxhdGZvcm07IHRoZXNlIGFyZSBvdXIgPGVtPnJlZmVyZW5jZSBwbGF0Zm9ybXM8L2VtPi4gDQogIEVjbGlwc2UgdW5kb3VidGVkbHkgcnVucyBmaW5lIGluIG1hbnkgb3BlcmF0aW5nIGVudmlyb25tZW50cyBiZXlvbmQgdGhlIHJlZmVyZW5jZSANCiAgcGxhdGZvcm1zIHdlIHRlc3QuIEhvd2V2ZXIsIHNpbmNlIHdlIGRvIG5vdCBzeXN0ZW1hdGljYWxseSB0ZXN0IHRoZW0gd2UgY2Fubm90IA0KICB2b3VjaCBmb3IgdGhlbS4gUHJvYmxlbXMgZW5jb3VudGVyZWQgd2hlbiBydW5uaW5nIEVjbGlwc2Ugb24gbm9uLXJlZmVyZW5jZSBwbGF0Zm9ybSANCiAgdGhhdCBjYW5ub3QgYmUgcmVjcmVhdGVkIG9uIGFueSByZWZlcmVuY2UgcGxhdGZvcm0gd2lsbCBiZSBnaXZlbiBsb3dlciBwcmlvcml0eSANCiAgdGhhbiBwcm9ibGVtcyB3aXRoIHJ1bm5pbmcgRWNsaXBzZSBvbiBhIHJlZmVyZW5jZSBwbGF0Zm9ybS48L3NwYW4+PC9wPg0KPHA+RWNsaXBzZSBTREsgMy4wIGlzIHRlc3RlZCBhbmQgdmFsaWRhdGVkIG9uIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlIHBsYXRmb3JtcyANCiAgKHRoaXMgbGlzdCBpcyB1cGRhdGVkIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGUgcmVsZWFzZSBjeWNsZSk6PC9wPg0KPHRhYmxlIHdpZHRoPSI5NSUiIGJvcmRlcj0iMSI+DQogIDx0cj4gDQogICAgPHRkIHdpZHRoPSIyMCUiPjxiPk9wZXJhdGluZyBzeXN0ZW08L2I+PC90ZD4NCiAgICA8dGQgd2lkdGg9IjglIj48Yj5Qcm9jZXNzb3IgYXJjaGl0ZWN0dXJlPC9iPjwvdGQ+DQogICAgPHRkIHdpZHRoPSI2JSI+PGI+V2luZG93IHN5c3RlbTwvYj48L3RkPg0KICAgIDx0ZCB3aWR0aD0iNjYlIj48Yj5KYXZhIDIgUGxhdGZvcm08L2I+PC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+TWljcm9zb2Z0IFdpbmRvd3MgWFA8L3RkPg0KICAgIDx0ZD5JbnRlbCB4ODY8L3RkPg0KICAgIDx0ZD5XaW4zMjwvdGQ+DQogICAgPHRkPlN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCB2ZXJzaW9uIDEuNC4xXzAyIGZvciBNaWNyb3NvZnQgV2luZG93czwvdGQ+DQogIDwvdHI+DQogIDx0cj4gDQogICAgPHRkPk1pY3Jvc29mdCBXaW5kb3dzIFhQPC90ZD4NCiAgICA8dGQ+SW50ZWwgeDg2PC90ZD4NCiAgICA8dGQ+V2luMzI8L3RkPg0KICAgIDx0ZD5JQk0gMzItYml0IFNESyBmb3IgV2luZG93cywgSmF2YSAyIFRlY2hub2xvZ3kgRWRpdGlvbiwgdmVyc2lvbiAxLjQuMDwvdGQ+DQogIDwvdHI+DQogIDx0cj4gDQogICAgPHRkPlJlZEhhdCBMaW51eCA5IFByb2Zlc3Npb25hbDwvdGQ+DQogICAgPHRkPkludGVsIHg4NjwvdGQ+DQogICAgPHRkPkdUSzwvdGQ+DQogICAgPHRkPlN1biBKYXZhIDIgU0RLLCBTdGFuZGFyZCBFZGl0aW9uLCAxLjQuMV8wMiBmb3IgTGludXggeDg2PC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+UmVkSGF0IExpbnV4IDkgUHJvZmVzc2lvbmFsPC90ZD4NCiAgICA8dGQ+SW50ZWwgeDg2PC90ZD4NCiAgICA8dGQ+R1RLPC90ZD4NCiAgICA8dGQ+SUJNIERldmVsb3BlciBLaXQgZm9yIExpbnV4LCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCB2ZXJzaW9uIDEuNC4wPC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+U3VTRSBMaW51eCA4LjI8L3RkPg0KICAgIDx0ZD5JbnRlbCB4ODY8L3RkPg0KICAgIDx0ZD5HVEs8L3RkPg0KICAgIDx0ZD5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgMS40LjFfMDIgZm9yIExpbnV4IHg4NjwvdGQ+DQogIDwvdHI+DQogIDx0cj4gDQogICAgPHRkPlN1U0UgTGludXggOC4yPC90ZD4NCiAgICA8dGQ+SW50ZWwgeDg2PC90ZD4NCiAgICA8dGQ+R1RLPC90ZD4NCiAgICA8dGQ+SUJNIERldmVsb3BlciBLaXQgZm9yIExpbnV4LCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCB2ZXJzaW9uIDEuNC4wPC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+U3VuIFNvbGFyaXMgODwvdGQ+DQogICAgPHRkPlNQQVJDPC90ZD4NCiAgICA8dGQ+TW90aWY8L3RkPg0KICAgIDx0ZD5TdW4gSmF2YSAyIFNESywgU3RhbmRhcmQgRWRpdGlvbiwgMS40LjFfMDIgZm9yIFNvbGFyaXMgU1BBUkM8L3RkPg0KICA8L3RyPg0KICA8dHI+IA0KICAgIDx0ZD5IUCBIUC1VWCAxMWk8L3RkPg0KICAgIDx0ZD5ocDkwMDA8YnI+DQogICAgICBQQS1SSVNDPC90ZD4NCiAgICA8dGQ+TW90aWY8L3RkPg0KICAgIDx0ZD48c3BhbiBjbGFzcz0iaGVhZGVyIj5IUC1VWCBTREsgZm9yIHRoZSBKYXZhIDIgcGxhdGZvcm0sIHZlcnNpb24gMS40LjEuMDEgDQogICAgICBmb3IgaHA5MDAwIFBBLVJJU0M8L3NwYW4+PC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+SUJNIEFJWCA1LjE8L3RkPg0KICAgIDx0ZD5Qb3dlclBDPC90ZD4NCiAgICA8dGQ+TW90aWY8L3RkPg0KICAgIDx0ZD5JQk0gRGV2ZWxvcGVyIEtpdCBmb3IgQUlYLCBKYXZhIDIgVGVjaG5vbG9neSBFZGl0aW9uLCB2ZXJzaW9uIDEuNDwvdGQ+DQogIDwvdHI+DQogIDx0cj4gDQogICAgPHRkPkFwcGxlIE1hYyBPUyBYIDEwLjI8L3RkPg0KICAgIDx0ZD5Qb3dlclBDPC90ZD4NCiAgICA8dGQ+Q2FyYm9uPC90ZD4NCiAgICA8dGQ+SmF2YSAyIFN0YW5kYXJkIEVkaXRpb24gMS40LjEgZm9yIE1hYyBPUyBYPC90ZD4NCiAgPC90cj4NCiAgPHRyPiANCiAgICA8dGQ+UU5YIE5ldXRyaW5vIFJUT1MgPGk+W3ZlcnNpb24gVERCXTwvaT48L3RkPg0KICAgIDx0ZD5JbnRlbCB4ODY8L3RkPg0KICAgIDx0ZD5QaG90b248L3RkPg0KICAgIDx0ZD5JQk0gSjkgVk0gZm9yIFFOWCA8aT5bdmVyc2lvbiBUREJdPC9pPjwvdGQ+DQogIDwvdHI+DQo8L3RhYmxlPg0KPGg0PkludGVybmF0aW9uYWxpemF0aW9uPC9oND4NCjxwPlRoZSBFY2xpcHNlIFBsYXRmb3JtIGlzIGRlc2lnbmVkIGFzIHRoZSBiYXNpcyBmb3IgaW50ZXJuYXRpb25hbGl6ZWQgcHJvZHVjdHMuDQpUaGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgcHJvdmlkZWQgYnkgdGhlIEVjbGlwc2UgU0RLIGNvbXBvbmVudHMsIGluY2x1ZGluZw0KZGlhbG9ncyBhbmQgZXJyb3IgbWVzc2FnZXMsIGFyZSBleHRlcm5hbGl6ZWQuIFRoZSBFbmdsaXNoIHN0cmluZ3MgYXJlIHByb3ZpZGVkDQphcyB0aGUgZGVmYXVsdCByZXNvdXJjZSBidW5kbGVzLjwvcD4NCjxwPkxhdGluLTEgbG9jYWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBFY2xpcHNlIFNESyBvbiBhbGwgb2YgdGhlIGFib3ZlDQpvcGVyYXRpbmcgZW52aXJvbm1lbnRzOyBEQkNTIGxvY2FsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgRWNsaXBzZSBTREsgb24gdGhlDQpXaW5kb3dzLCBHVEssIGFuZCBNb3RpZiB3aW5kb3cgc3lzdGVtczsgQklESSBsb2NhbGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlDQpFY2xpcHNlIFNESyBvbmx5IG9uIFdpbmRvd3Mgb3BlcmF0aW5nIGVudmlyb25tZW50cy4NCjxwPlRoZSBFY2xpcHNlIFNESyBzdXBwb3J0cyBHQiAxODAzMCwgdGhlIG5ldyBDaGluZXNlIGNvZGUgcGFnZSBzdGFuZGFyZCwgb24gV2luZG93cyANCiAgWFAgYW5kIDIwMDAsIGFuZCBMaW51eC4NCjxwPkdlcm1hbiBhbmQgSmFwYW5lc2UgbG9jYWxlcyBhcmUgdGVzdGVkLjwvcD4NCjxoND5CSURJIHN1cHBvcnQ8L2g0Pg0KPHA+VGhlIEVjbGlwc2UgU0RLIGlzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGFyZ2V0ZWQgYXQgdGVjaG5pY2FsIHByb2Zlc3Npb25hbHMgDQogIC0gbm90IGFuIGVuZCB1c2VyIGFwcGxpY2F0aW9uLiBIb3dldmVyLCB0aGUgRWNsaXBzZSBTREsgdG9vbHMgd2lsbCBwZXJtaXQgdGVjaG5pY2FsIA0KICBwcm9mZXNzaW9uYWxzIHdobyBhcmUgd29ya2luZyBpbiBFbmdsaXNoIHRvIGJ1aWxkIEhlYnJldy9BcmFiaWMgZW5kIHVzZXIgSmF2YSANCiAgcHJvZ3JhbXMgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgbm90IGJhc2VkIG9uIHRoZSBFY2xpcHNlIFNESy4gVGhlIEJJREkgc3VwcG9ydCANCiAgaW4gdGhlIEVjbGlwc2UgU0RLIGFsbG93cyBhIEphdmEgcHJvZ3JhbW1lciB0byB3b3JrIHdpdGggQklESSBzdHJpbmdzLCBjb2RlIA0KICBjb21tZW50cywgZXRjLiBidXQgdGhlIEVjbGlwc2UgU0RLIGl0c2VsZiBpcyBub3QgZGVzaWduZWQgdG8gYmUgbG9jYWxpemVkIGZvciANCiAgQklESSBsb2NhbGVzIGFuZCBpdHMgd2lkZ2V0IG9yaWVudGF0aW9uIGNhbiBub3QgYmUgY2hhbmdlZC48L3A+DQo8cD48aT5JTVBPUlRBTlQ6IFRoZSBhYm92ZSBCSURJIHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9ubHkgb24gV2luZG93cyBwbGF0Zm9ybXMuPC9pPjwvcD4NCjxoMj48YSBuYW1lPSJDb21wYXRpYmlsaXR5Ij48L2E+Q29tcGF0aWJpbGl0eSB3aXRoIFByZXZpb3VzIFJlbGVhc2VzPC9oMj4NCg0KPHA+IDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IEVjbGlwc2UgMy4wIHdpbGwgbm90IA0KICBiZSBmdWxseSBjb21wYXRpYmxlIHdpdGggRWNsaXBzZSAyLjAgYW5kIDIuMS48L3A+DQoNCjxoMz4gQ29tcGF0aWJpbGl0eSBvZiBSZWxlYXNlIDMuMCB3aXRoIDIuMCBhbmQgMi4xPC9oMz4NCg0KIA0KPHA+V2UgaGF2ZSBkZWNpZGVkIHRoYXQgdGhlIG5leHQgcmVsZWFzZSBvZiBFY2xpcHNlIHdpbGwgbm90IGJlIGZ1bGx5IGNvbXBhdGlibGUgDQogIHdpdGggMi4wIGFuZCAyLjEuIFRoaXMgZ2l2ZXMgdXMgYWRkaXRpb25hbCBmcmVlZG9tIHRvIGlubm92YXRlIGFuZCBtYWtlIHRoZSANCiAgbmV4dCBFY2xpcHNlIHNpZ25pZmljYW50bHkgYmV0dGVyIHRoYW4gaXQgY291bGQgaGF2ZSBiZWVuIGhhZCB3ZSB0cmllZCB0byBtYWludGFpbiANCiAgY29tcGF0aWJpbGl0eS4gVGhhdCBzYWlkLCBtb3N0IG9mIHRoZSBFY2xpcHNlIEFQSXMgd2lsbCBiZSB0aGUgc2FtZSBpbiAzLjAgYXMgDQogIGluIDIuMS4gV2Ugd2lsbCBvbmx5IGJyZWFrIEFQSXMgaW4gMy4wIHdoZW4gaGF2ZSBhIGNvbXBlbGxpbmcgY2FzZSBmb3IgZG9pbmcgDQogIHNvLiBBbmQgd2hlbiB3ZSBmaW5kIHdlIG5lZWQgdG8gYnJlYWsgQVBJcywgd2Ugd291bGQgZG8gaXQgaW4gYSBjb250cm9sbGVkIHdheSANCiAgdGhhdCBtaW5pbWl6ZXMgdGhlIGVmZm9ydCByZXF1aXJlZCB0byBwb3J0IGFuIGV4aXN0aW5nIHBsdWctaW4gdG8gdGhlIDMuMCBBUElzLiANCiAgV2Ugd2lsbCBwcm92aWRlIGEgY29tcHJlaGVuc2l2ZSA8aT5FY2xpcHNlIDMuMCBQb3J0aW5nIEd1aWRlPC9pPiB0aGF0IGNvdmVycyANCiAgYWxsIGFyZWFzIG9mIGJyZWFraW5nIEFQSSBjaGFuZ2VzLCBhbmQgZGVzY3JpYmVzIGhvdyB0byBwb3J0IGV4aXN0aW5nIDIuMSBwbHVnLWlucyANCiAgdG8gMy4wLiBVcC10by1kYXRlIGRyYWZ0cyBvZiB0aGUgPGk+RWNsaXBzZSAzLjAgUG9ydGluZyBHdWlkZTwvaT4gd2lsbCBiZSBpbmNsdWRlZCANCiAgd2l0aCBtaWxlc3RvbmUgYnVpbGRzIHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0byBjbGltYiBhYm9hcmQgdGhlIDMuMCByZWxlYXNlIA0KICB3YWdvbiBhdCB0aGUgZWFybHkgc3RhZ2VzLCBvciB0byBlc3RpbWF0ZSB0aGUgYW1vdW50IG9mIGVmZm9ydCB0aGF0IHdpbGwgYmUgDQogIGludm9sdmVkIGluIGV2ZW50dWFsbHkgcG9ydGluZyBleGlzdGluZyBwbHVnLWlucyB0byAzLjAuPC9wPg0KPHA+PGI+QVBJIENvbnRyYWN0IENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAzLjAgd2lsbCBiZSB1cHdhcmRzIGNvbnRyYWN0LWNvbXBhdGlibGUgDQogIHdpdGggRWNsaXBzZSBTREsgMi4wIGFuZCAyLjEgZXhjZXB0IGluIHRob3NlIGFyZWFzIG5vdGVkIGluIHRoZSA8ZW0+RWNsaXBzZSANCiAgMy4wIFBvcnRpbmcgR3VpZGU8L2VtPi4gVGhpcyBtZWFucyB0aGF0IHByb2dyYW1zIGluIGZ1bGwgY29tcGxpYW5jZSB3aXRoIGNvbnRyYWN0cyANCiAgc3BlY2lmaWVkIGluIEVjbGlwc2UgU0RLIDIuMCBvciAyLjEgQVBJcyB3aWxsIG5lZWQgdG8gYmUgcG9ydGVkIHRvIEVjbGlwc2UgU0RLIA0KICAzLjAgQVBJcy4gKEFQSSBpcyBjb25zdHJ1ZWQgYnJvYWRseSB0byBpbmNsdWRlIHN1Y2ggdGhpbmdzIGFzIHBsdWctaW4gZXh0ZW5zaW9uIA0KICBwb2ludHMuKSBEb3dud2FyZCBjb250cmFjdCBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSANCiAgdGhhdCBjb21wbGlhbmNlIHdpdGggRWNsaXBzZSBTREsgMy4wIEFQSXMgd291bGQgZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCBFY2xpcHNlIA0KICBTREsgMi4wIG9yIDIuMSBBUElzLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9qYXZhLWFwaS1ldm9sdXRpb24uaHRtbCI+RXZvbHZpbmcgDQogIEphdmEtYmFzZWQgQVBJczwvYT48L2k+IGZvciBhIGRpc2N1c3Npb24gb2YgdGhlIGtpbmRzIG9mIEFQSSBjaGFuZ2VzIHRoYXQgbWFpbnRhaW4gDQogIGNvbnRyYWN0IGNvbXBhdGliaWxpdHkuDQo8cD48Yj5CaW5hcnkgKHBsdWctaW4pIENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAzLjAgd2lsbCBub3QgYmUgdXB3YXJkcyANCiAgYmluYXJ5LWNvbXBhdGlibGUgd2l0aCBFY2xpcHNlIFNESyAyLjAgYW5kIDIuMS4gUGx1Zy1pbnMgYnVpbHQgZm9yIEVjbGlwc2UgU0RLIA0KICAyLjAgb3IgMi4xIHdpbGwgbmVlZCB0byBiZSBwb3J0ZWQgYW5kIHJlY29tcGlsZWQgZm9yIEVjbGlwc2UgU0RLIDMuMC4gRG93bndhcmQgDQogIHBsdWctaW4gY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkIGVpdGhlci4gUGx1Zy1pbnMgZm9yIEVjbGlwc2UgU0RLIDMuMCANCiAgd2lsbCBub3QgYmUgdXNhYmxlIGluIEVjbGlwc2UgU0RLIDIuMCBvciAyLjEuIFJlZmVyIHRvIDxpPjxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlLm9yZy9lY2xpcHNlL2RldmVsb3BtZW50L2phdmEtYXBpLWV2b2x1dGlvbi5odG1sIj5Fdm9sdmluZyANCiAgSmF2YS1iYXNlZCBBUElzPC9hPjwvaT4gZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUga2luZHMgb2YgQVBJIGNoYW5nZXMgdGhhdCBtYWludGFpbiANCiAgYmluYXJ5IGNvbXBhdGliaWxpdHkuIA0KPHA+PGI+U291cmNlIENvbXBhdGliaWxpdHk6PC9iPiBFY2xpcHNlIFNESyAzLjAgd2lsbCBiZSB1cHdhcmRzIHNvdXJjZS1jb21wYXRpYmxlIA0KICB3aXRoIEVjbGlwc2UgU0RLIDIuMCBvciAyLjEgZXhjZXB0IGluIHRoZSBhcmVhcyBub3RlZCBpbiB0aGUgPGVtPkVjbGlwc2UgMy4wIA0KICBQb3J0aW5nIEd1aWRlPC9lbT4uIFRoaXMgbWVhbnMgdGhhdCBzb3VyY2UgZmlsZXMgd3JpdHRlbiB0byB1c2UgRWNsaXBzZSBTREsgDQogIDIuMCBvciAyLjEgQVBJcyBtaWdodCBzdWNjZXNzZnVsbHkgY29tcGlsZSBhbmQgcnVuIGFnYWluc3QgRWNsaXBzZSBTREsgMy4wIEFQSXMsIA0KICBhbHRob3VnaCB0aGlzIGlzIG5vdCBndWFyYW50ZWVkLiBEb3dud2FyZCBzb3VyY2UgY29tcGF0aWJpbGl0eSBpcyBub3Qgc3VwcG9ydGVkLiANCiAgSWYgc291cmNlIGZpbGVzIHVzZSBuZXcgRWNsaXBzZSBTREsgQVBJcywgdGhleSB3aWxsIG5vdCBiZSB1c2FibGUgd2l0aCBhbiBlYXJsaWVyIA0KICB2ZXJzaW9uIG9mIHRoZSBFY2xpcHNlIFNESy4gDQo8cD48Yj5Xb3Jrc3BhY2UgQ29tcGF0aWJpbGl0eTo8L2I+IEVjbGlwc2UgU0RLIDMuMCB3aWxsIGJlIHVwd2FyZHMgd29ya3NwYWNlLWNvbXBhdGlibGUgDQogIHdpdGggRWNsaXBzZSBTREsgMi4wIG9yIDIuMSB1bmxlc3Mgbm90ZWQuIFRoaXMgbWVhbnMgdGhhdCB3b3Jrc3BhY2VzIGFuZCBwcm9qZWN0cyANCiAgY3JlYXRlZCB3aXRoIEVjbGlwc2UgU0RLIDIuMCBvciAyLjEgY2FuIGJlIHN1Y2Nlc3NmdWxseSBvcGVuZWQgYnkgRWNsaXBzZSBTREsgDQogIDMuMCBhbmQgdXBncmFkZWQgdG8gYSAzLjAgd29ya3NwYWNlLiBUaGlzIGluY2x1ZGVzIGJvdGggaGlkZGVuIG1ldGFkYXRhLCB3aGljaCANCiAgaXMgbG9jYWxpemVkIHRvIGEgcGFydGljdWxhciB3b3Jrc3BhY2UsIGFzIHdlbGwgYXMgbWV0YWRhdGEgZmlsZXMgZm91bmQgd2l0aGluIA0KICBhIHdvcmtzcGFjZSBwcm9qZWN0IChlLmcuLCB0aGUgLnByb2plY3QgZmlsZSksIHdoaWNoIG1heSBwcm9wYWdhdGUgYmV0d2VlbiB3b3Jrc3BhY2VzIA0KICB2aWEgZmlsZSBjb3B5aW5nIG9yIHRlYW0gcmVwb3NpdG9yaWVzLiBJbmRpdmlkdWFsIHBsdWctaW5zIGRldmVsb3BlZCBmb3IgRWNsaXBzZSANCiAgU0RLIDMuMCBzaG91bGQgcHJvdmlkZSBzaW1pbGFyIHVwd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgdGhlaXIgaGlkZGVuIGFuZCB2aXNpYmxlIA0KICB3b3Jrc3BhY2UgbWV0YWRhdGEgY3JlYXRlZCBieSBlYXJsaWVyIHZlcnNpb25zOyAzLjAgcGx1Zy1pbiBkZXZlbG9wZXJzIGFyZSByZXNwb25zaWJsZSANCiAgZm9yIGVuc3VyaW5nIHRoYXQgdGhlaXIgcGx1Zy1pbnMgcmVjb2duaXplIDMuMCwgMi4xLCBhbmQgMi4wIG1ldGFkYXRhIGFuZCBwcm9jZXNzIA0KICBpdCBhcHByb3ByaWF0ZWx5LiBVc2VyIGludGVyZmFjZSBzZXNzaW9uIHN0YXRlIG1heSBiZSBkaXNjYXJkZWQgd2hlbiBhIHdvcmtzcGFjZSANCiAgaXMgdXBncmFkZWQuIERvd253YXJkIHdvcmtzcGFjZSBjb21wYXRpYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuIEEgd29ya3NwYWNlIA0KICBjcmVhdGVkIChvciBvcGVuZWQpIGJ5IEVjbGlwc2UgU0RLIDMuMCB3aWxsIGJlIHVudXNhYmxlIHdpdGggYW4gZWFybGllciB2ZXJzaW9uIA0KICBvZiBFY2xpcHNlIFNESy4mbmJzcDtWaXNpYmxlIG1ldGFkYXRhIGZpbGVzIGNyZWF0ZWQgKG9yIG92ZXJ3cml0dGVuKSBieSBFY2xpcHNlIA0KICBTREsgMy4wIHdpbGwgZ2VuZXJhbGx5IGJlIHVudXNhYmxlIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiBFY2xpcHNlIFNESy4NCjxwPjxiPk5vbi1jb21wbGlhbnQgdXNhZ2Ugb2YgQVBJJ3M8L2I+OiBBbGwgbm9uLUFQSSBtZXRob2RzIGFuZCBjbGFzc2VzLCBhbmQgY2VydGFpbmx5IA0KICBldmVyeXRoaW5nIGluIGEgcGFja2FnZSB3aXRoICZxdW90O2ludGVybmFsJnF1b3Q7IGluIGl0cyBuYW1lLCBhcmUgY29uc2lkZXJlZCANCiAgaW1wbGVtZW50YXRpb24gZGV0YWlscyB3aGljaCBtYXkgdmFyeSBiZXR3ZWVuIG9wZXJhdGluZyBlbnZpcm9ubWVudCBhbmQgYXJlIA0KICBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IG5vdGljZS4gQ2xpZW50IHBsdWctaW5zIHRoYXQgZGlyZWN0bHkgZGVwZW5kIG9uIGFueXRoaW5nIA0KICBvdGhlciB0aGFuIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBFY2xpcHNlIFNESyBBUEkgYXJlIGluaGVyZW50bHkgdW5zdXBwb3J0YWJsZSANCiAgYW5kIHJlY2VpdmUgbm8gZ3VhcmFudGVlcyBhYm91dCBjb21wYXRpYmlsaXR5IHdpdGhpbiBhIHNpbmdsZSByZWxlYXNlIG11Y2ggbGVzcyANCiAgd2l0aCBhbiBlYXJsaWVyIHJlbGVhc2VzLiBSZWZlciB0byA8aT48YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2FydGljbGVzL0FydGljbGUtQVBJJTIwdXNlL2VjbGlwc2UtYXBpLXVzYWdlLXJ1bGVzLmh0bWwiPkhvdyANCiAgdG8gVXNlIHRoZSBFY2xpcHNlIEFQSTwvYT48L2k+IGZvciBpbmZvcm1hdGlvbiBhYm91dCBob3cgdG8gd3JpdGUgY29tcGxpYW50IA0KICBwbHVnLWlucy4gDQo8aDI+IEVjbGlwc2UgUHJvamVjdCBTdWJwcm9qZWN0czwvaDI+DQoNClRoZSBFY2xpcHNlIFByb2plY3QgY29uc2lzdHMgb2YgMyBzdWJwcm9qZWN0cy4gRWFjaCBzdWJwcm9qZWN0IGlzIGNvdmVyZWQgaW4gaXRzIA0Kb3duIHNlY3Rpb246IA0KPHVsPg0KICA8bGk+PGEgaHJlZj0iI1BsYXRmb3JtIj5FY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3Q8L2E+PC9saT4NCiAgPGxpPjxhIGhyZWY9IiNKRFQiPkphdmEgZGV2ZWxvcG1lbnQgdG9vbHMgKEpEVCkgc3VicHJvamVjdDwvYT48L2xpPg0KICA8bGk+PGEgaHJlZj0iI1BERSI+UGx1Zy1pbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAoUERFKSBzdWJwcm9qZWN0PC9hPjwvbGk+DQo8L3VsPg0KPHA+Rm9yIGVhY2ggc3VicHJvamVjdCwgdGhlIGl0ZW1zIGxpc3RlZCByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgDQogIG9yIGFyZWFzIHdoZXJlIGV4aXN0aW5nIGZlYXR1cmVzIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4gRWFjaCBpdGVtIGluZGljYXRlcyANCiAgdGhlIGNvbXBvbmVudHMgbGlrZWx5IGFmZmVjdGVkIGJ5IHRoYXQgd29yayBpdGVtIChtYW55IGl0ZW1zIGludm9sdmUgY29vcmRpbmF0ZWQgDQogIGNoYW5nZXMgdG8gc2V2ZXJhbCBjb21wb25lbnRzKS4gTnVtYmVycyBpbiBwYXJlbnRoZXNlcyBsaW5rIHRvIGJ1Z3ppbGxhIHByb2JsZW0gDQogIHJlcG9ydHMgZm9yIHRoYXQgcGxhbiBpdGVtICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9SkRUJnByb2R1Y3Q9UERFJnByb2R1Y3Q9UGxhdGZvcm0ma2V5d29yZHM9cGxhbiZ0YXJnZXRfbWlsZXN0b25lPTMuMCZ0YXJnZXRfbWlsZXN0b25lPTMuMCtNMSZ0YXJnZXRfbWlsZXN0b25lPTMuMCtNMiZ0YXJnZXRfbWlsZXN0b25lPTMuMCtNMyZ0YXJnZXRfbWlsZXN0b25lPTMuMCtNNCZ0YXJnZXRfbWlsZXN0b25lPTMuMCtNNSI+cXVlcnkgDQogIGJ1Z3ppbGxhIGZvciBhbGwgMy4wIHBsYW4gaXRlbXM8L2E+KS4gDQo8aDI+IDxhIG5hbWU9IlBsYXRmb3JtIj5FY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3Q8L2E+PC9oMj4NCg0KPHA+VGhlIEVjbGlwc2UgUGxhdGZvcm0gcHJvdmlkZXMgdGhlIG1vc3QgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBQbGFuIGl0ZW1zIA0KICByZWZsZWN0IG5ldyBmZWF0dXJlcyBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgDQogIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4gTWFueSBvZiB0aGUgY2hhbmdlcyB1bmRlciBjb25zaWRlcmF0aW9uIGZvciANCiAgdGhlIG5leHQgcmVsZWFzZSBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSBhZGRyZXNzIHRocmVlIG1ham9yIHRoZW1lcy4gU2luY2UgZWFjaCANCiAgdGhlbWUgaGFzIGEgbnVtYmVyIG9mIGl0ZW1zLCB0aGUgY29tbWl0dGVkLCBwcm9wb3NlZCwgYW5kIGRlZmVycmVkIHBsYW4gaXRlbXMgDQogIGFyZSBncm91cGVkIGluIHNlY3Rpb25zIGJ5IHRoZW1lOjwvcD4NCjx1bD4NCiAgPGxpPjxhIGhyZWY9IiNUaGVtZVVzZXJFeHBlcmllbmNlIj5Vc2VyIGV4cGVyaWVuY2UgdGhlbWU8L2E+IC0gSW1wcm92aW5nIEVjbGlwc2UgDQogICAgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgZW5kIHVzZXIuPC9saT4NCiAgPGxpPjxhIGhyZWY9IiNUaGVtZVJlc3BvbnNpdmVVSSI+UmVzcG9uc2l2ZSBVSSB0aGVtZTwvYT4gLSBNYWtpbmcgaXQgZWFzaWVyIA0KICAgIHRvIHdyaXRlIEVjbGlwc2UgcGx1Zy1pbnMgdGhhdCBrZWVwIHRoZSBVSSByZXNwb25zaXZlLjwvbGk+DQogIDxsaT48YSBocmVmPSIjVGhlbWVSQ1AiPlJpY2ggY2xpZW50IHBsYXRmb3JtIHRoZW1lPC9hPiAtIEdlbmVyYWxpemluZyBFY2xpcHNlIA0KICAgIGludG8gYSBwbGF0Zm9ybSBmb3IgYnVpbGRpbmcgbm9uLUlERSBhcHBsaWNhdGlvbnMuPC9saT4NCjwvdWw+DQo8cD5JbiBhZGRpdGlvbiwgdGhlcmUgYXJlIGltcG9ydGFudCBFY2xpcHNlIFBsYXRmb3JtIGltcHJvdmVtZW50cyB0aGF0IGRvIG5vdCANCiAgbmF0dXJhbGx5IGZpdCBpbnRvIGFueSBvZiB0aGUgYWJvdmUgdGhlbWVzLjwvcD4NCjx1bD4NCiAgPGxpPjxhIGhyZWY9IiNPdGhlclBsYXRmb3JtIj5PdGhlciBFY2xpcHNlIFBsYXRmb3JtIGl0ZW1zPC9hPjwvbGk+DQo8L3VsPg0KPGgzPjxhIG5hbWU9IlRoZW1lVXNlckV4cGVyaWVuY2UiPlRoZW1lOiBVc2VyIEV4cGVyaWVuY2U8L2E+PC9oMz4NCjxwPkltcHJvdmluZyBFY2xpcHNlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGVuZCB1c2VyLiBUaGlzIGluY2x1ZGVzIGltcHJvdmluZyANCiAgYm90aCB0aGUgJnF1b3Q7b3V0IG9mIHRoZSBib3gmcXVvdDsgZXhwZXJpZW5jZSBzbyB0aGF0IG5ldyB1c2VycyBhcmUgcHJvZHVjdGl2ZSANCiAgZmFzdGVyLCBhbmQgZmluZGluZyBiZXR0ZXIgd2F5cyB0byBzY2FsZSB1cCB0byBsYXJnZSBudW1iZXJzIG9mIHBsdWctaW5zIHdpdGhvdXQgDQogIG92ZXJ3aGVsbWluZyB0aGUgdXNlci48L3A+DQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QsIFVzZXIgRXhwZXJpZW5jZSB0aGVtZSk8L2g0Pg0KPGJsb2NrcXVvdGU+IA0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5JbXByb3ZlIFVJIA0KICAgIHNjYWxhYmlsaXR5LjwvYj4gRGVzcGl0ZSBlZmZvcnRzIHRvIGVuc3VyZSBVSSBzY2FsYWJpbGl0eSB3aXRoIGEgbGFyZ2UgYmFzZSANCiAgICBvZiBhdmFpbGFibGUgdG9vbHMsIHRoZSBFY2xpcHNlIHdvcmtiZW5jaCBzdGlsbCBpbnRpbWlkYXRlcyBtYW55IHVzZXJzIHdpdGggDQogICAgbG9uZyBtZW51cywgd2lkZSB0b29sYmFycywgYW5kIGxlbmd0aHkgZmxhdCBsaXN0cyBvZiBwcmVmZXJlbmNlcy4gVGhpcyBwcm9ibGVtIA0KICAgIGlzIGFjdXRlIGluIGxhcmdlIEVjbGlwc2UtYmFzZWQgcHJvZHVjdHMuIFRoZSBQbGF0Zm9ybSBzaG91bGQgcHJvdmlkZSBhZGRpdGlvbmFsIA0KICAgIHdheXMgZm9yIGNvbnRyb2xsaW5nIHdvcmtiZW5jaCBjbHV0dGVyLCBzdWNoIGFzIGZ1cnRoZXIgbWVudSBhbmQgdG9vbGJhciBjdXN0b21pemFiaWxpdHksIA0KICAgIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gbm92aWNlIGFuZCBhZHZhbmNlZCBmdW5jdGlvbnMsIHN1cHBvcnRpbmcgZGlmZmVyZW50IA0KICAgIGRldmVsb3BlciByb2xlcywgYW5kIG1vcmUgc3BlY2lmaWMgb2JqZWN0IGNvbnRyaWJ1dGlvbnMgZm9yIHBhcnRpY3VsYXIgZmlsZSANCiAgICB0eXBlcy4gW1BsYXRmb3JtIFVJLCBQbGF0Zm9ybSBEZWJ1ZywgSkRUIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3OTI5Ij4zNzkyOTwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5JbXByb3ZlIGluaXRpYWwgDQogICAgdXNlciBleHBlcmllbmNlLjwvYj4gVXNlcnMgd2hvIGFyZSBuZXcgdG8gYW4gRWNsaXBzZS1iYXNlZCBwcm9kdWN0IGNhbiBmaW5kIA0KICAgIHRoZWlyIGZpcnN0IGV4cGVyaWVuY2VzIHdpdGggaXQgb3ZlcndoZWxtaW5nLCBldmVuIGRhdW50aW5nLiBUaGUgaW5pdGlhbCBleHBlcmllbmNlIA0KICAgIHdvdWxkIGJlIGltcHJvdmVkIGlmIGEgcHJvZHVjdCBjb3VsZCBwcmVjb25maWd1cmUgdGhlIHdvcmtiZW5jaCB0byBzaG93IG9ubHkgDQogICAgdGhlIHN1YnNldCBvZiBmdW5jdGlvbiB0aGF0IGEgbmV3IHVzZXIgcmVhbGx5IG5lZWRzOyB3ZWxjb21lIHBhZ2VzIGNvdWxkIGJlIA0KICAgIHBlcnNvbmFsaXplZCBmb3IgcGFydGljdWxhciB1c2VycyByb2xlcyBvciBsZXZlbHMgb2YgZXhwZXJpZW5jZS4gW1BsYXRmb3JtIA0KICAgIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjY0Ij4zNzY2NDwvYT4pPC9wPg0KICAgIA0KICA8cD4gKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+QWlkIG9uZ29pbmcgDQogICAgbGVhcm5pbmcuPC9iPiBVc2VycyB3aG8gd29yayB3aXRoIGEgY29tcGxleCBFY2xpcHNlLWJhc2VkIHByb2R1Y3QgbmVlZCBub3QgDQogICAgYmUgZmFtaWxpYXIgd2l0aCBhbGwgb2YgaXRzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIGJlIHByb2R1Y3RpdmUuIFdoZW4gdGhleSANCiAgICBkbyBjb21lIHRvIHVzZSBmdW5jdGlvbiB3aGljaCB0aGV5IGhhdmUgbmV2ZXIgdXNlZCBiZWZvcmUgKG9yIG5vdCByZWNlbnRseSANCiAgICBlbm91Z2ggdG8gYmUgZnJlc2ggaW4gbWVtb3J5KSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIHByb2R1Y3QgYmUgYWJsZSB0byANCiAgICBxdWlja2x5IHRyYWluIGFuZCBndWlkZSB0aGUgdXNlciBpbiB1c2luZyB0aGF0IG5ldyBmdW5jdGlvbi4gVGhlIGN1cnJlbnQgRWNsaXBzZSANCiAgICBoYXMgbWFueSBlbGVtZW50cyB0aGF0IGFpZCBsZWFybmluZyAoZXhhbXBsZXMsIHRpcHMgYW5kIHRyaWNrcywgRjEgaGVscCwgYWN0aXZlIA0KICAgIGhlbHAgbGlua3MpOyB0aGUgd29yayBpdGVtIGlzIHRvIGFwcGx5IHRoZW0gZWZmZWN0aXZlbHkgaW4gdGhlIEVjbGlwc2UgVUkgDQogICAgYW5kIHJlY29tbWVuZCBob3cgb3RoZXIgcGx1Zy1pbnMgZG8gc2ltaWxhcmx5LiBbUGxhdGZvcm0gVUksIEhlbHBdIFtUaGVtZTogDQogICAgVXNlciBleHBlcmllbmNlXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NjYiPjM3NjY2PC9hPik8L3A+DQogICAgDQogIDxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5JbXByb3ZlIFVJIA0KICAgIGFmZm9yZGFuY2VzLjwvYj4gVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGFyZWFzIG9mIHRoZSBVSSB3aGVyZSBFY2xpcHNlIGlzIG5vdCANCiAgICBwcm92aWRpbmcgZW5vdWdoIGN1ZXMgdG8gdGhlIHVzZXIgKGUuZy4sIG5vIGN1ZSBmb3IgYXZhaWxhYmxlIGhlbHAsIG5vIGN1ZSANCiAgICBmb3IgbWF4aW1pemUvcmVzdG9yZSB2aWV3LCBubyBjdWUgZm9yIG1hbmRhdG9yeS9vcHRpb25hbCBmaWVsZHMgaW4gd2l6YXJkcykuIA0KICAgIE1ha2UgYSBzeXN0ZW1hdGljIHBhc3MgdGhvdWdoIHRoZSBVSSB0byBpbXByb3ZlIGl0cyBhZmZvcmRhbmNlcy4gW1BsYXRmb3JtIA0KICAgIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjY3Ij4zNzY2NzwvYT4pPC9wPg0KICA8cD4oMi4xIGRlZmVycmVkIGl0ZW0pIDxiPkltcHJvdmUgZmlsZSBlbmNvZGluZyBzdXBwb3J0LjwvYj4gRWNsaXBzZSAyLjEgdXNlcyANCiAgICBhIHNpbmdsZSBnbG9iYWwgZmlsZSBlbmNvZGluZyBzZXR0aW5nIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGZpbGVzIGluIHRoZSANCiAgICB3b3Jrc3BhY2UuIFRoaXMgaXMgcHJvYmxlbWF0aWM7IGZvciBleGFtcGxlLCB3aGVuIEphdmEgc291cmNlIGZpbGVzIGluIHRoZSANCiAgICB3b3Jrc3BhY2UgdXNlIE9TIGRlZmF1bHQgZmlsZSBlbmNvZGluZyB3aGlsZSBYTUwgZmlsZXMgaW4gdGhlIHdvcmtzcGFjZSB1c2UgDQogICAgVVRGLTggZmlsZSBlbmNvZGluZy4gVGhlIFBsYXRmb3JtIHNob3VsZCBzdXBwb3J0IG5vbi11bmlmb3JtIGZpbGUgZW5jb2RpbmdzLiANCiAgICBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUksIFRleHQsIFNlYXJjaCwgQ29tcGFyZSwgSkRUIFVJLCBKRFQgQ29yZV0gW1RoZW1lOiANCiAgICBVc2VyIGV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzkzMyI+Mzc5MzM8L2E+KTwvcD4NCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+RXZvbHZlIHRoZSANCiAgICBFY2xpcHNlIHVzZXIgZXhwZXJpZW5jZS48L2I+IEVjbGlwc2UgMy4wIHNob3VsZCBoYXZlIGEgbmV3IGxvb2sgdGhhdCBtYWtlcyANCiAgICBtb3JlIGVmZmVjdGl2ZSB1c2Ugb2YgdGhlIGNhcGFiaWxpdGllcyBvZiBjdXJyZW50IGRlc2t0b3AgY29tcHV0ZXJzLiBUaGlzIA0KICAgIGluY2x1ZGVzIGFsbG93aW5nIHRoZSB1c2VyIHRvIGN1c3RvbWl6ZSB0aGUgd29ya2JlbmNoIGJ5IGNyZWF0aW5nIGZsb2F0aW5nIA0KICAgIHRvb2xiYXJzIGFuZCB2aWV3cywgYW5kIHN1cHBvcnRpbmcgdGVhci1vZmYgdmlld3MgYW5kIGRvY2thYmxlIHRvb2xiYXJzIHdoZXJlIA0KICAgIHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyB3aW5kb3cgc3lzdGVtLiBbUGxhdGZvcm0gVUksIEpEVCBVSSwgU1dUXSBbVGhlbWU6IA0KICAgIFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3OTk3Ij4zNzk5NzwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAga2V5Ym9hcmQgYmluZGluZ3MuIDwvc3Ryb25nPlNldmVyYWwgdGhpbmdzIHNob3VsZCBiZSBkb25lIHRvIGltcHJvdmUga2V5Ym9hcmQgDQogICAgYmluZGluZ3MuIEZpcnN0LCBjdXN0b20ga2V5IGJpbmRpbmdzIGN1cnJlbnRseSB3b3JrIG9ubHkgaW4gdGhlIG1haW4gRWNsaXBzZSANCiAgICB3aW5kb3csIGFuZCBub3QgaW4gc2Vjb25kYXJ5IHdpbmRvd3MgbGlrZSBkaWFsb2dzLCB3aXphcmRzLCBhbmQgZmxvYXRpbmcgdmlld3MgDQogICAgKGFub3RoZXIgcGxhbiBpdGVtKS4gRm9yIGV4YW1wbGUsIGN1c3RvbSBlZGl0b3Iga2V5IGJpbmRpbmdzIGRvIG5vdCB3b3JrIGluIA0KICAgIGEgdGV4dCBjb250cm9sIGluIGEgcHJlZmVyZW5jZSBkaWFsb2cuIEVjbGlwc2Ugc2hvdWxkIHN1cHBvcnQgY3VzdG9tIGtleSBiaW5kaW5ncyANCiAgICBpbiB0aGUgcGxhY2VzIHdoZXJlIHRoZSB1c2VyIHJlYXNvbmFibHkgZXhwZWN0cy4gU2Vjb25kLCB0aGUga2V5IGN1c3RvbWl6YXRpb24gDQogICAgZGlhbG9nIHNob3VsZCBiZSBpbXByb3ZlZC4gRmluYWxseSwgbWFrZSBhIHN5c3RlbWF0aWMgcGFzcyB0aHJvdWdoIHRoZSBVSSANCiAgICB0byByYXRpb25hbGl6ZSB0aGUgaW5pdGlhbCBzZXQgb2Yga2V5IGJpbmRpbmdzLiBbUGxhdGZvcm0gVUksIFNXVF0gW1RoZW1lOiANCiAgICBVc2VyIGV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzkzNCI+Mzc5MzQ8L2E+KTwvcD4NCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIGVkaXRvciBtYW5hZ2VtZW50Ljwvc3Ryb25nPiBUaGUgY3VycmVudCBtZWNoYW5pc20gZm9yIHN3aXRjaGluZyBiZXR3ZWVuIGVkaXRvcnMgDQogICAgdXNpbmcgdGFicyBkb2VzIG5vdCBzY2FsZSB0byBoYXZpbmcgbWFueSBvcGVuIGVkaXRvcnMuIEVjbGlwc2Ugc2hvdWxkIHByb3ZpZGUgDQogICAgYSBtb3JlIHNjYWxhYmxlIGFuZCBzdGFibGUsIHlldCBlZmZpY2llbnQsIFVJIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBlZGl0b3JzLiANCiAgICBbUGxhdGZvcm0gVUldIFtUaGVtZTogVXNlciBleHBlcmllbmNlXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NzAiPjM3NjcwPC9hPik8L3A+DQo8L2Jsb2NrcXVvdGU+DQo8YmxvY2txdW90ZT4NCjxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+SW1wcm92ZSANCiAgICB0ZXh0IGVkaXRvciBpbnRlcmFjdGlvbi4gPC9zdHJvbmc+VGhlIHRleHQgZWRpdG9yIHNob3VsZCBzdXBwb3J0IGZvbGRpbmcgb2YgDQogICAgdGV4dCByZWdpb25zLCB3aGljaCBjYW4gYmUgbGV2ZXJhZ2VkIGJ5IHRoZSBKYXZhIGVkaXRvciB0byBjb2xsYXBzZSByZWdpb25zLCANCiAgICBzdWNoIGFzIGFuIGluZGl2aWR1YWwgbWV0aG9kJ3MgYm9keSBvciBKYXZhZG9jIGNvbW1lbnQsIG9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb25zIA0KICAgIG9mIGEgY29tcGlsYXRpb24gdW5pdC4gVGhlIHRleHQgZWRpdG9yIHNob3VsZCBhbHNvIHN1cHBvcnQgc3BsaXR0aW5nIHNvIHRoYXQgDQogICAgdGhlIHVzZXIgY2FuIHNpbXVsdGFuZW91c2x5IHZpZXcgYW5kIGVkaXQgZGlzY29udGlndW91cyByZWdpb25zIG9mIHRoZSBzYW1lIA0KICAgIGRvY3VtZW50LiBbUGxhdGZvcm0gVGV4dCwgSkRUIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjcxIj4zNzY3MTwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KTxzdHJvbmc+IEltcHJvdmUgDQogICAgdGV4dCBlZGl0b3IgcHJlc2VudGF0aW9uLjwvc3Ryb25nPiBUaGUgdGV4dCBlZGl0b3Igc2hvdWxkIHN1cHBvcnQgYW4gb3B0aW9uYWwgDQogICAgbWFyZ2luYWwgY2hhbmdlIGJhciB0aGF0IGNhbiBzaG93IGhvdyB0aGUgY3VycmVudCBkb2N1bWVudCBkaWZmZXJzIGZyb20gYW5vdGhlciANCiAgICBvZiBpdHMgc3RhdGVzLCBzdWNoIGFzIGEgbG9jYWwgaGlzdG9yeSBzdGF0ZSBvciBhIHJlcG9zaXRvcnkgdmVyc2lvbi4gQWxzbywgDQogICAgdGV4dCBlZGl0b3JzIHNob3VsZCBzdXBwb3J0IGZvciBlbXBoYXNpemluZyBhIHRleHQgcmVnaW9uIGJ5IGNoYW5naW5nIGl0cyANCiAgICBiYWNrZ3JvdW5kIGNvbG9yLiBbUGxhdGZvcm0gVGV4dCwgSkRUIFVJXSBbVGhlbWU6IFVzZXIgRXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjcyIj4zNzY3MjwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgdGV4dCBlZGl0b3IgdHlwaW5nLjwvc3Ryb25nPiBUaGUgc2V0IG9mIGtleSBhY3Rpb25zIGF2YWlsYWJsZSBpbiB0aGUgdGV4dCANCiAgICBlZGl0b3Igc2hvdWxkIGJlIGVucmljaGVkIHdpdGggYWRkaXRpb25hbCBjb21tb24gb3BlcmF0aW9ucyBsaWtlIGluc2VydCBsaW5lLCANCiAgICBkdXBsaWNhdGUgbGluZSwgdHJhbnNwb3NlLCBhbmQgY29udmVydCB0byB1cHBlcmNhc2UuIFRoZSBjdXJyZW50IEpEVCBlZGl0b3IgDQogICAgc3VwcG9ydCBmb3IgdGVtcGxhdGVzIHdpdGggdmFyaWFibGVzIHNob3VsZCBiZSBnZW5lcmFsaXplZCBhbmQgcHVzaGVkIGRvd24gDQogICAgc28gdGhhdCBpdCBpcyBhdmFpbGFibGUgaW4gYWxsIHRleHQgZWRpdG9ycy4gW1BsYXRmb3JtIFRleHQsIEpEVCBVSV0gW1RoZW1lOiANCiAgICBVc2VyIGV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY3NCI+Mzc2NzQ8L2E+KTwvcD4NCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIGdsb2JhbCB0ZXh0IHNlYXJjaC9yZXBsYWNlLjwvc3Ryb25nPiBHbG9iYWwgdGV4dCBzZWFyY2ggc2hvdWxkIGFsbG93IHJlZ3VsYXIgDQogICAgZXhwcmVzc2lvbnMgaW4gc2VhcmNoIHBhdHRlcm5zLiBUaGUgcmVwbGFjZSBhY3Rpb24gc2hvdWxkIGJlIG1vcmUgdmlzaWJsZSANCiAgICBpbiB0aGUgVUksIGFuZCBiZSBlYXNpZXIgdG8gdXNlIGluIHRoZSBjYXNlIG9mIGJ1bGsgY2hhbmdlcy4gW1BsYXRmb3JtIFNlYXJjaF0gDQogICAgW1RoZW1lOiBVc2VyIEV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY3NSI+Mzc2NzU8L2E+KTwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBVc2VyIEV4cGVyaWVuY2UgdGhlbWUpPC9oND4NCjxwPlRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyBhcmUgYmVpbmcgYWN0aXZlbHkgaW52ZXN0aWdhdGVkLCBidXQgd2UgYXJlIG5vdCB5ZXQgDQogIGFibGUgdG8gcHJvbWlzZSBhbnkgc29sdXRpb24gZm9yIHRoaXMgcmVsZWFzZTo8L3A+DQoNCjxibG9ja3F1b3RlPiANCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IGV4cGFuZGVkIDIuMSBkZWZlcnJlZCANCiAgICBpdGVtKSA8Yj5BbGxvdyBlZGl0b3JzIHRvIG9wZW4gZmlsZXMgb3V0c2lkZSB3b3Jrc3BhY2UuPC9iPiBBIGNvbW1vbiByZXF1ZXN0IA0KICAgIGlzIHRvIGJlIGFibGUgdG8gdXNlIEVjbGlwc2UgdG8gb3BlbiBhIGZpbGUgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUgd29ya3NwYWNlLCANCiAgICBvciBwZXJoYXBzIGV2ZW4gb25lIG9uIGEgcmVtb3RlIHN5c3RlbS4gSW4gYWRkaXRpb24sIGFwcGxpY2F0aW9ucyB3b3VsZCBsaWtlIA0KICAgIHRvIHByb3ZpZGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRpb25zIHNvIHRoYXQgZG91YmxlLWNsaWNraW5nIG9uIGEgZmlsZSBpbiANCiAgICB0aGUgT1MgZGVza3RvcCB3b3VsZCBvcGVuIHRoZSBhc3NvY2lhdGVkIEVjbGlwc2UgZWRpdG9yLiBUaGUgb3BlcmF0aW9ucyBhbmQgDQogICAgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSBvbiB0aGVzZSAmcXVvdDtvdXRzaWRlIG9mIHRoZSB3b3Jrc3BhY2UmcXVvdDsgZmlsZXMgDQogICAgd291bGQgbmVlZCB0byBiZSBkZWZpbmVkLiBbUGxhdGZvcm0gVUldIFtUaGVtZXM6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3OTM1Ij4zNzkzNTwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5EaXNwbGF5IEhUTUwgDQogICAgaW4gYSB3aWRnZXQuPC9iPiBJbiBFY2xpcHNlIDIuMCBhbmQgMi4xLCB0aGUgb25seSBzdXBwb3J0ZWQgb3B0aW9uIGZvciByZW5kZXJpbmcgDQogICAgSFRNTCBpbiB0aGUgd29ya2JlbmNoIGlzIHRvIHVzZSBPTEUgdG8gbGluayB0byBJRS4gVGhpcyBzdXBwb3J0IGlzIFdpbmRvd3MgDQogICAgb25seTsgdGhlcmUgaXMgbm8gc3VjaCBvcHRpb24gaW4gb3RoZXIgb3BlcmF0aW5nIGVudmlyb25tZW50cy4gRXZlbiBvbiBXaW5kb3dzLCANCiAgICB0aGlzIG9ubHkgd29ya3MgZm9yIElFIGFuZCBub3Qgb3RoZXIgYnJvd3NlcnMuIFRoZXJlIGFyZSBhbHJlYWR5IHNldmVyYWwgRWNsaXBzZSANCiAgICBjb21wb25lbnRzIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tIEhUTUwgZGlzcGxheSBmdW5jdGlvbmFsaXR5IGluIGEgd2lkZ2V0OiANCiAgICB3ZWxjb21lIHBhZ2VzOyB1cGRhdGUgbWFuYWdlciB1cGRhdGUgc2l0ZSBvdmVydmlldzsgaG92ZXJzIHRoYXQgc2hvdyBKYXZhZG9jLiANCiAgICBUaGUgUGxhdGZvcm0gc2hvdWxkIHByb3ZpZGUgYSBwb3J0YWJsZSB3YXkgdG8gZGlzcGxheSBIVE1MIGluIGEgd2lkZ2V0IGFuZCANCiAgICBzdXBwb3J0IGl0IGluIGFsbCBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLiBbUGxhdGZvcm0gVUksIFNXVF0gW1RoZW1lczogVXNlciANCiAgICBleHBlcmllbmNlXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NTIiPjM2OTUyPC9hPik8L3A+DQogICAgDQogIDxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5JbXByb3ZlIHdvcmtzcGFjZSANCiAgICBzeW5jaHJvbml6YXRpb24gd2l0aCBmaWxlIHN5c3RlbS48L2I+IEEgZmlsZSByZXNvdXJjZSBpbiB0aGUgd29ya3NwYWNlIGdldHMgDQogICAgb3V0IG9mIHN5bmMgd2hlbiB0aGUgdW5kZXJseWluZyBmaWxlIGluIHRoZSBmaWxlIHN5c3RlbSBpcyBjcmVhdGVkLCBkZWxldGVkLCANCiAgICBvciByZXdyaXR0ZW4gb3V0c2lkZSBvZiBFY2xpcHNlLiBGaWxlIHJlc291cmNlcyB1c3VhbGx5IHJlbWFpbnMgb3V0IG9mIHN5bmMgDQogICAgdW50aWwgdGhlIHVzZXIgZXhwbGljaXRseSBoaXRzIFJlZnJlc2guIFRoZSBFY2xpcHNlIFBsYXRmb3JtIHNob3VsZCBwcm92aWRlIA0KICAgIHdheXMgdG8ga2VlcCB0aGUgaW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIGluIHN5bmMgd2l0aCB0aGUgZmlsZSBzeXN0ZW07IGZvciANCiAgICBleGFtcGxlLCBieSBob29raW5nIE9TIGZpbGUgc3lzdGVtIGNhbGxiYWNrcyB3aGVyZSBhdmFpbGFibGUsIGFuZCBieSBwb2xsaW5nIA0KICAgIGZvciBmaWxlIHN5c3RlbSBjaGFuZ2VzIGluIGEgYmFja2dyb3VuZCB0aHJlYWQuIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBVSV0gDQogICAgW1RoZW1lOiBVc2VyIGV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk2MiI+MzY5NjI8L2E+KTwvcD4NCiAgICANCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5Db250ZW50LXR5cGUtYmFzZWQgDQogICAgZWRpdG9yIGxvb2t1cC48L3N0cm9uZz4gVGhlIGNob2ljZSBvZiBlZGl0b3IgaXMgY3VycmVudGx5IGJhc2VkIG9uIGZpbGUgbmFtZSANCiAgICBwYXR0ZXJucy4gVGhpcyBpcyBub3QgdmVyeSBmbGV4aWJsZSwgYW5kIGJyZWFrcyBkb3duIHdoZW4gZnVuZGFtZW50YWxseSBkaWZmZXJlbnQgDQogICAgdHlwZXMgb2YgY29udGVudCBhcmUgZm91bmQgaW4gZmlsZXMgd2l0aCB1bmRpc3Rpbmd1aXNoZWQgZmlsZSBuYW1lcyBvciBpbnRlcm5hbCANCiAgICBmb3JtYXRzLiBGb3IgZXhhbXBsZSwgbWFueSBkaWZmZXJlbnQgbW9kZWxzIHdpdGggc3BlY2lhbGl6ZWQgZWRpdG9ycyBnZXQgc3RvcmVkIA0KICAgIGluIFhNTCBmb3JtYXQgZmlsZXMgbmFtZWQgKi54bWwuIEVjbGlwc2Ugc2hvdWxkIHN1cHBvcnQgYSBub3Rpb24gb2YgY29udGVudCANCiAgICB0eXBlIGZvciBmaWxlcyBhbmQgcmVzb3VyY2VzLCBhbmQgdXNlIHRoZXNlIHRvIGRyaXZlIGRlY2lzaW9ucyBsaWtlIHdoaWNoIA0KICAgIGVkaXRvciB0byB1c2UuIFRoaXMgZmVhdHVyZSB3b3VsZCBhbHNvIGJlIHVzZWQgYnkgdGVhbSBwcm92aWRlcnMgd2hlbiBkb2luZyANCiAgICBjb21wYXJpc29ucyBiYXNlZCBvbiBmaWxlIHR5cGUuIFRoZSBzZXZlcmFsIGV4aXN0aW5nIGZpbGUtdHlwZSByZWdpc3RyaWVzIA0KICAgIGluIEVjbGlwc2Ugc2hvdWxkIGJlIGNvbnNvbGlkYXRlZC4gW1BsYXRmb3JtIENvcmUsIFBsYXRmb3JtIFVJXSBbVGhlbWU6IFVzZXIgDQogICAgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjY4Ij4zNzY2ODwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgc3VwcG9ydCBmb3Igb3BlbmluZyB3b3Jrc3BhY2VzLjwvc3Ryb25nPiBNYW55IHVzZXJzIHVzZSBtdWx0aXBsZSB3b3Jrc3BhY2VzIA0KICAgIGFzIGEgd2F5IHRvIGtlZXAgdGhlaXIgZGlmZmVyZW50IHByb2plY3RzIG9yIHdvcmsgaXRlbXMgc2VwYXJhdGUuIEN1cnJlbnRseSwgDQogICAgdGhpcyByZXF1aXJlcyBsYXVuY2hpbmcgRWNsaXBzZSBtdWx0aXBsZSB0aW1lcyB3aXRoIGRpZmZlcmVudCBjb21tYW5kIGxpbmUgDQogICAgYXJndW1lbnRzLCB3aGljaCBpcyBub3QgcGFydGljdWxhcmx5IGNvbnZlbmllbnQgZm9yIHVzZXJzLiBNb3Jlb3Zlciwgd2hlbiANCiAgICB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB3b3Jrc3BhY2UgbG9jYXRpb24gZGVmYXVsdHMgDQogICAgdG8gYSBkaXJlY3RvcnkgaW5zaWRlIHdoZXJlIHRoZSBjb2RlIGZvciBFY2xpcHNlIGlzIGluc3RhbGxlZC4gRWNsaXBzZSBzaG91bGQgDQogICAgaW1wcm92ZSBob3cgd29ya3NwYWNlcyBnZXQgb3BlbmVkLCB1c2UgYSB1c2VyLXNwZWNpZmljIGRlZmF1bHQgd29ya3NwYWNlIGxvY2F0aW9uIA0KICAgIG1vcmUgc3VpdGFibGUgZm9yIHNoYXJlZCBtdWx0aS11c2VyIEVjbGlwc2UgaW5zdGFsbHMsIGFuZCBmYWNpbGl0YXRlIHN3aXRjaGluZyANCiAgICBiZXR3ZWVuIHdvcmtzcGFjZXMuIFtQbGF0Zm9ybSBDb3JlLCBQbGF0Zm9ybSBVSV0gW1RoZW1lczogVXNlciBleHBlcmllbmNlXSANCiAgICAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODEiPjM3NjgxPC9hPik8L3A+DQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPlByb3ZpZGUgYSANCiAgICBnZW5lcmFsIHB1cnBvc2UgbmF2aWdhdG9yLjwvYj4gVGhlIEVjbGlwc2UgTmF2aWdhdG9yJm5ic3A7dmlldyBwcmVzZW50cyBhIA0KICAgIHZpZXcgb2YgcmVzb3VyY2VzIGluIHRoZSB3b3Jrc3BhY2UuIFRoZSBFY2xpcHNlIFBsYXRmb3JtIHNob3VsZCBwcm92aWRlIGEgDQogICAgbW9yZSBmbGV4aWJsZSwgZ2VuZXJhbCBwdXJwb3NlLCBleHRlbnNpYmxlIG5hdmlnYXRvciBpbmZyYXN0cnVjdHVyZSB0aGF0IHdvdWxkIA0KICAgIG1ha2UgaXQgcG9zc2libGUgdG8gc2hvdyBvdGhlciBvYmplY3RzIGFzIHdlbGwgKGxpa2UgYW4gdGhlIGV4dGVuZGVkIHBoeXNpY2FsIA0KICAgIHZpZXcgcHJvdmlkZWQgYnkgV2luZG93cyBFeHBsb3JlcikuIFtQbGF0Zm9ybSBVSSwgSkRUIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gDQogICAgKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTYxIj4zNjk2MTwvYT4pPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QsIFVzZXIgRXhwZXJpZW5jZSB0aGVtZSk8L2g0Pg0KPHA+VGhlc2UgaXRlbXMgYXJlIG5leHQgaW4gbGluZSBmb3IgdGhpcyByZWxlYXNlLiBBcyBjb21taXR0ZXJzIGNvbXBsZXRlIHRoZWlyIA0KICBhc3NpZ25lZCB0YXNrcywgb3IgYWRkaXRpb25hbCBoZWxwIGJlY29tZXMgYXZhaWxhYmxlLCBzb21lIG9mIHRoZXNlIGl0ZW1zIG1heSANCiAgYmUgY29tbWl0dGVkIGZvciB0aGlzIHJlbGVhc2U6PC9wPg0KPGJsb2NrcXVvdGU+IA0KICA8cD4oMi4xIGRlZmVycmVkIGl0ZW0pIDxiPkFkZCBjaGVhdCBzaGVldHMgPC9iPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk0NiI+MzY5NDY8L2E+KTxicj4NCiAgICAoMi4xIGRlZmVycmVkIGl0ZW0pIDxiPkFkZCB0YWJsZSBvZiBjb250ZW50cyBzdXBwb3J0IHRvIHdpemFyZHMgPC9iPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk0NyI+MzY5NDc8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gZXhwYW5kZWQgMi4xIFBERSBkZWZlcnJlZCANCiAgICBpdGVtKSA8Yj5BZGQgcHJvamVjdCB0ZW1wbGF0ZXMgPC9iPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk2MCI+MzY5NjA8L2E+KSANCiAgICA8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+QWxsb3cgYXV0b21hdGlvbiANCiAgICBvZiBjb21tb24gdGFza3M8L2I+ICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzkzNiI+Mzc5MzY8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5TdXBwb3J0IHdvcmtzcGFjZSANCiAgICBjaGVja3BvaW50IGFuZCByb2xsYmFjayA8L2I+ICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk1OCI+MzY5NTg8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkFsbG93IA0KICAgIGR5bmFtaWMgaGVscCBjb250ZW50IDwvc3Ryb25nPiAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NzYiPjM3Njc2PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5EaXNwbGF5IA0KICAgIEhUTUwgaGVscCBpbmZvcG9wcyA8L3N0cm9uZz4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NzciPjM3Njc3PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+QWRkIGNhcGFiaWxpdGllcyANCiAgICA8L2I+KDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTU5Ij4zNjk1OTwvYT4pPGJyPg0KICAgICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPlNpbXBsaWZ5IHVwZGF0ZSANCiAgICBtYW5hZ2VyIFVJIDwvYj4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NzgiPjM3Njc4PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIGxvY2FsIGhpc3RvcnkgPC9zdHJvbmc+ICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY3OSI+Mzc2Nzk8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkFkZCBFY2xpcHNlIA0KICAgIGF1dG9tYXRpb24gPC9zdHJvbmc+KDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjgwIj4zNzY4MDwvYT4pPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9IlRoZW1lUmVzcG9uc2l2ZVVJIj5UaGVtZTogUmVzcG9uc2l2ZSBVSTwvYT48L2gzPg0KPHA+TWFraW5nIGl0IGVhc2llciB0byB3cml0ZSBFY2xpcHNlIHBsdWctaW5zIHRoYXQga2VlcCB0aGUgVUkgcmVzcG9uc2l2ZS4gQXJlYXMgDQogIGZvciBpbXByb3ZlbWVudCBydW4gdGhlIGdhbXV0IGZyb20gdGhlIFVJIGJlY29taW5nIHNsdWdnaXNoIChvciB0ZW1wb3JhcmlseSANCiAgZnJlZXppbmcpIHdoZW4gYmxvY2tpbmcgb3BlcmF0aW9ucyBhcmUgZG9uZSBpbiB0aGUgVUkgdGhyZWFkLCB0byBsb25nLXJ1bm5pbmcgDQogIG9wZXJhdGlvbnMgbGlrZSBidWlsZHMgYW5kIHNlYXJjaGVzIHdoaWNoIGNvdWxkIGJlIHBlcmZvcm1lZCBpbiB0aGUgYmFja2dyb3VuZCANCiAgd2hpbGUgdGhlIHVzZXIgY29udGludWVzIHRvIHdvcmsuPC9wPg0KPGg0PkNvbW1pdHRlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBSZXNwb25zaXZlIFVJIHRoZW1lKTwvaDQ+DQogIA0KPGJsb2NrcXVvdGU+IA0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5TdXBwb3J0IGNvbmN1cnJlbnQgDQogICAgYWN0aXZpdGllcy48L2I+IEluIEVjbGlwc2UgMi4wIGFuZCAyLjEsIGNlcnRhaW4gb3BlcmF0aW9ucyBsaWtlIGJ1aWxkcyBhbmQgDQogICAgc2VhcmNoZXMgYWx3YXlzIHJ1biBzeW5jaHJvbm91c2x5IGFuZCBibG9jayB0aGUgdXNlciBhdCB0aGUgVUkgZnJvbSBkb2luZyANCiAgICB3b3JrIHVudGlsIHRoZSBidWlsZCBoYXMgY29tcGxldGVkLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSBzaG91bGQgc3VwcG9ydCBvcGVyYXRpb25zIA0KICAgIHJ1bm5pbmcgYXN5bmNocm9ub3VzbHkgaW4gdGhlIGJhY2tncm91bmQsIHNvIHRoYXQgdGhlIHVzZXIgaXMgbm90IGZvcmNlZCB0byANCiAgICBiZSBlbnRpcmVseSBpZGxlIHdoaWxlIGxvbmctcnVubmluZyBvcGVyYXRpb25zIGFyZSBpbiBwcm9ncmVzcy4gVGhpcyB3aWxsIA0KICAgIGxpa2VseSByZXF1aXJlIGFuIGltcHJvdmVkIGNvbmN1cnJlbmN5IGFyY2hpdGVjdHVyZSB3aXRoIG1vcmUgZXhwbGljaXQgcnVsZXMuIA0KICAgIFtQbGF0Zm9ybSBVSSwgUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVGV4dCwgSkRUIENvcmUsIEpEVCBVSSwgUERFXSBbVGhlbWU6IA0KICAgIFJlc3BvbnNpdmUgVUldICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk1NyI+MzY5NTc8L2E+KTwvcD4NCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5Fc3RhYmxpc2ggDQogICAgVUkgcmVzcG9uc2l2ZW5lc3MgdGFyZ2V0cy48L3N0cm9uZz4gRWNsaXBzZSBzaG91bGQgZXN0YWJsaXNoIHF1YW50aXRhdGl2ZSANCiAgICByZXNwb25zaXZlbmVzcyB0YXJnZXRzIGZvciBrZXkgdXNlciBhY3Rpb25zLCBzdWNoIGFzIG9wZW5pbmcgYW4gZWRpdG9yLCBwb3BwaW5nIA0KICAgIHVwIGEgdmlldyBjb250ZXh0IG1lbnUsIHN3aXRjaGluZyBwZXJzcGVjdGl2ZXMsIGV0Yy4gVGhlc2UgZ3VpZGVsaW5lcyBzaG91bGQgDQogICAgYmUgc3VwcG9ydGVkIGJ5IGF1dG9tYXRlZCBiZW5jaG1hcmtzIHRoYXQgYWxsb3cgdGhlIHJlc3BvbnNpdmVuZXNzIG9mIHRoZSANCiAgICBFY2xpcHNlIFVJIHRvIGJlIG1lYXN1cmVkIGFuZCB0cmFja2VkLiBbUGxhdGZvcm0sIEpEVCwgUERFXSBbVGhlbWU6IFJlc3BvbnNpdmUgDQogICAgVUldICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY4MiI+Mzc2ODI8L2E+KTwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBSZXNwb25zaXZlIFVJIHRoZW1lKTwvaDQ+DQo8cD5UaGUgZm9sbG93aW5nIHdvcmsgaXRlbXMgYXJlIGJlaW5nIGFjdGl2ZWx5IGludmVzdGlnYXRlZCwgYnV0IHdlIGFyZSBub3QgeWV0IA0KICBhYmxlIHRvIHByb21pc2UgYW55IHNvbHV0aW9uIGZvciB0aGlzIHJlbGVhc2U6PC9wPg0KPGJsb2NrcXVvdGU+IA0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkFkZHJlc3MgDQogICAgcGxhdGZvcm0tc3BlY2lmaWMgVUkgcGVyZm9ybWFuY2UgcHJvYmxlbXMuPC9zdHJvbmc+IFRoZXJlIGlzIGEgbm90aWNhYmxlIFVJIA0KICAgIHBlcmZvcm1hbmNlIGFuZCByZXNwb25zaXZlbmVzcyBkaWZmZXJlbmNlIGJldHdlZW4gRWNsaXBzZSBydW5uaW5nIG9uIFdpbmRvd3MgDQogICAgYW5kIEVjbGlwc2UgcnVubmluZyBvbiBMaW51eCBHVEssIExpbnV4IE1vdGlmLCBvciBRTlggUGhvdG9uLCBhbGwgb24gdGhlIHNhbWUgDQogICAgaGFyZHdhcmUsIHdpdGggV2luZG93cyBjbGVhcmx5IG91dHBlcmZvcm1pbmcgdGhlIG90aGVycy4gSW1wcm92ZW1lbnRzIG1hZGUgDQogICAgdG8gU1dUIGFsb25lIGhhdmUgbm90IHJlZHVjZWQgdGhpcyAmcXVvdDtwZXJmb3JtYW5jZSBnYXAmcXVvdDsgZW5vdWdoLiBJbiANCiAgICBvcmRlciB0byBpbXByb3ZlIEVjbGlwc2UgcGVyZm9ybWFuY2UgaW4gdGhlIG90aGVyIG9wZXJhdGluZyBlbnZpcm9ubWVudHMsIA0KICAgIHdlIG5lZWQgdG8gbWFrZSBhIGNvbmNlcnRlZCBlZmZvcnQgdG8gZGV0ZXJtaW5lIHRoZSByb290IGNhdXNlcyAoc3VzcGVjdHMgDQogICAgaW5jbHVkZSBsb3ctbGV2ZWwgdGhyZWFkIHNjaGVkdWxpbmcgYW5kIHN5bmNocm9uaXphdGlvbiksIGFuZCB0aGVuIHRha2Ugc3RlcHMgDQogICAgdG8gYWRkcmVzcyB0aGVtLiBbU1dULCBQbGF0Zm9ybSBVSV0gW1RoZW1lOiBSZXNwb25zaXZlIFVJXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODMiPjM3NjgzPC9hPik8L3A+DQogIDwvYmxvY2txdW90ZT4NCjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBSZXNwb25zaXZlIFVJIHRoZW1lKTwvaDQ+DQo8cD5UaGVzZSBpdGVtcyBhcmUgbmV4dCBpbiBsaW5lIGZvciB0aGlzIHJlbGVhc2UuIEFzIGNvbW1pdHRlcnMgY29tcGxldGUgdGhlaXIgDQogIGFzc2lnbmVkIHRhc2tzLCBvciBhZGRpdGlvbmFsIGhlbHAgYmVjb21lcyBhdmFpbGFibGUsIHNvbWUgb2YgdGhlc2UgaXRlbXMgbWF5IA0KICBiZSBjb21taXR0ZWQgZm9yIHRoaXMgcmVsZWFzZTo8L3A+DQo8YmxvY2txdW90ZT4gDQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkltcHJvdmUgdXBkYXRlIA0KICAgIG1hbmFnZXIgc2VhcmNoPC9iPiAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODQiPjM3Njg0PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIHNjYWxhYmlsaXR5IGZvciBsYXJnZSBoZWxwIGJvb2tzIDwvc3Ryb25nPiAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODUiPjM3Njg1PC9hPik8L3A+DQogIDwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJUaGVtZVJDUCI+VGhlbWU6IFJpY2ggY2xpZW50IHBsYXRmb3JtPC9hPjwvaDM+DQo8cD5FY2xpcHNlIHdhcyBkZXNpZ25lZCBhcyBhIHVuaXZlcnNhbCB0b29sIGludGVncmF0aW9uIHBsYXRmb3JtLiBIb3dldmVyLCBtYW55IA0KICBmYWNldHMgYW5kIGNvbXBvbmVudHMgb2YgRWNsaXBzZSBhcmUgbm90IHBhcnRpY3VsYXJseSBzcGVjaWZpYyB0byBJREVzIGFuZCBtYWtlIA0KICBlcXVhbCBzZW5zZSBpbiBub24tSURFIGFwcGxpY2F0aW9ucyAoZS5nLiwgd2luZG93LWJhc2VkIEdVSSwgcGx1Zy1pbnMsIGhlbHAgDQogIHN5c3RlbSwgdXBkYXRlIG1hbmFnZXIpLiBDZXJ0YWluIGNoYW5nZXMsIGxpa2UgZmFjdG9yaW5nIG91dCBJREUtc3BlY2lmaWMgZmFjaWxpdGllcywgDQogIHdvdWxkIGFsbG93IHRoZSBFY2xpcHNlIFBsYXRmb3JtIHRvIGJlIGdlbmVyYWxpemVkIGludG8gYSByaWNoIGNsaWVudCBwbGF0Zm9ybSANCiAgZm9yIGJ1aWxkaW5nIG5vbi1JREUgYXBwbGljYXRpb25zLjwvcD4NCjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCwgUmljaCBDbGllbnQgUGxhdGZvcm0gdGhlbWUpPC9oND4NCjxibG9ja3F1b3RlPiANCiAgICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj48L2I+IDxiPkVuYWJsZSANCiAgICAgIEVjbGlwc2UgdG8gYmUgdXNlZCBhcyBhIHJpY2ggY2xpZW50IHBsYXRmb3JtLjwvYj4gRWNsaXBzZSB3YXMgZGVzaWduZWQgYXMgDQogICAgICBhIHVuaXZlcnNhbCB0b29sIGludGVncmF0aW9uIHBsYXRmb3JtLiBIb3dldmVyLCBtYW55IGZhY2V0cyBhbmQgY29tcG9uZW50cyANCiAgICAgIG9mIEVjbGlwc2UgYXJlIG5vdCBwYXJ0aWN1bGFybHkgc3BlY2lmaWMgdG8gSURFcyBhbmQgd291bGQgbWFrZSBlcXVhbCBzZW5zZSANCiAgICAgIGluIG5vbi1JREUgYXBwbGljYXRpb25zIChlLmcuLCB3aW5kb3ctYmFzZWQgR1VJLCBwbHVnLWlucywgaGVscCBzeXN0ZW0sIA0KICAgICAgdXBkYXRlIG1hbmFnZXIpLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSBzaG91bGQgZmFjdG9yIG91dCBhbmQgc2VncmVnYXRlIElERS1zcGVjaWZpYyANCiAgICAgIGZhY2lsaXRpZXMgKGUuZy4sIGV2ZXJ5dGhpbmcgaGF2aW5nIHRvIGRvIHdpdGggd29ya3NwYWNlIHJlc291cmNlcykgc28gdGhhdCANCiAgICAgIGEgc3Vic2V0IG9mIGl0IGNhbiBiZSB1c2VkIGFzIGEgcmljaCBjbGllbnQgcGxhdGZvcm0gZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucy4gDQogICAgICBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUksIFBsYXRmb3JtIFVwZGF0ZV0gW1RoZW1lOiBSaWNoIGNsaWVudCBwbGF0Zm9ybV0gDQogICAgICAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NjciPjM2OTY3PC9hPik8L3A+DQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPlByb3ZpZGUgdXNlciANCiAgICBzZXR0aW5ncy48L2I+IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBzdG9yZSB1c2VyIHNldHRpbmdzIChwcmVmZXJlbmNlcywgY29tcGlsZXIgDQogICAgc2V0dGluZ3MsIHJlcG9zaXRvcmllcyBsaXN0cywgZXRjLikgdGhhdCBhcmUgbm90IHNwZWNpZmljIHRvIGEgd29ya3NwYWNlIHNlcGFyYXRlIA0KICAgIGZyb20gdGhlIHdvcmtzcGFjZSwgc28gdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGluIG90aGVyIHdvcmtzcGFjZXMgb3IgYnkgb3RoZXIgDQogICAgdXNlcnMuIFtQbGF0Zm9ybSBDb3JlXSBbVGhlbWVzOiBSaWNoIGNsaWVudCBwbGF0Zm9ybV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTY1Ij4zNjk2NTwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlJlbW92ZSANCiAgICBjb25maWd1cmF0aW9uIHN0YXRlIGZyb20gd29ya3NwYWNlIG1ldGFkYXRhIGFyZWEuPC9zdHJvbmc+IEZlYXR1cmUgYW5kIHBsdWctaW4gDQogICAgY29uZmlndXJhdGlvbiBzdGF0ZSBpcyBjdXJyZW50bHkgc3RvcmVkIGluIHRoZSBtZXRhZGF0YSBzdWJkaXJlY3Rvcnkgb2YgZWFjaCANCiAgICB3b3Jrc3BhY2UuIFRoaXMgaGFzIHRoZSBkcmF3YmFjayB0aGF0IHByb2R1Y3QgY29uZmlndXJhdGlvbiBhY3Rpb25zIGRvbmUgaW4gDQogICAgb25lIHdvcmtzcGFjZSBkbyBub3QgY2Fycnkgb3ZlciB0byBvdGhlciB3b3Jrc3BhY2VzLiBDb25maWd1cmF0aW9uIHN0YXRlIHNob3VsZCANCiAgICBiZSBtb3ZlZCBvdXQgb2YgdGhlIHdvcmtzcGFjZSBpbnRvIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSAoc2luZ2xlLXVzZXIgaW5zdGFsbHMpIA0KICAgIG9yIHRvIGEgZGVkaWNhdGVkIHJlYWQtd3JpdGUgcHJvZHVjdCBjb25maWd1cmF0aW9uIGFyZWEgKHNoYXJlZCBtdWx0aS11c2VyIA0KICAgIGluc3RhbGxzKS4gVGhpcyB3b3VsZCBtZWFuIHRoYXQgY29uZmlndXJhdGlvbiBzdGF0ZXMgd291bGQgYmUgaW4gYSBrbm93biBsb2NhdGlvbiANCiAgICBmb3IgZXh0ZXJuYWwgdG9vbHMgdG8gZmluZC4gRGlmZmVyZW50IHdvcmtzcGFjZXMgbWlnaHQgc3RpbGwgaGF2ZSBkaWZmZXJlbnQgDQogICAgY29uZmlndXJhdGlvbnMsIHdoaWNoIGNvdWxkIGJlIGFjaGlldmVkIGJ5IHJlZmVyZW5jaW5nIGEgbmFtZWQgY29uZmlndXJhdGlvbiANCiAgICBzdGF0ZSBzdG9yZWQgY2VudHJhbGx5LiBbUGxhdGZvcm0gVXBkYXRlXSBbVGhlbWU6IFJpY2ggY2xpZW50IHBsYXRmb3JtXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODYiPjM3Njg2PC9hPik8L3A+DQogIDwvYmxvY2txdW90ZT4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBSaWNoIENsaWVudCBQbGF0Zm9ybSB0aGVtZSk8L2g0Pg0KPHA+VGhlIGZvbGxvd2luZyB3b3JrIGl0ZW1zIGFyZSBiZWluZyBhY3RpdmVseSBpbnZlc3RpZ2F0ZWQsIGJ1dCB3ZSBhcmUgbm90IHlldCANCiAgYWJsZSB0byBwcm9taXNlIGFueSBzb2x1dGlvbiBmb3IgdGhpcyByZWxlYXNlOjwvcD4NCjxibG9ja3F1b3RlPiANCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5TdXBwb3J0IA0KICAgIGFkZGluZyBhbmQgcmVtb3ZpbmcgcGx1Zy1pbnMgZHluYW1pY2FsbHkuPC9zdHJvbmc+IEluc3RhbGxhdGlvbiBhbmQgY29uZmlndXJhdGlvbiANCiAgICBvZiBmZWF0dXJlcyBhbmQgcGx1Zy1pbnMgY3VycmVudGx5IG9ubHkgaGFwcGVucyBkdXJpbmcgRWNsaXBzZSBQbGF0Zm9ybSBzdGFydHVwLiANCiAgICBUaGUgcGx1Zy1pbiByZWdpc3RyeSBzaG91bGQgYmUgbWFkZSBkeW5hbWljIHNvIHRoYXQgZmVhdHVyZXMgYW5kIHBsdWctaW5zIA0KICAgIGNhbiBiZSBhZGRlZCBvciByZW1vdmVkIHdpdGhvdXQgbmVjZXNzYXJpbHkgaGF2aW5nIHRvIHJlc3RhcnQgRWNsaXBzZS4gVGhpcyANCiAgICB3aWxsIGFsc28gZW50YWlsIGFkZGluZyBtZWNoYW5pc21zIGZvciBoYW5kbGluZyB0aGUgYXJyaXZhbCBhbmQgZGVwYXJ0dXJlIA0KICAgIG9mIGV4dGVuc2lvbnMgYW5kIGV4dGVuc2lvbiBwb2ludHMuIEFkZGl0aW9uYWwgbWVjaGFuaXNtcyBzdWNoIGFzIHNlcnZpY2VzIA0KICAgIHdpbGwgYmUgYWRkZWQgdG8gc3VwcG9ydCB0aGUgZHluYW1pYyBwcm9ncmFtbWluZyBtb2RlbC4gQWx0ZXJuYXRpdmUgcnVudGltZXMgDQogICAgKGUuZy4sIE9TR2kpIHdoaWNoIG9mZmVyIGV4cGxpY2l0IHN1cHBvcnQgZm9yIGR5bmFtaWMgY29tcG9uZW50cyB3aWxsIGFsc28gDQogICAgYmUgaW52ZXN0aWdhdGVkIGFuZCB1c2VkIGFzIGFwcHJvcHJpYXRlLiBQbHVnLWluIGRldmVsb3BlcnMgd2lsbCBsaWtlbHkgcmVxdWlyZSANCiAgICBhZGRpdGlvbmFsIHN1cHBvcnQgZnJvbSBQREUgaW4gd3JpdGluZyBhbmQgZGVidWdnaW5nIHdlbGwtYmVoYXZlZCBkeW5hbWljIA0KICAgIHBsdWctaW5zLiBbUGxhdGZvcm0gQ29yZSwgUERFXSBbVGhlbWU6IFJpY2ggY2xpZW50IHBsYXRmb3JtXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2ODciPjM3Njg3PC9hPik8L3A+DQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+QWxsb3cgDQogICAgcGx1Zy1pbiBkZWFjdGl2YXRpb24uPC9zdHJvbmc+IEluIG9yZGVyIHRvIHNjYWxlIHRvIGEgbGFyZ2UgbnVtYmVyIG9mIHBsdWctaW5zLCANCiAgICBFY2xpcHNlIGRvZXMgbm90IGFjdGl2YXRlIGEgcGx1Zy1pbiB1bnRpbCBpdHMgY29kZSBpcyBhY3R1YWxseSBuZWVkZWQuIEhvd2V2ZXIsIA0KICAgIG9uY2UgYWN0aXZhdGVkIGEgcGx1Zy1pbiByZW1haW5zIGFjdGl2ZSBmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgc2Vzc2lvbi4gDQogICAgVW5mb3J0dW5hdGVseSwgdGhpcyBtZWFucyB0aGF0IGFuIGFjdGl2ZSBwbHVnLWluIHdpbGwgb2NjdXB5IG1lbW9yeSBzcGFjZSANCiAgICBmb3IgaXRzIGNvZGUgYW5kIG9iamVjdHMgZXZlbiBpZiBpdCBpcyBvbmx5IHVzZWQgb2NjYXNpb25hbGx5LiBNYW55IHVzZXJzIA0KICAgIGhhdmUgc2Vzc2lvbnMgbGFzdGluZyBkYXlzIG9yIHdlZWtzLCBhbmQgdGhpcyBibG9hdCB0YXhlcyBwcm9jZXNzb3IgbWVtb3J5IA0KICAgIGFuZCBKVk0gcGVyZm9ybWFuY2UuIFRoZSBhbmFsb2d5IGlzIGEgbG9uZyBwbGF5IHdoZXJlIHRoZSBhY3RvcnMgZW50ZXIgdGhlIA0KICAgIHN0YWdlIG9uIGN1ZSwgYnV0IGNhbm5vdCBsZWF2ZSBpdCB1bnRpbCB0aGUgcGxheSBpcyBvdmVyLiBUaGUgRWNsaXBzZSBQbGF0Zm9ybSANCiAgICBzaG91bGQgc3VwcG9ydCBwbHVnLWlucyB0aGF0IGNhbiBiZSBzYWZlbHkgZGVhY3RpdmF0ZWQgd2hlbiB0aGUgdXNlciBuZWVkcyANCiAgICB0byByZWNvdmVyIHZhbHVhYmxlIG1lbW9yeSBzcGFjZS4gQW5vdGhlciBhbHRlcm5hdGl2ZSBpcyB0byBwcm92aWRlIGEgd2F5IA0KICAgIHRvIHF1aWV0bHkgc2h1dGRvd24gYW5kIHJlc3RhcnQgdGhlIFBsYXRmb3JtLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVUldIA0KICAgIFtUaGVtZTogUmljaCBjbGllbnQgcGxhdGZvcm1dICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk1NiI+MzY5NTY8L2E+KTwvcD4NCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5BZGQgYSANCiAgICBzZWN1cml0eSBtb2RlbC48L3N0cm9uZz4gU2VjdXJpdHkgbmVlZHMgYXJlIHBlcnZhc2l2ZS4gVGhlIEVjbGlwc2UgUGxhdGZvcm0gDQogICAgc2hvdWxkIHByb3ZpZGUgdGhlIGJhc2ljIGZyYW1ld29yayBmb3IgYSBzZWN1cml0eSBtZWNoYW5pc20gdGhhdCBjYW4gYmUgdXNlZCANCiAgICBieSBhbGwgcGx1Zy1pbnMsIGluY2x1ZGluZyBhIHNpbXBsZSBjcmVkZW50aWFscyBzdG9yZSBhbmQgdXNlciBhdXRoZW50aWNhdGlvbi4gDQogICAgQWRkaXRpb25hbGx5LCBrZXkgcGFydHMgb2YgdGhlIFBsYXRmb3JtIGl0c2VsZiBzaG91bGQgYmUgc2VjdXJlZCwgc3VjaCBhcyANCiAgICB0aGUgYWJpbGl0eSB0byBpbnN0YWxsIHBsdWctaW5zLCB3aGljaCBtaWdodCBuZWVkIHRvIGJlIHJlc3RyaWN0ZWQgaW4gY2VydGFpbiANCiAgICBwcm9kdWN0cyBvciBmb3IgY2VydGFpbiB1c2Vycy4gW1BsYXRmb3JtIENvcmUsIFBsYXRmb3JtIFVwZGF0ZV0gW1RoZW1lOiBSaWNoIA0KICAgIGNsaWVudCBwbGF0Zm9ybV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjkyIj4zNzY5MjwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlN1cHBvcnQgDQogICAgcHJvZHVjdCBicmFuZGluZy48L3N0cm9uZz4gRWNsaXBzZS1iYXNlZCBwcm9kdWN0cyBuZWVkIHRoZSBhYmlsaXR5IHRvIGFkb3B0IA0KICAgIGEgcHJvZHVjdC1zcGVjaWZpYyBsb29rIGFuZC9vciBhcHBseSBjb3Jwb3JhdGUgYnJhbmRpbmcuIEVjbGlwc2Ugc2hvdWxkIHByb3ZpZGUgDQogICAgbWVjaGFuaXNtcyB0byBhbGxvdyBzdWNoIGN1c3RvbWl6YXRpb24uIFRoaXMgbXVzdCBiZSBkb25lIGluIHN1Y2ggYSB3YXkgdGhhdCANCiAgICBwbHVnLWlucyBjYW4gYmUgZGV2ZWxvcGVkIGluZGVwZW5kZW50IG9mIGFueSBwYXJ0aWN1bGFyIGxvb2ssIGFuZCBjYW4gYmUgc2hhcmVkIA0KICAgIGFjcm9zcyBwcm9kdWN0cyB3aXRoIGRpZmZlcmVudCBsb29rcy4gW1BsYXRmb3JtIFVJLCBTV1RdIFtUaGVtZTogUmljaCBjbGllbnQgDQogICAgcGxhdGZvcm1dICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY5MyI+Mzc2OTM8L2E+KTwvcD4NCiAgPC9ibG9ja3F1b3RlPg0KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QsIFJpY2ggQ2xpZW50IFBsYXRmb3JtIHRoZW1lKTwvaDQ+DQo8cD5UaGVzZSBpdGVtcyBhcmUgbmV4dCBpbiBsaW5lIGZvciB0aGlzIHJlbGVhc2UuIEFzIGNvbW1pdHRlcnMgY29tcGxldGUgdGhlaXIgDQogIGFzc2lnbmVkIHRhc2tzLCBvciBhZGRpdGlvbmFsIGhlbHAgYmVjb21lcyBhdmFpbGFibGUsIHNvbWUgb2YgdGhlc2UgaXRlbXMgbWF5IA0KICBiZSBjb21taXR0ZWQgZm9yIHRoaXMgcmVsZWFzZTo8L3A+DQo8YmxvY2txdW90ZT4gDQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPlByb3ZpZGUgdXBkYXRlIA0KICAgIG1hbmFnZXIgb3BlcmF0aW9ucyBBUEkgPC9iPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY4OCI+Mzc2ODg8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5BbGxvdyB1bmluc3RhbGxpbmcgDQogICAgZmVhdHVyZXMgPC9iPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY4OSI+Mzc2ODk8L2E+KTwvcD4NCiAgPC9ibG9ja3F1b3RlPg0KPGgzPjxhIG5hbWU9Ik90aGVyUGxhdGZvcm0iPk90aGVyIEVjbGlwc2UgUGxhdGZvcm0gSXRlbXM8L2E+PC9oMz4NCjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgUGxhdGZvcm0gc3VicHJvamVjdCwgbm8gdGhlbWUpPC9oND4NCjxibG9ja3F1b3RlPiANCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIFNXVCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQuPC9zdHJvbmc+IEluIEVjbGlwc2UgMi4xLCBTV1QgY29udHJvbHMgdGFwIGluIHRvIA0KICAgIHRoZSBNU0FBIDEuMyBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQsIGFsbG93aW5nIGFjY2Vzc2libGUgVUlzIHRvIGJlIGJ1aWx0IHdpdGggDQogICAgU1dUIG9uIFdpbmRvd3MuIFNXVCBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgc2hvdWxkIGJlIGV4dGVuZGVkIHRvIEdUSyBvcGVyYXRpbmcgDQogICAgZW52aXJvbm1lbnRzLCBhbmQgdXBkYXRlZCBvbiBXaW5kb3dzIGZvciBNU0FBIDIuMC4gW1NXVF0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3Njk0Ij4zNzY5NDwvYT4pPC9wPg0KICAgIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkltcHJvdmUgDQogICAgICBhY3Rpb24gY29udHJpYnV0aW9ucy48L2I+IFRoZSBjdXJyZW50IGFjdGlvbiBjb250cmlidXRpb24gc3RvcnkgaXMgZGl2ZXJzZSANCiAgICAgIGFuZCBjb21wbGV4LCBhbmQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIGtleSBiaW5kaW5ncyBhbmQgcmV0YXJnZXRhYmxlIA0KICAgICAgYWN0aW9ucywgdW5jbGVhci4gRWNsaXBzZSBzaG91bGQgdW5pZnkgdGhlIGFjdGlvbiBjb250cmlidXRpb24gc3VwcG9ydCwgDQogICAgICBwcm92aWRlIHNpbXBsaWZpZWQgc3VwcG9ydCBmb3Iga2V5IGJpbmRpbmdzLCBhbmQgY2xhcmlmeSB0aGUgaW50ZXJhY3Rpb25zIA0KICAgICAgYmV0d2VlbiBrZXkgYmluZGluZ3MgYW5kIHJldGFyZ2V0YWJsZSBhY3Rpb25zLiBFY2xpcHNlIHNob3VsZCBhbHNvIHN1cHBvcnQgDQogICAgICBuZXcgdHlwZXMgb2YgYWN0aW9ucyBjb250cmlidXRpb25zLCBzdWNoIGFzIGNvbWJvIGJveGVzIGluIHRvb2xiYXJzLCBhbmQgDQogICAgICBlbmFibGUgYWRkaXRpb25hbCBVSSBjdXN0b21pemF0aW9uLiBbUGxhdGZvcm0gVUldICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk2OCI+MzY5Njg8L2E+KTwvcD4NCiAgPHA+KDIuMSBkZWZlcnJlZCBpdGVtKSA8Yj5JbXByb3ZlIFNXVCBzdXBwb3J0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlcy48L2I+Jm5ic3A7QWxsb3cgDQogICAgdGhlIGFwcHJvcHJpYXRlIHdpZGdldCBvcmllbnRhdGlvbiBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXMuIFtTV1RdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk1MSI+MzY5NTE8L2E+KTwvcD4NCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIFVJIGd1aWRlbGluZXMuPC9zdHJvbmc+IFRoZSBjdXJyZW50IEVjbGlwc2UgVUkgZ3VpZGVsaW5lcyBhcmUgc29tZXdoYXQgZGF0ZWQgDQogICAgYW5kIGRvIG5vdCBjb3ZlciBhcyBtdWNoIGFzIHRoZXkgbmVlZCB0by4gRWNsaXBzZSBzaG91bGQgcHJvdmlkZSBjb21wcmVoZW5zaXZlIA0KICAgIFVJIGd1aWRlbGluZXMgc28gdGhhdCBwbHVnLWluIGRldmVsb3BlcnMgY2FuIGNyZWF0ZSBwbHVnLWlucyB3aXRoIFVJcyB0aGF0IA0KICAgIGZpdCB3ZWxsIGludG8gdGhlIG92ZXJhbGwgRWNsaXBzZSB3b3JrYmVuY2ggKGEgc3Vic2V0IG9mIHRoZXNlIGd1aWRlbGluZXMgDQogICAgd291bGQgbGlrZWx5IGFwcGx5IHRvIGdlbmVyYWwgYXBwbGljYXRpb25zIGJ1aWx0IHdpdGggRWNsaXBzZSkuIFtQbGF0Zm9ybSANCiAgICBVSV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3Njk1Ij4zNzY5NTwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlJlbW92ZSANCiAgICBkZXBlbmRlbmN5IG9uIFhlcmNlcy48L3N0cm9uZz4gVGhlIFhlcmNlcyBwbHVnLWluIGN1cnJlbnRseSBwcm92aWRlcyBYTUwgc3VwcG9ydCANCiAgICBmb3IgdGhlIEVjbGlwc2UgcGxhdGZvcm0uIFhNTCBzdXBwb3J0IGlzIG5vdyBpbmNvcnBvcmF0ZWQgaW50byBKMlNFIDEuNCwgYW5kIA0KICAgIHRoZSBwcmVzZW5jZSBvZiB0aGUgWGVyY2VzIHBsdWctaW4gY2FuIGNyZWF0ZSBjb25mbGljdHMuIEVjbGlwc2UgUGxhdGZvcm0gDQogICAgc2hvdWxkIGNvbnNpc3RlbnRseSB1c2UgdGhlIGJ1aWx0LWluIFhNTCBzdXBwb3J0IHRoYXQgc2hpcHMgd2l0aCBKREsgMS40LCANCiAgICBvciBwb3NzaWJseSBhbiBhbHRlcm5hdGl2ZSBYTUwgcGFyc2VyIHN1Y2ggYXMgPGEgaHJlZj0iaHR0cDovL3d3dy54bWxwdWxsLm9yZy8iPlhNTFB1bGw8L2E+IA0KICAgIHdoaWNoIGhhcyBhIG11Y2ggc21hbGxlciBmb290cHJpbnQuIFtQbGF0Zm9ybSBDb3JlXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2OTYiPjM3Njk2PC9hPik8L3A+DQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+SW1wcm92ZSANCiAgICBBbnQuPC9zdHJvbmc+IEVjbGlwc2Ugc2hvdWxkIGFsbG93IHRoZSBvcHRpb24gb2YgcnVubmluZyBBbnQgaW4gYSBzZXBhcmF0ZWx5LXNwZWNpZmllZCANCiAgICBKVk0uIFRoZSBBbnQgZWRpdG9yIHNob3VsZCBzdXBwb3J0IHJlZmFjdG9yaW5nIGluc2lkZSBBbnQgc2NyaXB0cy4gW0FudCBDb3JlLCANCiAgICBBbnQgVUldICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY5NyI+Mzc2OTc8L2E+KTwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBubyB0aGVtZSk8L2g0Pg0KPHA+VGhlIGZvbGxvd2luZyB3b3JrIGl0ZW1zIGFyZSBiZWluZyBhY3RpdmVseSBpbnZlc3RpZ2F0ZWQsIGJ1dCB3ZSBhcmUgbm90IHlldCANCiAgYWJsZSB0byBwcm9taXNlIGFueSBzb2x1dGlvbiBmb3IgdGhpcyByZWxlYXNlOjwvcD4NCjxibG9ja3F1b3RlPiANCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+UHJvdmlkZSBpbXByb3ZlZCANCiAgICB0YWJsZSBhbmQgdGFibGUgdHJlZSB3aWRnZXRzLiA8L2I+IEVjbGlwc2UgY3VzdG9tZXJzIGFyZSBmaW5kaW5nIHRoYXQgdGhlIA0KICAgIGV4aXN0aW5nIHRhYmxlIGFuZCB0YWJsZSB0cmVlIGN1c3RvbSBTV1Qgd2lkZ2V0cyBsYWNrcyByZXF1aXJlZCBmdW5jdGlvbmFsaXR5LCANCiAgICBleGhpYml0IHVuZGVzaXJhYmxlIGxheW91dCBhbmQgcmVzaXppbmcgYmVoYXZpb3IsIGFuZCBhcmUgZ2VuZXJhbGx5IGlsbC1zdWl0ZWQgDQogICAgZm9yIHByZXNlbnRpbmcgbGFyZ2UgZGF0YSBtb2RlbHMuIFRoZWlyIGxhcmdlbHkgdW5zdWNjZXNzZnVsIGF0dGVtcHRzIHRvIGRlZmluZSANCiAgICB0aGVpciBvd24gY3VzdG9tIHRhYmxlIHRyZWUgd2lkZ2V0IGhhdmUgc2hvd24gaXQgdG8gYmUgYSB2ZXJ5IGNoYWxsZW5naW5nIA0KICAgIHRhc2sgcmVxdWlyaW5nIGV4cGVydC1sZXZlbCBrbm93bGVkZ2Ugb2YgU1dULiBTV1Qgc2hvdWxkIHByb3ZpZGUgaW1wcm92ZWQgDQogICAgdGFibGUgYW5kIHRhYmxlIHRyZWUgd2lkZ2V0cy4gW1NXVCwgUGxhdGZvcm0gVUldICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzk5OCI+Mzc5OTg8L2E+KTwvcD4NCiAgICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgZmVhdHVyZSBtb2RlbCBhbmQgYnVpbGQgc3VwcG9ydC48L3N0cm9uZz4gVGhlIGN1cnJlbnQgbmVzdGVkIGZlYXR1cmUgc3RydWN0dXJlIA0KICAgIGlzIHN0YXRpYyBhbmQgdW5jb25kaXRpb25hbC4gVGhpcyBtYWtlcyBuZXN0ZWQgZmVhdHVyZXMgaGFyZCBmb3IgZGV2ZWxvcGVycyANCiAgICB0byBtYW5hZ2UgKHZlcnNpb24gYnJpdHRsZW5lc3MsIHBsYXRmb3JtLXNwZWNpZmljIGZlYXR1cmUgaWRzKSBhbmQgZ3JlYXRseSANCiAgICBpbmNyZWFzZXMgdGhlIGRvd25sb2FkIHNpemUgb2Ygc2VydmljZSByZWxlYXNlcy4gV2Ugc2hvdWxkIGFsbG93IGFsbCBpbmNsdWRlZCANCiAgICBmZWF0dXJlcyBhbmQgYSBmZWF0dXJlJ3MgcmVxdWlyZWQgcGx1Zy1pbnMgdG8gYmUgY29uZGl0aW9uYWxpemVkLCBhbmQgaW1wcm92ZSANCiAgICBQREUgdG8gYnVpbGQgbmVzdGVkIGZlYXR1cmVzIGFuZCBmaWxsIGluIGNvbnN0aXR1ZW50IHZlcnNpb24gbnVtYmVycyBhdCBidWlsZCANCiAgICB0aW1lLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVXBkYXRlLCBQREVdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcxMyI+Mzc3MTM8L2E+KTwvcD4NCjwvYmxvY2txdW90ZT4NCjxibG9ja3F1b3RlPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgdGVhbSBjb250cm9sIG92ZXIgcmVzb3VyY2Ugb3BlcmF0aW9ucy48L3N0cm9uZz4gRWNsaXBzZSBjdXJyZW50bHkgcHJvdmlkZXMgDQogICAgbGltaXRlZCBob29rcyAoZWRpdC9zYXZlLCBtb3ZlL2RlbGV0ZSkgc28gdGhhdCB0ZWFtIHByb3ZpZGVycyBjYW4gY29udHJvbCANCiAgICBvciBpbmZsdWVuY2Ugb3BlcmF0aW9ucyBvbiByZXNvdXJjZXMgaW4gdGhlIHdvcmtzcGFjZS4gSG93ZXZlciwgdGhlcmUgYXJlIA0KICAgIHNvbWUgYXNwZWN0cyBhbmQgb3BlcmF0aW9ucyBvdmVyIHdoaWNoIHRlYW0gcHJvdmlkZXJzIGhhdmUgbGl0dGxlIG9yIG5vIGluZmx1ZW5jZSwgDQogICAgc3VjaCBhcyByZXNvdXJjZSBjcmVhdGlvbiBhbmQgY29weWluZy4gRWNsaXBzZSBzaG91bGQgb2ZmZXIgdGVhbSBwcm92aWRlcnMgDQogICAgYmV0dGVyIGNvbnRyb2wgb3ZlciByZXNvdXJjZSBvcGVyYXRpb25zLiBbUGxhdGZvcm0gQ29yZSwgUGxhdGZvcm0gVGVhbV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NzIyIj4zNzcyMjwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlN1cHBvcnQgDQogICAgbG9naWNhbCByZXNvdXJjZXMuPC9zdHJvbmc+IFRoZSBFY2xpcHNlIFBsYXRmb3JtIHN1cHBvcnRzIGEgc3Ryb25nIHBoeXNpY2FsIA0KICAgIHZpZXcgb2YgcHJvamVjdHMsIGZpbGVzLCBhbmQgZm9sZGVycyBpbiB0aGUgd29ya3NwYWNlLiBIb3dldmVyLCB0aGVyZSBhcmUgDQogICAgbWFueSBzaXR1YXRpb25zIHdoZXJlIGEgcGh5c2ljYWwgdmlldyBpcyBub3QgdGhlIG1vc3Qgc2FsaWVudCBvciB1c2VmdWwgZm9yIA0KICAgIG1hbnkgcHVycG9zZXMuIEluIHNvbWUgY2FzZXMsIG11bHRpcGxlIGRpc3RpbmN0IG9iamVjdHMgaGFwcGVuIHRvIGJlIHN0b3JlZCANCiAgICBpbiBhIHNpbmdsZSBmaWxlLCBsaWtlIGFuIGFyY2hpdmUuIENvbnZlcnNlbHksIGluIG90aGVyIGNhc2VzLCBzb21ldGhpbmcgdGhhdCANCiAgICBpcyBsb2dpY2FsbHkgYSBzaW5nbGUgb2JqZWN0IGlzIHN0b3JlZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMuIFRoaXMgZGlzY3JlcGFuY3kgDQogICAgYmV0d2VlbiBsb2dpY2FsIGFuZCBwaHlzaWNhbCBjcmVhdGVzIHByb2JsZW1zIGZvciBjb21tb24gb3BlcmF0aW9ucyBzdWNoIGFzIA0KICAgIHNlYXJjaGluZywgY29tcGFyaW5nLCBhbmQgdmVyc2lvbmluZywgd2hpY2ggbmVlZCB0byB3b3JrIGluIHRoZSBwaHlzaWNhbCByZWFsbS4gDQogICAgRWNsaXBzZSBzaG91bGQgc3VwcG9ydCBzb21lIHdheSBvZiBtYXBwaW5nIGJldHdlZW4gYSBsb2dpY2FsIHZpZXcgYW5kIHRoZSANCiAgICBwaHlzaWNhbCBvcmdhbml6YXRpb24gb2YgZmlsZXMgb24gZGlzay4gW1BsYXRmb3JtIENvcmUsIFBsYXRmb3JtIFVJXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3MjMiPjM3NzIzPC9hPik8L3A+DQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+UHJvdmlkZSANCiAgICBTd2luZyBpbnRlcm9wZXJhYmlsaXR5Ljwvc3Ryb25nPiBFY2xpcHNlIHBsdWctaW4gZGV2ZWxvcGVycyBvZnRlbiBoYXZlIGV4aXN0aW5nIA0KICAgIFN3aW5nLWJhc2VkIFVJcyB0aGF0IHRoZXkgd291bGQgbGlrZSB0byBpbnRlZ3JhdGUgd2l0aCBFY2xpcHNlLiBFY2xpcHNlIHNob3VsZCANCiAgICBwcm92aWRlIGEgd3JhcHBlciB0aGF0IGFsbG93cyBTd2luZyB3aWRnZXRzIHRvIGJlIGVtYmVkZGVkIHdpdGhpbiBhIFNXVCBVSS4gDQogICAgW1NXVF0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NzI0Ij4zNzcyNDwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlBvcnQgDQogICAgU1dUIHRvIDY0LWJpdCBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLiA8L3N0cm9uZz5TV1QgY3VycmVudGx5IG9ubHkgcnVucyBvbiANCiAgICAzMi1iaXQgb3BlcmF0aW5nIGVudmlyb25tZW50cy4gU1dUIHNob3VsZCBiZSBwb3J0ZWQgdG8gcnVuIG9uIGN1cnJlbnQgNjQtYml0IA0KICAgIG9wZXJhdGluZyBlbnZpcm9ubWVudHMuIFtTV1RdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcyMSI+Mzc3MjE8L2E+KTwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5EZWZlcnJlZCBJdGVtcyAoRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LCBubyB0aGVtZSk8L2g0Pg0KPHA+VGhlc2UgaXRlbXMgYXJlIG5leHQgaW4gbGluZSBmb3IgdGhpcyByZWxlYXNlLiBBcyBjb21taXR0ZXJzIGNvbXBsZXRlIHRoZWlyIA0KICBhc3NpZ25lZCB0YXNrcywgb3IgYWRkaXRpb25hbCBoZWxwIGJlY29tZXMgYXZhaWxhYmxlLCBzb21lIG9mIHRoZXNlIGl0ZW1zIG1heSANCiAgYmUgY29tbWl0dGVkIGZvciB0aGlzIHJlbGVhc2U6PC9wPg0KPGJsb2NrcXVvdGU+IA0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlN1cHBvcnQgDQogICAgSFRNTCBoZWxwIHBhZ2VzIGluIGFyY2hpdmVzIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY5OCI+Mzc2OTg8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5JbXByb3ZlIHN0cnVjdHVyZSANCiAgICBvZiBleGlzdGluZyBkb2N1bWVudGF0aW9uIDwvYj4gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTY0Ij4zNjk2NDwvYT4pPGJyPg0KICAgICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkltcHJvdmUgdXBkYXRlIA0KICAgIG1hbmFnZXIgZG93bmxvYWRpbmcgPC9iPiAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2OTkiPjM3Njk5PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+UHJvdmlkZSBvbmUtY2xpY2sgDQogICAgdXBkYXRlIGZvciBFY2xpcHNlIGJ1aWxkcyA8L2I+KDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NzAxIj4zNzcwMTwvYT4pPGJyPg0KICAgICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkltcHJvdmUgb3JnYW5pemF0aW9uYWwgDQogICAgY29udHJvbCBvdmVyIHByb2R1Y3QgdXBkYXRlcyA8L2I+ICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcwMiI+Mzc3MDI8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlByb3ZpZGUgDQogICAgd29ya2luZyBzZXRzIGZvciBoZWxwIGluZm9jZW50ZXIgPC9zdHJvbmc+KDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NzAzIj4zNzcwMzwvYT4pPGJyPg0KICAgICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+U3VwcG9ydCANCiAgICBHVUkgdGVzdCB0b29scyA8L3N0cm9uZz4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3MDQiPjM3NzA0PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIHRlYW0gQVBJIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcwNSI+Mzc3MDU8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlN1cHBvcnQgDQogICAgbmF0aXZlIHNraW5uaW5nIGluIFNXVCA8L3N0cm9uZz4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3MDYiPjM3NzA2PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5NYWtlIFNXVCANCiAgICB3b3JrIGluIGEgYnJvd3Nlcjwvc3Ryb25nPiAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3MDciPjM3NzA3PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5Db21wbGV0ZSANCiAgICBNYWMgT1MgWCBwb3J0IDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcwOCI+Mzc3MDg8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlN1cHBvcnQgDQogICAgT3BlbkdMIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcwOSI+Mzc3MDk8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlN1cHBvcnQgDQogICAgTURJIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcxMCI+Mzc3MTA8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgbWVzc2FnZSBidW5kbGVzIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcxMiI+Mzc3MTI8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkFsbG93IA0KICAgIGluZm9jZW50ZXIgdG8gcnVuIG9uIGV4aXN0aW5nIGFwcCBzZXJ2ZXIgPC9zdHJvbmc+ICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcxNCI+Mzc3MTQ8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgcGx1Zy1pbiByZWdpc3RyeSA8L3N0cm9uZz4gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NzE1Ij4zNzcxNTwvYT4pPGJyPg0KICAgICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+UHJvdmlkZSANCiAgICBjb21tb24gY29tbWFuZCBpbmZyYXN0cnVjdHVyZSA8L3N0cm9uZz4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3MTYiPjM3NzE2PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5Qcm92aWRlIA0KICAgIGJldHRlciBleGFtcGxlcyBhbmQgc25pcHBldHMgPC9zdHJvbmc+KDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NzE3Ij4zNzcxNzwvYT4pPGJyPg0KICAgICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+IEltcHJvdmUgDQogICAgc3VwcG9ydCBmb3IgbXVsdGktcGFnZSBlZGl0b3JzIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcxOCI+Mzc3MTg8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPlVuaWZ5IA0KICAgIGVkaXRvcnMgYW5kIHZpZXdzIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzcxOSI+Mzc3MTk8L2E+KTwvcD4NCiAgPC9ibG9ja3F1b3RlPg0KPGg0PlJlamVjdGVkIEl0ZW1zIChFY2xpcHNlIFBsYXRmb3JtIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPg0KPC9ibG9ja3F1b3RlPg0KDQoNCg0KPHA+KEVuZCBvZiBpdGVtcyBmb3IgRWNsaXBzZSBQbGF0Zm9ybSBzdWJwcm9qZWN0LikgDQo8aDI+IDxhIG5hbWU9IkpEVCI+SmF2YSBkZXZlbG9wbWVudCB0b29scyAoSkRUKSBzdWJwcm9qZWN0PC9hPjwvaDI+DQoNCjxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvamR0L2luZGV4Lmh0bWwiPiBKYXZhIGRldmVsb3BtZW50IHRvb2xzPC9hPiANCiAgKEpEVCkgaW1wbGVtZW50cyBhIEphdmEgSURFIGJhc2VkIG9uIHRoZSBFY2xpcHNlIFBsYXRmb3JtLiBUaGUgZm9sbG93aW5nIHdvcmsgDQogIGl0ZW1zIHJlZmxlY3QgbmV3IGZlYXR1cmVzIG9mIEpEVCwgb3IgYXJlYXMgd2hlcmUgZXhpc3RpbmcgZmVhdHVyZXMgd2lsbCBiZSANCiAgc2lnbmlmaWNhbnRseSByZXdvcmtlZC4gVGhlIGtpbmRzIG9mIGNoYW5nZXMgdW5kZXIgY29uc2lkZXJhdGlvbiBmb3IgdGhlIG5leHQgDQogIHJlbGVhc2Ugb2YgSkRUIGFkZHJlc3MgdHdvIGdlbmVyYWwgdGhlbWVzLiBUaGUgY29tbWl0dGVkLCBwcm9wb3NlZCwgYW5kIGRlZmVycmVkIA0KICBwbGFuIGl0ZW1zIGFyZSBncm91cGVkIGluIHNlY3Rpb25zIGJ5IHRoZW1lOjwvcD4NCjx1bD4NCiAgPGxpPjxhIGhyZWY9IiNUaGVtZUphdmFGYW1pbHkiPkV4dGVuZGVkIEphdmEgZmFtaWx5IHRoZW1lPC9hPiAtIEdlbmVyYWxpemluZyANCiAgICBKRFQgdG8gaGFuZGxlIG1vcmUgdGhhbiBqdXN0IEphdmEgc291cmNlIGZpbGVzLjwvbGk+DQogIDxsaT48YSBocmVmPSIjVGhlbWVKRFRVc2VyRXhwZXJpZW5jZSI+VXNlciBleHBlcmllbmNlIHRoZW1lPC9hPiAtIEltcHJvdmluZyANCiAgICBKRFQgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgZW5kIHVzZXIgd3JpdGluZyBKYXZhIGNvZGUuPC9saT4NCjwvdWw+DQo8cD5JbiBhZGRpdGlvbiwgdGhlcmUgYXJlIGltcG9ydGFudCBFY2xpcHNlIFBsYXRmb3JtIGltcHJvdmVtZW50cyB0aGF0IGRvIG5vdCANCiAgbmF0dXJhbGx5IGZpdCBpbnRvIGVpdGhlciBvZiB0aGUgYWJvdmUgdGhlbWVzLjwvcD4NCjx1bD4NCiAgPGxpPjxhIGhyZWY9IiNPdGhlckpEVCI+T3RoZXIgSkRUIGl0ZW1zPC9hPjwvbGk+DQo8L3VsPg0KPGgzPjxhIG5hbWU9IlRoZW1lSmF2YUZhbWlseSI+VGhlbWU6IEV4dGVuZGVkIEphdmEgRmFtaWx5PC9hPjwvaDM+DQo8cD5HZW5lcmFsaXplIEpEVCB0byBoYW5kbGUgbW9yZSBtZW1iZXJzIG9mIHRoZSBKYXZhIGZhbWlseSB0aGFuIGp1c3QgSmF2YSBzb3VyY2UgDQogIGZpbGVzLiBUaGlzIGluY2x1ZGVzIHdpZGVuaW5nIHRvIGhhbmRsZSBKYXZhLWxpa2UgbGFuZ3VhZ2VzIChzdWNoIGFzIEpTUCBhbmQgDQogIFNRTGopLCBhbmQgZW1icmFjaW5nIG5vbi1KYXZhIGZpbGVzIGNvbnRhaW5pbmcgcmVmZXJlbmNlcyB0byBKYXZhIGxhbmd1YWdlIGVsZW1lbnRzIA0KICAoc3VjaCBhcyBwbHVnLWluIG1hbmlmZXN0IGZpbGVzIGFuZCBKMkVFIGRlcGxveW1lbnQgZGVzY3JpcHRvcnMpLjwvcD4NCjxoND5Db21taXR0ZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QsIEV4dGVuZGVkIEphdmEgRmFtaWx5IHRoZW1lKTwvaDQ+DQo8YmxvY2txdW90ZT4gDQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkltcHJvdmUgc3VwcG9ydCANCiAgICBmb3IgSmF2YS1saWtlIHNvdXJjZSBmaWxlcy48L2I+IEpTUCBhbmQgU1FMaiBhcmUgdHdvIGluc3RhbmNlcyBvZiBsYW5ndWFnZXMgDQogICAgdGhhdCB1c2UgSmF2YSBzeW50YXguIEVjbGlwc2Ugc2hvdWxkIHByb3ZpZGUgYmV0dGVyIHN1cHBvcnQgZm9yIEphdmEtbGlrZSANCiAgICBzb3VyY2UgZmlsZXMuIEZvciBpbnN0YW5jZSwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGluZGV4IHRoZXNlIGZpbGVzIHNvIA0KICAgIHRoYXQgSmF2YSBzZWFyY2ggY2FuIGZpbmQgdGhlIEphdmEgZGVjbGFyYXRpb25zIGFuZCByZWZlcmVuY2VzIHdpdGhpbjsgaXQgDQogICAgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBKYXZhIGNvZGUgYXNzaXN0IG9uIHRoZSBKYXZhIHBhc3NhZ2VzOyByZWZhY3RvcmluZyANCiAgICBzaG91bGQgYmUgYWJsZSB0byB0YWtlIHRoZXNlIGZpbGVzIGludG8gYWNjb3VudDsgdGhlIGRlYnVnZ2VyIHNob3VsZCBiZSBhYmxlIA0KICAgIHRvIHN0ZXAgdGhyb3VnaCB0aGUgSmF2YSBwYXNzYWdlcyAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0wNDUiIHRhcmdldD0iX2JsYW5rIj5KU1ItMDQ1PC9hPik7IA0KICAgIGVycm9yIGhpZ2hsaWdodGluZyBzaG91bGQgYmUgc3VwcG9ydGVkIGFjcm9zcyBzZWN0aW9uczsgZXRjLiBbSkRUIENvcmUsIEpEVCANCiAgICBVSSwgSkRUIERlYnVnXSBbVGhlbWU6IEV4dGVuZGVkIEphdmEgZmFtaWx5XSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MzY5MzkiPjM2OTM5PC9hPik8L3A+DQogIDxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5TdXBwb3J0IEphdmEgDQogICAgcmVmZXJlbmNlcyBvdXRzaWRlIEphdmEgY29kZS48L2I+IFJlZmVyZW5jZXMgdG8gSmF2YSBlbGVtZW50cyBpbiBwYXJ0aWN1bGFyIA0KICAgIGNsYXNzZXMgY2FuIHNob3cgdXAgaW4gc3BlY2lmaWMga2luZHMgb2Ygbm9uLUphdmEgc291cmNlIGZpbGVzLCBzdWNoIGFzIHBsdWctaW4gDQogICAgbWFuaWZlc3QgZmlsZXMgKHBsdWdpbi54bWwpLCBleHRlbnNpb24gcG9pbnQgc2NoZW1hIGZpbGVzLCBhbmQgSmF2YSBsYXVuY2ggDQogICAgY29uZmlndXJhdGlvbnMgaW4gdGhlIHdvcmtzcGFjZS4gVGhlc2UgcmVmZXJlbmNlcyBzaG91bGQgYWxzbyBwYXJ0aWNpcGF0ZSANCiAgICBpbiBKYXZhIG9wZXJhdGlvbnMgbGlrZSBzZWFyY2gsIG1vdmUsIHJlbmFtZSwgYW5kIG90aGVyIHJlZmFjdG9yaW5nIG9wZXJhdGlvbnMuIA0KICAgIEpEVCB3aWxsIHN1cmZhY2UgQVBJcyB0aGF0IGVuYWJsZSBvdGhlciBwbHVnLWlucyB0byBjb250cmlidXRlIHRvIGFuZCBwYXJ0aWNpcGF0ZSANCiAgICBpbiB0aGVzZSBvcGVyYXRpb25zLiBbSkRUIENvcmUsIEpEVCBVSSwgSkRUIERlYnVnLCBQREVdIFtUaGVtZTogRXh0ZW5kZWQgSmF2YSANCiAgICBmYW1pbHldICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzkzNyI+Mzc5Mzc8L2E+KTwvcD4NCiAgPC9ibG9ja3F1b3RlPg0KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LCBFeHRlbmRlZCBKYXZhIEZhbWlseSB0aGVtZSk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QsIEV4dGVuZGVkIEphdmEgRmFtaWx5IHRoZW1lKTwvaDQ+DQo8YmxvY2txdW90ZT4gDQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDM+PGEgbmFtZT0iVGhlbWVKRFRVc2VyRXhwZXJpZW5jZSI+VGhlbWU6IFVzZXIgRXhwZXJpZW5jZTwvYT48L2gzPg0KPHA+SW1wcm92ZSBKRFQgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB0aGUgZW5kIHVzZXIgcmVhZGluZywgd3JpdGluZywgYW5kIG5hdmlnYXRpbmcgDQogIGluIEphdmEgY29kZS48L3A+DQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LCBVc2VyIEV4cGVyaWVuY2UgdGhlbWUpPC9oND4NCjxibG9ja3F1b3RlPiANCiAgPHA+KDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPGI+UHJlc2VudCBsb2dpY2FsIA0KICAgIHZpZXcgb2YgSmF2YSBvYmplY3RzIGluIGRlYnVnZ2VyLjwvYj4gVGhlIGN1cnJlbnQgZGVidWdnZXIgYWx3YXlzIHByZXNlbnRzIA0KICAgIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YgSmF2YSBvYmplY3RzLiBGb3IgaW5zdGFuY2VzIG9mIHN0YW5kYXJkIGRhdGEgc3RydWN0dXJlcyANCiAgICBsaWtlIGphdmEudXRpbC5IYXNoTWFwLCB0aGUgSmF2YSBkZWJ1Z2dlciBzaG91bGQgYmUgYWJsZSB0byBwcmVzZW50IGEgaGlnaGVyIA0KICAgIGxldmVsIGxvZ2ljYWwgdmlldyBvZiB0aGUgb2JqZWN0IChpLmUuLCB0byBzaG93IGl0IGFzIGEgdGFibGUgb2Yga2V5LXRvLXZhbHVlIA0KICAgIG1hcHBpbmdzKS4gW0pEVCBEZWJ1Z10gW1RoZW1lOiBVc2VyIGV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk0MiI+MzY5NDI8L2E+KTwvcD4NCiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkltcHJvdmUgcmVmYWN0b3JpbmcuPC9iPiANCiAgICBKRFQgc2hvdWxkIGFkZCBuZXcgcmVmYWN0b3JpbmdzLCBzdWNoIGFzIGFkZCBwYXJhbWV0ZXIsIGNvbnZlcnQgY29uc3RydWN0b3IgDQogICAgdG8gZmFjdG9yeSBtZXRob2QsIGFuZCBleHRyYWN0IHN1cGVyY2xhc3MuIEpEVCBzaG91bGQgYWxzbyBhbGxvdyBvdGhlciBwbHVnLWlucyANCiAgICB0byBjb250cmlidXRlIHNwZWNpYWxpemVkIHJlZmFjdG9yaW5nIG9wZXJhdGlvbnMsIGFuZCBwcm92aWRlIHJlZmFjdG9yaW5nIA0KICAgIEFQSXMgYW5kIGluZnJhc3RydWN0dXJlIHRvIG1ha2UgaXQgcG9zc2libGUgZm9yIHRoZW0gdG8gZG8gc28uIFtKRFQgQ29yZSwgDQogICAgSkRUIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTQzIj4zNjk0MzwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgY29kZSBmb3JtYXR0ZXIuPC9zdHJvbmc+IEpEVCBzaG91bGQgcHJvdmlkZSBhIG5ldyBjb2RlIGZvcm1hdHRlciBpbXBsZW1lbnRhdGlvbiANCiAgICB0aGF0IGlzIG1vcmUgZmxleGlibGUgYW5kIHN1cHBvcnRzIG1hbnkgbW9yZSBzdHlsZXMuIFtKRFQgQ29yZV0gW1RoZW1lOiBVc2VyIA0KICAgIGV4cGVyaWVuY2VdICg8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY1NyI+Mzc2NTc8L2E+KTwvcD4NCiAgPC9ibG9ja3F1b3RlPg0KPGg0PlByb3Bvc2VkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LCBVc2VyIEV4cGVyaWVuY2UgdGhlbWUpPC9oND4NCjxwPlRoZSBmb2xsb3dpbmcgd29yayBpdGVtcyBhcmUgYmVpbmcgYWN0aXZlbHkgaW52ZXN0aWdhdGVkLCBidXQgd2UgYXJlIG5vdCB5ZXQgDQogIGFibGUgdG8gcHJvbWlzZSBhbnkgc29sdXRpb24gZm9yIHRoaXMgcmVsZWFzZTo8L3A+DQoNCjxibG9ja3F1b3RlPiANCiAgPHA+ICg8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxzdHJvbmc+SW1wcm92ZSANCiAgICBlZGl0b3IgY29kZSBuYXZpZ2F0aW9uLjwvc3Ryb25nPiBUaGUgSmF2YSBlZGl0b3Igc2hvdWxkIGFsbG93IHRoZSB1c2VyIHRvIA0KICAgIG5hdmlnYXRlIGluIHRoZSB0eXBlIGhpZXJhcmNoeSBmcm9tIGEgc2VsZWN0ZWQgZWxlbWVudC4gRm9yIGluc3RhbmNlLCB0aGUgDQogICAgZWRpdG9yIHNob3VsZCBzaG93IG92ZXJyaWRlIGluZGljYXRvcnMgKGN1cnJlbnRseSBzaG93biBvbmx5IGluIHRoZSBvdXRsaW5lciANCiAgICB2aWV3KSwgYW5kIGFsbG93IGRpcmVjdCBuYXZpZ2F0aW9uIHRvIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuIA0KICAgIFRoZSBlZGl0b3Igc2hvdWxkIGFsc28gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgDQogICAgZWxlbWVudCBzdWNoIGFzIGFsbCByZWZlcmVuY2VkIHR5cGVzLCBjYWxsIHNpdGVzLCBvdmVycmlkZXJzLCBpbXBsZW1lbnRlcnMsIA0KICAgIGRlY2xhcmF0aW9uLiBbSkRUIFVJXSBbVGhlbWU6IFVzZXIgZXhwZXJpZW5jZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjU4Ij4zNzY1ODwvYT4pPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LCBVc2VyIEV4cGVyaWVuY2UgdGhlbWUpPC9oND4NCjxibG9ja3F1b3RlPiANCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoMz48YSBuYW1lPSJPdGhlckpEVCI+T3RoZXIgSkRUIEl0ZW1zPC9hPjwvaDM+DQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LCBubyB0aGVtZSk8L2g0Pg0KPGJsb2NrcXVvdGU+IA0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgc2hhcmVkIHdvcmtpbmcgY29waWVzLjwvc3Ryb25nPiBUaGVyZSBpcyBtZWNoYW5pc20gdGhhdCBhbGxvd3Mgd29ya2luZyBjb3BpZXMgDQogICAgb2Ygc291cmNlIGZpbGVzIHRvIGJlIGFuYWx5emVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSByZXN0IG9mIHRoZSBKYXZhIG1vZGVsLiANCiAgICBDdXJyZW50bHksIHNoYXJlZCB3b3JraW5nIGNvcGllcyBhcmUgaGFyZCB0byBtYW5hZ2UuIEVjbGlwc2Ugc2hvdWxkIHNpbXBsaWZ5IA0KICAgIHRoZSBtYW5hZ2VtZW50IG9mIHdvcmtpbmcgY29waWVzIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBtb3JlIHRyYW5zcGFyZW50bHkuIA0KICAgIFtKRFQgQ29yZV0gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjU5Ij4zNzY1OTwvYT4pPC9wPg0KICA8L2Jsb2NrcXVvdGU+DQo8aDQ+UHJvcG9zZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QsIG5vIHRoZW1lKTwvaDQ+DQo8cD5UaGUgZm9sbG93aW5nIHdvcmsgaXRlbXMgYXJlIGJlaW5nIGFjdGl2ZWx5IGludmVzdGlnYXRlZCwgYnV0IHdlIGFyZSBub3QgeWV0IA0KICBhYmxlIHRvIHByb21pc2UgYW55IHNvbHV0aW9uIGZvciB0aGlzIHJlbGVhc2U6PC9wPg0KDQo8YmxvY2txdW90ZT4NCjxwPiAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5BZGQgZWFybHkgDQogICAgc3VwcG9ydCBmb3IgSjJTRSAxLjUgZmVhdHVyZXMuPC9iPiBUaGUgbmV4dCBmZWF0dXJlIHJlbGVhc2Ugb2YgSjJTRSBpcyB2ZXJzaW9uIA0KICAgIDEuNSAoJnF1b3Q7VGlnZXImcXVvdDspLCB0YXJnZXRlZCB0byBzaGlwIGluIHRoZSBmaXJzdCBoYWxmIG9mIDIwMDQuIFdoaWxlIA0KICAgIHRoZSBjb250ZW50cyBvZiB0aGlzIHJlbGVhc2UgYXJlIHN0aWxsIHVuZGVyIGRpc2N1c3Npb24gKDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTc2IiB0YXJnZXQ9Il9ibGFuayI+SlNSLTE3NjwvYT4pLCANCiAgICB0aGlzIHJlbGVhc2UgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBleHRlbnNpb25zIHRvIHRoZSBKYXZhIGxhbmd1YWdlLCBpbmNsdWRpbmcgDQogICAgZ2VuZXJpYyB0eXBlcyAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0wMTQiIHRhcmdldD0iX2JsYW5rIj5KU1ItMDE0PC9hPiksIA0KICAgIGVudW1lcmF0aW9ucywgYXV0b2JveGluZywgZW5oYW5jZWQgZm9yIGxvb3BzLCBzdGF0aWMgaW1wb3J0cyAoYWxsIDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MjAxIiB0YXJnZXQ9Il9ibGFuayI+SlNSLTIwMTwvYT4pLCANCiAgICBtZXRhZGF0YSBmYWNpbGl0eSAoPGEgaHJlZj0iaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xNzUiPkpTUi0xNzU8L2E+KSwgDQogICAgYW5kIGNvbXBpbGVyIEFQSXMgKDxhIGhyZWY9Imh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTk5IiB0YXJnZXQ9Il9ibGFuayI+SlNSLTE5OTwvYT4pLiANCiAgICBTdXBwb3J0aW5nIHRoZXNlIG5ldyBsYW5ndWFnZSBhbmQgY29tcGlsZXIgZmVhdHVyZXMgd2lsbCByZXF1aXJlIG1ham9yIGNoYW5nZXMgDQogICAgdG8gdGhlIEVjbGlwc2UgSmF2YSBjb21waWxlciwgSkRUIENvcmUgQVBJcywgYW5kIEpEVCBVSSwgYW5kIG1heSBzdWdnZXN0IG5ldyANCiAgICBKYXZhIDEuNS1zcGVjaWZpYyByZWZhY3RvcmluZ3MuIEFsdGhvdWdoIEVjbGlwc2UgMy4wIG1pZ2h0IHNoaXAgYmVmb3JlIEoyU0UgDQogICAgMS41IGRvZXMsIEVjbGlwc2Ugc2hvdWxkIGNvbnRhaW4gZWFybHkgc3VwcG9ydCBmb3IgSjJTRSAxLjUgZmVhdHVyZXMgd2hlcmV2ZXIgDQogICAgcG9zc2libGUgW0pEVCBDb3JlLCBKRFQgVUksIEpEVCBEZWJ1Z10gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM2OTM4Ij4zNjkzODwvYT4pPC9wPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5IYXJtb25pemUgDQogICAgSmF2YSBzb3VyY2UgbWFuaXB1bGF0aW9uLjwvYj4gVGhlIEphdmEgbW9kZWwgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGluIHRlcm1zIA0KICAgIG9mIEpET00sIGFuIGVhcmx5IHByZWN1cnNvciBvZiB0aGUgQVNUIGZhY2lsaXR5IGFkZGVkIGluIDIuMC4gSkRUIHdpbGwgbW92ZSANCiAgICB0byBhbiBBU1QtYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIEphdmEgbW9kZWwsIGFuZCBkZXByZWNhdGUgSkRPTS4gW0pEVCANCiAgICBDb3JlXSAoPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDEiPjM2OTQxPC9hPik8L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDQ+RGVmZXJyZWQgSXRlbXMgKEVjbGlwc2UgSkRUIHN1YnByb2plY3QsIG5vIHRoZW1lKTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5SZWplY3RlZCBJdGVtcyAoRWNsaXBzZSBKRFQgc3VicHJvamVjdCk8L2g0Pg0KPGJsb2NrcXVvdGU+DQogIDxwPjxpPk5vbmUgYXQgdGhpcyB0aW1lLjwvaT48L3A+DQo8L2Jsb2NrcXVvdGU+DQoNCg0KDQo8cD4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIEpEVCBzdWJwcm9qZWN0LikNCg0KDQoNCjxoMj4gPGEgbmFtZT0iUERFIj5QbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50IChQREUpIHN1YnByb2plY3Q8L2E+PC9oMj4NCg0KVGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGRlL2luZGV4Lmh0bWwiPiBwbHVnLWluIGRldmVsb3BtZW50IGVudmlyb25tZW50PC9hPiANCihQREUpIGNvbnNpc3RzIG9mJm5ic3A7dG9vbHMgZm9yIGRldmVsb3BpbmcgcGx1Zy1pbnMgZm9yIHRoZSBFY2xpcHNlIFBsYXRmb3JtLg0KDQpUaGUgZm9sbG93aW5nIHdvcmsgaXRlbXMgcmVmbGVjdCBuZXcgZmVhdHVyZXMgb2YgUERFLCBvciBhcmVhcyB3aGVyZSBleGlzdGluZw0KDQpmZWF0dXJlcyB3aWxsIGJlIHNpZ25pZmljYW50bHkgcmV3b3JrZWQuDQo8aDQ+Q29tbWl0dGVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+DQo8YmxvY2txdW90ZT4NCiAgPHA+PGk+Tm9uZSBhdCB0aGlzIHRpbWUuPC9pPjwvcD4NCjwvYmxvY2txdW90ZT4NCjxoND5Qcm9wb3NlZCBJdGVtcyAoRWNsaXBzZSBQREUgc3VicHJvamVjdCk8L2g0Pg0KPHA+VGhlIGZvbGxvd2luZyB3b3JrIGl0ZW1zIGFyZSBiZWluZyBhY3RpdmVseSBpbnZlc3RpZ2F0ZWQsIGJ1dCB3ZSBhcmUgbm90IHlldCANCiAgYWJsZSB0byBwcm9taXNlIGFueSBzb2x1dGlvbiBmb3IgdGhpcyByZWxlYXNlOjwvcD4NCjxibG9ja3F1b3RlPg0KICA8cD4oPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkFkZCBKVW5pdCANCiAgICBzdXBwb3J0IGZvciB0ZXN0aW5nIHBsdWctaW5zLjwvc3Ryb25nPiBQREUgc2hvdWxkIGluY2x1ZGUgSlVuaXQtYmFzZWQgc3VwcG9ydCANCiAgICBmb3IgdGVzdGluZyBwbHVnLWlucyAoYW4gZWFybHkgdmVyc2lvbiBvZiB0aGlzIHN1cHBvcnQgaXMgZm91bmQgaW4gdGhlIG9wdGlvbmFsIA0KICAgIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvJTdFY2hlY2tvdXQlN0UvamR0LXVpLWhvbWUvcGx1Z2lucy9vcmcuZWNsaXBzZS5qZHQuanVuaXQvaW5kZXguaHRtbCI+b3JnLmVjbGlwc2UucGRlLmp1bml0PC9hPiANCiAgICBwbHVnLWluKS4gKDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjYzIj4zNzY2MzwvYT4pPC9wPg0KPC9ibG9ja3F1b3RlPg0KPGg0PkRlZmVycmVkIEl0ZW1zIChFY2xpcHNlIFBERSBzdWJwcm9qZWN0KTwvaDQ+DQo8cD5UaGVzZSBpdGVtcyBhcmUgbmV4dCBpbiBsaW5lIGZvciB0aGlzIHJlbGVhc2UuIEFzIGNvbW1pdHRlcnMgY29tcGxldGUgdGhlaXIgDQogIGFzc2lnbmVkIHRhc2tzLCBvciBhZGRpdGlvbmFsIGhlbHAgYmVjb21lcyBhdmFpbGFibGUsIHNvbWUgb2YgdGhlc2UgaXRlbXMgbWF5IA0KICBiZSBjb21taXR0ZWQgZm9yIHRoaXMgcmVsZWFzZTo8L3A+DQo8YmxvY2txdW90ZT4gDQogIDxwPig8aW1nIGJvcmRlcj0iMCIgc3JjPSJuZXcuZ2lmIiB3aWR0aD0iMTIiIGhlaWdodD0iMTIiPiBuZXcpIDxiPkhlbHAgZGV2ZWxvcGVycyANCiAgICB0dW5lIHBsdWctaW4gcGVyZm9ybWFuY2UgPC9iPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNjk0NCI+MzY5NDQ8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8Yj5TdXBwb3J0IGNvbnRleHQtc2Vuc2l0aXZlIA0KICAgIGhlbHAgZm9yIHBsdWctaW5zIDwvYj4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MzY5NDUiPjM2OTQ1PC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIFBERSBtb2RlbCBpbXBsZW1lbnRhdGlvbiA8L3N0cm9uZz4oPGEgaHJlZj0iaHR0cDovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2NjAiPjM3NjYwPC9hPik8YnI+DQogICAgKDxpbWcgYm9yZGVyPSIwIiBzcmM9Im5ldy5naWYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiI+IG5ldykgPHN0cm9uZz5JbXByb3ZlIA0KICAgIFBERSBlZGl0b3JzIDwvc3Ryb25nPig8YSBocmVmPSJodHRwOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0zNzY2MSI+Mzc2NjE8L2E+KTxicj4NCiAgICAoPGltZyBib3JkZXI9IjAiIHNyYz0ibmV3LmdpZiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjEyIj4gbmV3KSA8c3Ryb25nPkltcHJvdmUgDQogICAgcGx1Zy1pbiBkZWJ1Z2dpbmcgPC9zdHJvbmc+KDxhIGhyZWY9Imh0dHA6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTM3NjYyIj4zNzY2MjwvYT4pPC9wPg0KICA8L2Jsb2NrcXVvdGU+DQo8aDQ+UmVqZWN0ZWQgSXRlbXMgKEVjbGlwc2UgUERFIHN1YnByb2plY3QpPC9oND4NCjxibG9ja3F1b3RlPg0KICA8cD48aT5Ob25lIGF0IHRoaXMgdGltZS48L2k+PC9wPg0KPC9ibG9ja3F1b3RlPg0KDQo8cD4oRW5kIG9mIGl0ZW1zIGZvciBFY2xpcHNlIFBERSBzdWJwcm9qZWN0LikNCjwvYm9keT4NCg0KPC9odG1sPg0KDQo=