PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIkdvbGQgU3BvbnNvcnMgQW5ub3VuY2VkIGZvciBFY2xpcHNlQ29uIDIwMDciOwoJJHBhZ2VLZXl3b3Jkcwk9ICJFY2xpcHNlY29uLCAyMDA3LCBnb2xkLCBzcG9uc29yIjsKCSRwYWdlQXV0aG9yCQk9ICJJYW4gU2tlcnJldHQiOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuaykKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJNeSBMaW5rIiwgIm15cGFnZS5waHAiLCAiX3NlbGYiKTsKCSMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiKTsKCgkjIEVuZDogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncwoJIwoJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCjxkaXYgaWQ9Im1haW5jb250ZW50Ij4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+CgkJPGgyPlByZXNzIFJlbGVhc2U8L2gyPgoJCTxoMT4kcGFnZVRpdGxlPC9oMT4KCQk8cD48aT5Db25mZXJlbmNlIFRlY2huaWNhbCBQcm9ncmFtIE5vdyBBdmFpbGFibGU8L2k+PC9wPgoJCTxwPjxzdHJvbmc+T1RUQVdBIC0gSmFudWFyeSAyMiwgMjAwNyAtIDwvc3Ryb25nPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG9kYXkgYW5ub3VuY2VkIHRoYXQgQWN0dWF0ZSwgQkVBIFN5c3RlbXMsIEJ1c2luZXNzIE9iamVjdHMsIElCTSBhbmQgS2xvY3dvcmsgaGF2ZSBzaWduZWQgb24gYXMgR29sZCBTcG9uc29ycyBmb3IgRWNsaXBzZUNvbiAyMDA3LCB0aGUgYW5udWFsIGNvbmZlcmVuY2UgdGhhdCBicmluZ3MgdG9nZXRoZXIgdGhlIEVjbGlwc2UgY29tbXVuaXR5LiBHb2xkIFNwb25zb3JzaGlwIGlzIHRoZSBoaWdoZXN0IGxldmVsIG9mIHNwb25zb3JzaGlwIGZvciB0aGUgY29uZmVyZW5jZS4gVGhlIHRoaXJkIGFubnVhbCBFY2xpcHNlQ29uIHdpbGwgYmUgaGVsZCBhdCB0aGUgU2FudGEgQ2xhcmEgQ29udmVudGlvbiBDZW50ZXIsIFNhbnRhIENsYXJhLCBDYWxpZi4sIE1hcmNoIDUtOCwgMjAwNyAKCQk8L3A+CgkJPHA+k0VjbGlwc2VDb24gaXMgb25lIG9mIG15IGZhdm9yaXRlIGV2ZW50cyBmb3IgdGhlIEVjbGlwc2UgY29tbXVuaXR5LiBJdCBpcyBhIGdyZWF0IG9wcG9ydHVuaXR5IHRvIGxlYXJuIG5ldyB0aGluZ3MsIG1lZXQgbmV3IHBlb3BsZSBhbmQgcmVhY3F1YWludCBvbmVzZWxmIHdpdGggdGhlIEVjbGlwc2UgZWNvc3lzdGVtLJQgZXhwbGFpbmVkIE1pa2UgTWlsaW5rb3ZpY2gsIGV4ZWN1dGl2ZSBkaXJlY3RvciwgRWNsaXBzZSBGb3VuZGF0aW9uLiCTV2UgYXJlIHRocmlsbGVkIHRvIGhhdmUgb3VyIEdvbGQgU3BvbnNvcnMgaW52ZXN0IHRoZSB0aW1lIGFuZCByZXNvdXJjZSBpbiBFY2xpcHNlQ29uLiBUaGVpciBzdXBwb3J0IGlzIGltcG9ydGFudCB0byB0aGUgb3ZlcmFsbCBzdWNjZXNzIG9mIHRoZSBjb25mZXJlbmNlLpQ8L3A+CgkJCgkJPHA+VGhlIEVjbGlwc2VDb24gdGVjaG5pY2FsIHByb2dyYW0gaXMgbm93IGF2YWlsYWJsZS4gQ29uc2lzdGluZyBvZiBvdmVyIDIwMCBzZXNzaW9ucywgdGhlIGNvbmZlcmVuY2UgcHJvZ3JhbSB3aWxsIGFwcGVhbCB0byBiZWdpbm5lcnMgdGhyb3VnaCBhZHZhbmNlZCB1c2VycywgZGV2ZWxvcGVycyBvZiBFY2xpcHNlLWJhc2VkIGFwcGxpY2F0aW9ucywgZW50ZXJwcmlzZSBhcmNoaXRlY3RzIGFuZCBvdGhlciB0ZWNobm9sb2d5IGRlY2lzaW9uIG1ha2Vycy4gUGxlYXNlIHZpc2l0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZWNvbi5vcmciPnd3dy5lY2xpcHNlY29uLm9yZzwvYT4gZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2dyYW0uIDwvcD4KCgkJPHA+PGI+UmVnaXN0cmF0aW9uIEluZm9ybWF0aW9uPC9iPjwvYnI+CgkJUmVnaXN0cmF0aW9uIGZvciBFY2xpcHNlQ29uIDIwMDcgaXMgbm93IG9wZW4uIE1lbWJlcnMgb2YgdGhlIHByZXNzIGFuZCBhbmFseXN0IGNvbW11bml0eSBhcmUgZW5jb3VyYWdlZCB0byBhdHRlbmQgRWNsaXBzZUNvbiAyMDA3LiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb25mZXJlbmNlLCBpbmNsdWRpbmcgcmVnaXN0cmF0aW9uLCB0cmF2ZWwgYW5kIGhvdGVsIGRldGFpbHMsIGNhbiBiZSBmb3VuZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Vjb24ub3JnIj53d3cuZWNsaXBzZWNvbi5vcmc8L2E+LgoJCTwvcD4KCQoJCTxwPjxzdHJvbmc+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvc3Ryb25nPjxiciAvPgoJCUVjbGlwc2UgaXMgYW4gb3BlbiBzb3VyY2UgY29tbXVuaXR5IHdob3NlIHByb2plY3RzIGFyZSBmb2N1c2VkIG9uIHByb3ZpZGluZyBhbiBleHRlbnNpYmxlIGRldmVsb3BtZW50IHBsYXRmb3JtIGFuZCBhcHBsaWNhdGlvbiBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBzb2Z0d2FyZS4gRWNsaXBzZSBwcm92aWRlcyBleHRlbnNpYmxlIHRvb2xzIGFuZCBmcmFtZXdvcmtzIHRoYXQgc3BhbiB0aGUgc29mdHdhcmUgZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQgcGVyZm9ybWFuY2UsIGJ1c2luZXNzIGludGVsbGlnZW5jZSwgcmljaCBjbGllbnQgYXBwbGljYXRpb25zIGFuZCBlbWJlZGRlZCBkZXZlbG9wbWVudC4gQSBsYXJnZSwgdmlicmFudCBlY29zeXN0ZW0gb2YgbWFqb3IgdGVjaG5vbG9neSB2ZW5kb3JzLCBpbm5vdmF0aXZlIHN0YXJ0LXVwcywgdW5pdmVyc2l0aWVzIGFuZCByZXNlYXJjaCBpbnN0aXR1dGlvbnMgYW5kIGluZGl2aWR1YWxzIGV4dGVuZCwgY29tcGxlbWVudCBhbmQgc3VwcG9ydCB0aGUgRWNsaXBzZSBQbGF0Zm9ybS48L3A+CgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZiBFY2xpcHNlIGFuZCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGFyZSBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZyI+d3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CgkJCgkJPHA+PGNlbnRlcj48aT5BbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy48L2k+PC9jZW50ZXI+PC9wPgoJCQoJCTxiciAvPjxiciAvPjxzdHJvbmc+UHJlc3MgQ29udGFjdDwvc3Ryb25nPjxicj4JCgkJSm9obiBNb3JhbiBvciBMb3JpIEtyb2xsPGJyLz4KCQlTY2h3YXJ0eiBDb21tdW5pY2F0aW9uczxici8+CgkJNzgxLTY4NC0wNzcwPGJyLz4KCQllY2xpcHNlQHNjaHdhcnR6LXByLmNvbSA8YnIvPgoJCTxiciAvPgoJCQoJCTxjZW50ZXI+IyAjICM8L2NlbnRlcj4gCgkJPGJyIC8+CgkJPGJyPgoJCQk8YnI+Cgk8L2Rpdj4KCjwvZGl2PgoKCgkJCgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4KCg==