PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL2RlZmF1bHRfc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cjx0aXRsZT5XVFAgYXV0b21hdGVkIHRlc3Rpbmc8L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keT4KPHRhYmxlIEJPUkRFUj0wIENFTExTUEFDSU5HPTUgQ0VMTFBBRERJTkc9MiBXSURUSD0iMTAwJSIgPgogPHRyPgogIDx0ZCBBTElHTj1MRUZUIHdpZHRoPSI4MCUiPiAKICAgPHA+PGI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iKzMiPldUUCBhdXRvbWF0ZWQgdGVzdGluZzwvZm9udD48L2I+PGJyPgogICBMYXN0IFVwZGF0ZWQ6IE5vdi4gMjksIDIwMDQ8L3A+CiAgIDxwPlRoaXMgZG9jdW1lbnQgb3V0bGluZXMgdGhlIHByaW5jaXBsZXMgb2YgV1RQIGF1dG9tYXRlZCB0ZXN0aW5nLiBJdCBhbHNvIHByb3ZpZGVzIHNvbWUgZ3VpZGVsaW5lcyAKICAgZm9yIGNyZWF0aW5nIGFuZCBydW5uaW5nIHRlc3QgY2FzZXMuIElmIGFueW9uZSBoYXMgc3VnZ2VzdGlvbnMgZm9yIHRoaXMgZG9jdW1lbnQsIAogICBwbGVhc2UgcG9zdCBhIG1lc3NhZ2UgdG8gdGhlIHd0cC1kZXYgbWFpbGluZyBsaXN0LjwvcD4KICA8L3RkPgogPC90cj4gCjwvdGFibGU+Cgo8dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9NSBjZWxscGFkZGluZz0yIHdpZHRoPSIxMDAlIiA+CiA8dHI+CiAgPHRkIGFsaWduPUxFRlQgdmFsaWduPVRPUCBjb2xzcGFuPSIzIiBiZ2NvbG9yPSIjMDA4MEMwIj4gPGI+PGZvbnQgZmFjZT0iQXJpYWwsSGVsdmV0aWNhIiBjb2xvcj0iI0ZGRkZGRiI+VGVzdGluZzwvZm9udD48L2I+PC90ZD4KIDwvdHI+CiA8VFI+CiAgPFREIGFsaWduPSJMRUZUIiB2YWxpZ249IlRPUCI+CiAgPHA+VGhlIGdvYWwgb2YgdW5pdCB0ZXN0aW5nIGlzIHRvIGFjaGlldmU6CiAgPG9sPgogICA8bGk+Q29udGludW91cyBpbnRlZ3JhdGlvbi4gVW5pdCB0ZXN0cyBhcmUgcnVuIGFzIHBhcnQgb2YgdGhlIFdUUCBidWlsZHMuIFRoZXkgZ2l2ZSBhbiBlYXJseSBpbmRpY2F0aW9uIG9uCiAgIHdoYXQgaXMgZmFpbGluZy4gVW5pdCB0ZXN0IGZhaWx1cmVzIHNob3VsZCBiZSBmaXhlZCBhcyBzb29uIGFzIHBvc3NpYmxlIChiZWZvcmUgdGhlIG5leHQgaW50ZWdyYXRpb24gYnVpbGQpLjwvbGk+CiAgIDxsaT5BUEkgY29tcGF0aWJpbGl0eS4gQ29tcG9uZW50IHRlYW1zIHNob3VsZCBwcm92aWRlIHVuaXQgdGVzdHMgZm9yIHRoZWlyIHB1YmxpYyBBUElzLiBUaGlzIGVuc3VyZXMgZGV2ZWxvcGVycwogICBkbyBub3QgYnJlYWsgZXhpc3RpbmcgY2xpZW50cy48L2xpPgogIDwvb2w+CiAgIDxQPlRoZSBnb2FsIG9mIHBlcmZvcm1hbmNlIHRlc3RpbmcgaXMgdG8gYWNoaWV2ZSB1bmlmb3JtIG9yIGJldHRlciBwZXJmb3JtYW5jZSBhcyBXVFAgbW92ZXMgCiAgIGZvcndhcmRzLiBBcyBhIGRldmVsb3BlciwgeW91ciBkZWRpY2F0aW9uIHRvIFdUUCBwZXJmb3JtYW5jZSBpcyBzdHJvbmdseSBkZXNpcmVkLiBUbyBlbnN1cmUgdGhlIAogICBwZXJmb3JtYW5jZSBvZiBXVFAgZG9lcyBub3QgcmVncmVzcyBvdmVyIHRpbWUsIGRldmVsb3BlcnMgc2hvdWxkIHByb3ZpZGUgcGVyZm9ybWFuY2UgdGVzdCBjYXNlcyAKICAgYWxvbmcgc2lkZSB3aXRoIHRoZWlyIGZlYXR1cmVzLCBldGMuIERldmVsb3BlcnMgYXJlIGFsc28gZXhwZWN0ZWQgdG8gdmVyaWZ5IHRoZWlyIAogICBidWcgZml4ZXMgYW5kIGZlYXR1cmVzIGNvbnRyaWJ1dGlvbiBhZ2FpbnN0IGV4aXN0aW5nIHBlcmZvcm1hbmNlIHRlc3QgY2FzZXMuIElmIHNvbWV0aGluZyBpcyBub3QgcGVyZm9ybWluZyAKICAgd2VsbCwgb3BlbiBhIGJ1Zy4gVXNlIHBlcmZvcm1hbmNlIGFzIHRoZSBrZXl3b3JkLiBDbGljayA8YSBocmVmPSJodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9idWdsaXN0LmNnaT9zaG9ydF9kZXNjX3R5cGU9YWxsd29yZHNzdWJzdHImc2hvcnRfZGVzYz0mcHJvZHVjdD1XZWIrVG9vbHMmbG9uZ19kZXNjX3R5cGU9YWxsd29yZHNzdWJzdHImbG9uZ19kZXNjPSZidWdfZmlsZV9sb2NfdHlwZT1hbGx3b3Jkc3N1YnN0ciZidWdfZmlsZV9sb2M9JmtleXdvcmRzX3R5cGU9YWxsd29yZHMma2V5d29yZHM9cGVyZm9ybWFuY2UmYnVnX3N0YXR1cz1ORVcmYnVnX3N0YXR1cz1BU1NJR05FRCZidWdfc3RhdHVzPVJFT1BFTkVEJmVtYWlsdHlwZTE9c3Vic3RyaW5nJmVtYWlsMT0mZW1haWx0eXBlMj1zdWJzdHJpbmcmZW1haWwyPSZidWdpZHR5cGU9aW5jbHVkZSZidWdfaWQ9JnZvdGVzPSZjaGFuZ2VkaW49JmNoZmllbGRmcm9tPSZjaGZpZWxkdG89Tm93JmNoZmllbGR2YWx1ZT0mY21kdHlwZT1kb2l0Jm9yZGVyPVJldXNlK3NhbWUrc29ydCthcytsYXN0K3RpbWUmZmllbGQwLTAtMD1ub29wJnR5cGUwLTAtMD1ub29wJnZhbHVlMC0wLTA9Ij5oZXJlPC9hPiB0byBzZWUgYSBsaXN0IG9mIGFsbCB0aGUgCiAgIGN1cnJlbnRseSBvcGVuIHBlcmZvcm1hbmNlIGJ1Z3MgaW4gV1RQLjwvUD4KICAgPHA+RWNsaXBzZSBoYXMgYSA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3Rlc3QtYW5kLXBlcmZvcm1hbmNlL2luZGV4Lmh0bWwiPnBlcmZvcm1hbmNlIGluZnJhc3RydWN0dXJlPC9hPiBpbiBwbGFjZSBmb3IgbWVhc3VyaW5nIGFuZCB0cmFja2luZyAKICAgcGVyZm9ybWFuY2UuIFRoZSBwZXJmb3JtYW5jZSBwcm9jZXNzZXMgZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1lbnQgYXJlIG1vZGVsZWQgYXJvdW5kIHRoZSBzYW1lIAogICBpbmZyYXN0cnVjdHVyZS4gVG8gY3JlYXRlIGFuZCBydW4gdGVzdHMgdW5kZXIgdGhpcyBpbmZyYXN0cnVjdHVyZSwgcGxlYXNlIHJlZmVyIHRvIHRoZQogICA8YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpLyU3RWNoZWNrb3V0JTdFL29yZy5lY2xpcHNlLnRlc3QucGVyZm9ybWFuY2UvZG9jL1BlcmZvcm1hbmNlJTIwVGVzdHMlMjBIb3dUby5odG1sIj5FY2xpcHNlIFRlc3RzIEhvdy1UbyBkb2N1bWVudDwvYT4uCiAgIEVjbGlwc2UgYWxzbyBoYXMgdGlwcyBhbmQgdG9vbHMgdG8gYWlkIGRldmVsb3BlcnMgdG8gZGVidWcgCiAgIGFuZCB0cmFjayBkb3duIHBlcmZvcm1hbmNlIHByb2JsZW1zLiBUaGV5IGFyZSBsaXN0ZWQgaGVyZToKICAgPG9sPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZWNsaXBzZS9kZXZlbG9wbWVudC9wZXJmb3JtYW5jZS9ibG9vcGVycy5odG1sIj5QZXJmb3JtYW5jZSBibG9vcGVyczwvYT48L2xpPgogICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvfmNoZWNrb3V0fi9wbGF0Zm9ybS1jb3JlLWhvbWUvZGV2Lmh0bWwjdG9vbHMiPkNvcmUgdG9vbHM8L2E+PC9saT4KICAgIDxsaT48YSBocmVmPSJodHRwOi8vZGV2LmVjbGlwc2Uub3JnL3ZpZXdjdnMvaW5kZXguY2dpL35jaGVja291dH4vcGxhdGZvcm0tc3d0LWhvbWUvZGV2Lmh0bWwjdG9vbHMiPlNXVCB0b29sczwvYT48L2xpPgogICA8L29sPgogICA8cD5Db21wb25lbnRzIG1heSBoYXZlIHRoZWlyIG93biB0ZXN0aW5nIHJlcXVpcmVtZW50cy4gRm9yIGV4YW1wbGUsIAogICB0aGUgc2VydmVyIHRvb2xzIGZyYW1ld29yayBvZnRlbiBjYWxsIEFQSXMgb24gc2VydmVyIGV4dGVuc2lvbnMgdG8gcmV0cmlldmUgZGF0YSBhYm91dCB0aGUgCiAgIGV4dGVuc2lvbi4gU29tZSBvZiB0aGVzZSBBUElzIG11c3QgYmUgc2hvcnQgcnVubmluZyBhcyB0aGV5IGFyZSBjYWxsZWQgZnJvbSB0aGUgVUkuIFRoZSBzZXJ2ZXIgCiAgIHRvb2xzIGZyYW1ld29yayBwcm92aWRlcyBhYnN0cmFjdCBwZXJmb3JtYW5jZSB0ZXN0IGNhc2VzIHRoYXQgZXh0ZW5zaW9ucyBzaG91bGQgZXh0ZW5kIHRvIHZlcmlmeSAKICAgdGhhdCBjb2RlIGNvbnRyaWJ1dGVkIGJ5IHRoZSBleHRlbnNpb24gZG9lcyBub3QgcmVncmVzcyBwZXJmb3JtYW5jZSBpbiB0aGUgYmFzZSBmcmFtZXdvcmsuIAogICBQZXJmb3JtYW5jZSByZXF1aXJlbWVudHMgZnJvbSBjb21wb25lbnQgdGVhbXMgYXJlIGxpc3RlZCBpbiBhIGRvY3VtZW50IHdoaWNoIGlzIGxvY2F0ZWQgaW4gdGhhdCAKICAgY29tcG9uZW50knMgk2RldmVsb3BtZW50lCBkaXJlY3RvcnkgaW4gQ1ZTLiBQbGVhc2UgcmVmZXIgdG8gdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvd2VidG9vbHMvZGV2ZWxvcG1lbnQvV1RQRGV2ZWxvcG1lbnRQcmFjdGljZS5odG1sIj5XVFAgRGV2ZWxvcG1lbnQgUHJhY3RpY2VzPC9hPgogICBkb2N1bWVudCByZWdhcmRpbmcgYW55IGRldmVsb3BtZW50IHJlbGF0ZWQgaXNzdWVzLgogICA8L3A+CiAgPC9URD4KIDwvVFI+CjwvdGFibGU+Cgo8dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9NSBjZWxscGFkZGluZz0yIHdpZHRoPSIxMDAlIiA+CiA8dHI+CiAgPHRkIGFsaWduPUxFRlQgdmFsaWduPVRPUCBjb2xzcGFuPSIzIiBiZ2NvbG9yPSIjMDA4MEMwIj4gPGI+PGZvbnQgZmFjZT0iQXJpYWwsSGVsdmV0aWNhIiBjb2xvcj0iI0ZGRkZGRiI+PGEgbmFtZT0icG9saWN5Ij48L2E+Q3JlYXRpbmcganVuaXQgdGVzdCBjYXNlczwvZm9udD48L2I+PC90ZD4KIDwvdHI+CiA8dHI+CiAgPHRkIGFsaWduPSJMRUZUIiB2YWxpZ249IlRPUCI+CiAgIDxwPkhlcmUncyBhIGxhdW5kcnkgbGlzdCBmb3IgaW50ZWdyYXRpbmcgdGVzdCBwbHVnaW5zIGludG8gdGhlIFdUUCBidWlsZDoKICAgPG9sPgogICAgPGxpPkNvbW1pdCB0aGUgcGx1Z2luIGludG8gQ1ZTLCB1c2UgdGhlIGNvbXBvbmVudCdzICJwZXJmb3JtYW5jZS10ZXN0cyIgZm9sZGVyLiBGb3IgZXhhbXBsZSwKICAgIHRoZSBvcmcuZWNsaXBzZS53c3Qud3NkbC50ZXN0cy5wZXJmb3JtYW5jZSBwbHVnaW4gc2hvdWxkIGJlIHBsYWNlZCBpbnRvCiAgICAvaG9tZS93ZWJ0b29scy93c3QvY29tcG9uZW50cy93c2RsL3BlcmZvcm1hbmNlLXRlc3RzLjwvbGk+CiAgICA8bGk+QWRkIHRoZSBwbHVnaW4gdG8gdGhlIGNvbXBvbmVudCdzIHRlc3RzIG1hcCBmaWxlLiBUaGlzIG1hcCBmaWxlIGNhbiBiZSBmb3VuZCBpbnNpZGUKICAgIHRoZSAvaG9tZS93ZWJ0b29scy9vcmcuZWNsaXBzZS53dHAucmVsZW5nL21hcHMgZGlyZWN0b3J5LjwvbGk+CiAgICA8bGk+QWRkIHRoZSBwbHVnaW4gdG8gdGhlIGZlYXR1cmUueG1sIGZpbGUuIFRoaXMgZmlsZSBjYW4gYmUgZm91bmQgaW5zaWRlIHRoZQogICAgL2hvbWUvd2VidG9vbHMvJmx0O3N1Yi1wcm9qZWN0Jmd0Oy9hc3NlbWJseS9mZWF0dXJlcy8mbHQ7cGVyZm9ybWFuY2UgZmVhdHVyZSZndDsgZGlyZWN0b3J5LjwvbGk+CiAgICA8bGk+VXBkYXRlIHRlc3QucHJvcGVydGllcyBhbmQgdGVzdC54bWwgaW5zaWRlIC9ob21lL3dlYnRvb2xzL29yZy5lY2xpcHNlLnd0cC5yZWxlbmcvdGVzdFNjcmlwdHMgdG8gaW5jbHVkZQogICAgdGhlIG5ldyBwZXJmb3JtYW5jZSBwbHVnaW5zLjwvbGk+CiAgIDwvb2w+CiAgIDxwPgogICBUaGUgPGEgaHJlZj0iaHR0cDovL2Rldi5lY2xpcHNlLm9yZy92aWV3Y3ZzL2luZGV4LmNnaS8lN0VjaGVja291dCU3RS9vcmcuZWNsaXBzZS50ZXN0LnBlcmZvcm1hbmNlL2RvYy9QZXJmb3JtYW5jZSUyMFRlc3RzJTIwSG93VG8uaHRtbCI+RWNsaXBzZSBUZXN0cyBIb3ctVG8gZG9jdW1lbnQ8L2E+CiAgIGhhcyBhIHZlcnkgdGhvcm91Z2ggZXhwbGFpbmF0aW9uIG9uIGhvdyB0byBjcmVhdGUgYW5kIHJ1biBwZXJmb3JtYW5jZSB0ZXN0IGNhc2VzIHVzaW5nIHRoZSBFY2xpcHNlCiAgIHBlcmZvcm1hbmNlIGluZnJhc3RydWN0dXJlLiAKICAgPC9wPgogIDwvdGQ+CiA8L3RyPgo8L3RhYmxlPgoKPHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTUgY2VsbHBhZGRpbmc9MiB3aWR0aD0iMTAwJSIgPgogPHRyPgogIDx0ZCBhbGlnbj1MRUZUIHZhbGlnbj1UT1AgY29sc3Bhbj0iMyIgYmdjb2xvcj0iIzAwODBDMCI+IDxiPjxmb250IGZhY2U9IkFyaWFsLEhlbHZldGljYSIgY29sb3I9IiNGRkZGRkYiPldUUCBwZXJmb3JtYW5jZSBwcm9jZXNzPC9mb250PjwvYj48L3RkPgogPC90cj4KIDx0cj4KICA8dGQgYWxpZ249IkxFRlQiIHZhbGlnbj0iVE9QIj4KICAgPHA+VGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgcHJvY2VzcyBmb3IgdHJhY2tpbmcgcGVyZm9ybWFuY2UgaW4gV1RQLiBJdCBpcyBiYXNlZCBvbiB0aGUgCiAgIHByb2Nlc3MgdXNlZCBieSB0aGUgRWNsaXBzZSBQbGF0Zm9ybSBQcm9qZWN0LiBBbGwgcGVyZm9ybWFuY2UgdGVzdHMgbXVzdCBiZSBhdXRvbWF0ZWQuCiAgIFBlcmZvcm1hbmNlIHRlc3RzIGFyZSBydW4gZXZlcnkgd2VlayB1c2luZyBUaHVyc2RheSdzCiAgIGludGVncmF0aW9uIGJ1aWxkcy4gUGVyZm9ybWFuY2UgdGVzdHMgc2hvdWxkOgogICA8b2w+CiAgICA8bGk+bmV2ZXIgaGF2ZSBjb21waWxlIGVycm9yczwvbGk+CiAgICA8bGk+YWx3YXlzIHJ1biB0byBjb21wbGV0aW9uPC9saT4KICAgPC9vbD4KICAgPHA+SWYgZWl0aGVyIGNvbmRpdGlvbiBmYWlscywgZmFpbHVyZXMgc2hvdWxkIGJlIGhhbmRsZWQgaW1tZWRpYXRlbHkgYWNjb3JkaW5nIHRvIHRoZQogICA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3dlYnRvb2xzL2RldmVsb3BtZW50L1dUUERldmVsb3BtZW50UHJhY3RpY2UuaHRtbCI+V1RQIERldmVsb3BtZW50IFByYWN0aWNlcyBkb2N1bWVudDwvYT4uCiAgIFBlcmZvcm1hbmNlIHJlc3VsdHMgYXJlIHN0b3JlIGluIGEgQ2xvdWRzY2FwZSBkYXRhYmFzZSBhbmQgYXJlIGNvbXBhcmVkIGFnYWluc3QgcmVzdWx0cyBmcm9tIAogICB0aGUgcHJldmlvdXMgcmVsZWFzZS4gSW4gY2FzZSBvZiBhIHJlZ3Jlc3Npb24sIGEgbm90ZSB3aWxsIGJlIHBvc3RlZCB0byB0aGUgbWFpbGluZyBsaXN0CiAgIGluZGljYXRpbmcgdGhlIHByb2JsZW0uCiAgIDxvbD4KICAgIDxsaT50aGUgZGV2ZWxvcGVyIHdobyBpbnRyb2R1Y2VkIHRoZSByZWdyZXNzaW9uIHNob3VsZCBmaXggdGhlIHBlcmZvcm1hbmNlIHByb2JsZW08L2xpPgogICAgPGxpPmlmIHRoZSByZWdyZXNzaW9uIGNhbiBiZSBqdXN0aWZpZWQgYnkgYSBuZXcgZmVhdHVyZSwgdGhlbiB0aGUgUE1DIG11c3QgZ2V0IGludm9sdmVkIAogICAgYW5kIGRlY2lkZSBob3cgaW1wb3J0YW50IHRoYXQgZmVhdHVyZSBpcyAoZXguIGFueSBjb21wZXRpdGlvbiwgZXRjKS4gU29sdXRpb25zIG1heSAKICAgIGluY2x1ZGUsIGJ1dCBub3QgbGltaXRlZCB0bywgbWFraW5nIHRoZSBmZWF0dXJlIG9wdGlvbmFsIChleC4gY3JlYXRlIGEgcHJlZmVyZW5jZSBhbmQgdHVybiAKICAgIGl0IG9mZiBieSBkZWZhdWx0KSwgc28gb25seSB1c2VycyB3aG8gd2lzaCB0byB1c2UgaXQgaGF2ZSB0byBwYXkgZm9yIGl0LjwvbGk+CiAgIDwvb2w+CiAgIDxwPlBlcmZvcm1hbmNlIHJlc3VsdHMgZnJvbSB0aGUgd2Vla2x5IGludGVncmF0aW9uIGJ1aWxkIGFyZSByZW5kZXJlZCBpbnRvIGEgZ3JhcGgsIGFuZCBpcwogICBsaW5rZWQgdG8gb24gdGhlIGJ1aWxkIHBhZ2UuIFRoaXMgZ3JhcGggcHJvdmlkZXMgYSBzaW1wbGUgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZSBpbnRlZ3JhdGlvbgogICBidWlsZCBhbmQgdGhlIHJlZmVyZW5jZSBidWlsZC4KICAgPC9wPgogICA8cD5UbyBydW4gcGVyZm9ybWFuY2UgdGVzdHMgZm9yIGEgYnVpbGQgdGhhdCdzIGF2YWlsYWJsZSBmcm9tIHRoZSBFY2xpcHNlIGRvd25sb2FkIFdlYiBzaXRlOgogICA8b2w+CiAgICA8bGk+Q2hlY2sgb3V0IC9ob21lL3dlYnRvb2xzL29yZy5lY2xpcHNlLnd0cC5yZWxlbmc8L2xpPgogICAgPGxpPkNoYW5nZSB0aGUgcHJvcGVydGllcyBmaWxlcyB0byBmaXQgeW91ciBzeXN0ZW0gKGJ1aWxkQWxsLnByb3BlcnRpZXMsIHRlc3RzLnByb3BlcnRpZXMsIGJ1aWxkLmNmZyBhbmQgZXRjKTwvbGk+CiAgICA8bGk+T3BlbiBhIGNvbW1hbmQgcHJvbXB0IGFuZCBuYXZpZ2F0ZSB0byB0aGUgb3JnLmVjbGlwc2Uud3RwLnJlbGVuZyBkaXJlY3Rvcnk8L2xpPgogICAgPGxpPlJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CiAgICAgPHA+YW50IC1mIGNydWlzZS54bWwgLURidWlsZFR5cGU9Jmx0O2J1aWxkVHlwZSZndDsgLURidWlsZElkPSZsdDtidWlsZElkJmd0OyAtRHRpbWVzdGFtcD0mbHQ7dGltZXN0YW1wJmd0OyBwZXJmb3JtYW5jZTwvcD4KICAgICA8cD5Gb3IgZXhhbXBsZTo8L3A+CiAgICAgPHA+YW50IC1mIGNydWlzZS54bWwgLURidWlsZFR5cGU9TiAtRGJ1aWxkSWQ9TjIwMDQxMTI3IC1EdGltZXN0YW1wPTIwMDQxMTI3MTQ1OCBwZXJmb3JtYW5jZTwvcD4KICAgIDwvbGk+CiAgIDwvb2w+CiAgIDxwPgogICBSdW5uaW5nIHBlcmZvcm1hbmNlIHRlc3RzIGZvciBhIGxvY2FsIGJ1aWxkIGlzIHNpbWlsYXIuIEdvIHRvIHlvdXIgJHtidWlsZERpcmVjdG9yeX0gZGlyZWN0b3J5IGFuZCBjaGVjayB0aGUKICAgYnVpbGRUeXBlLCBidWlsZElkIGFuZCB0aW1lc3RhbXAgZm9yIHlvdXIgbG9jYWwgYnVpbGQuIEdvIHRocm91Z2ggdGhlIHNhbWUgc3RlcHMgYXMgYWJvdmUuIElmIHlvdSBoYXZlIGEgQ2xvdWRzY2FwZQogICBkYXRhYmFzZSBzZXR1cCAocmVmZXIgdG8gdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuZWNsaXBzZS5vcmcvdmlld2N2cy9pbmRleC5jZ2kvJTdFY2hlY2tvdXQlN0Uvb3JnLmVjbGlwc2UudGVzdC5wZXJmb3JtYW5jZS9kb2MvUGVyZm9ybWFuY2UlMjBUZXN0cyUyMEhvd1RvLmh0bWwiPkVjbGlwc2UgVGVzdHMgSG93LVRvIGRvY3VtZW50PC9hPiksCiAgIHRoZW4gdGhlIHBlcmZvcm1hbmNlIHJlc3VsdHMgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSAke3Rlc3REaXJ9L3Jlc3VsdHMgZGlyZWN0b3J5LCBlbHNlIHRoZSBwZXJmb3JtYW5jZSByZXN1bHRzCiAgIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBjb25zb2xlLgogICA8L3A+CiAgPC90ZD4KIDwvdHI+CjwvdGFibGU+Cgo8L2h0bWw+Cg==