PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgiX3Byb2plY3RDb21tb24ucGhwIik7ICAgICMgQWxsIG9uIHRoZSBzYW1lIGxpbmUgdG8gdW5jbHV0dGVyIHRoZSB1c2VyJ3MgZGVza3RvcCcKCgojCiMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuCiRwYWdlVGl0bGUgCQk9ICJFY2xpcHNlIEtpY2tzIE9mZiBBbm51YWwgRWNsaXBzZUNvbiBDb25mZXJlbmNlIjsKJHBhZ2VLZXl3b3Jkcwk9ICJlY2xpcHNlY29uLCBjb21tdW5pdHksIHByZXNzLCByZWxlYXNlLCBydW50aW1lLCBPU0dpIjsKJHBhZ2VBdXRob3IJCT0gIklhbiBTa2VycmV0dCI7CgojIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKIyBGb3JtYXQgaXMgTGluayB0ZXh0LCBsaW5rIFVSTCAoY2FuIGJlIGh0dHA6Ly93d3cuc29tZW90aGVyc2l0ZS5jb20vKSwgdGFyZ2V0IChfc2VsZiwgX2JsYW5rKQojICROYXYtPmFkZEN1c3RvbU5hdigiTXkgTGluayIsICJteXBhZ2UucGhwIiwgIl9zZWxmIik7CiMgJE5hdi0+YWRkQ3VzdG9tTmF2KCJHb29nbGUiLCAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIsICJfYmxhbmsiKTsKCiMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCiMKCiMgUGFzdGUgeW91ciBIVE1MIGNvbnRlbnQgYmV0d2VlbiB0aGUgRU9IVE1MIG1hcmtlcnMhCiRodG1sID0gPDw8RU9IVE1MCgkJPHN0eWxlPgoJCS5wYWRkZWRsaXN0IGxpIHsJcGFkZGluZy1ib3R0b206N3B4Owl9Cgk8L3N0eWxlPgo8ZGl2IGlkPSJtYWluY29udGVudCI+Cgk8ZGl2IGlkPSJtaWRjb2x1bW4iPgoJCTxoMj5QcmVzcyBSZWxlYXNlPC9oMj4KCgkJPGNlbnRlcj4KCQk8aDE+JHBhZ2VUaXRsZTwvaDE+CgoJCTxwPjxpPjI1IENvbW11bml0eSBNZW1iZXJzIEFubm91bmNlIE5ldyBJbm5vdmF0aW9ucyBhbmQgUHJvZHVjdHM8L2k+PC9wPjwvY2VudGVyPgkJCgoJCTxwPjxzdHJvbmc+U0FOVEEgQ0xBUkEsIENhbGlmLiwgTWFyY2ggMTgsIDIwMDggJiMxNTA7IDwvc3Ryb25nPgoJCVRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG9kYXkgd2VsY29tZWQgcGFydGljaXBhbnRzIHRvIEVjbGlwc2VDb24gMjAwOCwgdGhlIGZpZnRoIGFubnVhbCBFY2xpcHNlIGNvbW11bml0eSBjb25mZXJlbmNlLCBiZWluZwoJCWhlbGQgYXQgdGhlIFNhbnRhIENsYXJhIENvbnZlbnRpb24gQ2VudGVyIGluIFNhbnRhIENsYXJhLCBDYWxpZi4gIEVjbGlwc2VDb24gMjAwOCB3aWxsIGZlYXR1cmUgdGhlIGxhdGVzdCBFY2xpcHNlIGRldmVsb3BtZW50cwoJCWFuZCB3aWxsIHByb3ZpZGUgYSBmb3J1bSBmb3IgYXR0ZW5kZWVzIHRvIGRpc2N1c3Mga2V5IGJ1c2luZXNzIGFuZCB0ZWNobmljYWwgaXNzdWVzIGZhY2luZyB0aGUgY29tbXVuaXR5LiA8L3A+CgkJCgkJPHA+RGFuIEx5b25zLCBzZW5pb3IgZWRpdG9yIGF0IEZvcmJlcyBhbmQgYXV0aG9yIG9mIHRoZSBwb3B1bGFyIGJsb2csIEZha2UgU3RldmUgSm9icywgd2lsbCBkZWxpdmVyIHRoZSBvcGVuaW5nIGtleW5vdGUKCQlwcmVzZW50YXRpb24uICBPdGhlciBrZXlub3RlcyB3aWxsIGJlIGdpdmVuIGJ5IFNhbSBSYW1qaSBmcm9tIE1pY3Jvc29mdCBPcGVuIFNvdXJjZSBMYWJzIGFuZCBDb3J5IERvY3Rvcm93LCBzY2llbmNlIGZpY3Rpb24KCQlhdXRob3IgYW5kIG5vdGVkIG9wZW4gc291cmNlIGFkdm9jYXRlLjwvcD4KCQkKCQk8cD5FY2xpcHNlQ29uIDIwMDggZmVhdHVyZXMgb3ZlciAzNTAgdGVjaG5pY2FsIHRhbGtzIGFuZCB0dXRvcmlhbHMgb24gYSB2YXJpZXR5IG9mIEVjbGlwc2UgcHJvamVjdHMsIGluY2x1ZGluZyBFcXVpbm94LAoJCUVjbGlwc2UgUmljaCBDbGllbnQgUGxhdGZvcm0gKFJDUCksIFJpY2ggQWpheCBQbGF0Zm9ybSAoUkFQKSwgTXlseW4sIERldmljZSBEZXZlbG9wZXIgU29mdHdhcmUgUGxhdGZvcm0gKERTRFApLCBFY2xpcHNlCgkJTW9kZWxpbmcgcHJvamVjdCBhbmQgbWFueSBvdGhlcnMuICBFY2xpcHNlQ29uIDIwMDggYWxzbyBmZWF0dXJlcyB0aGUgT1NHaSBEZXZDb24gYW5kIHRoZSBFY2xpcHNlL09NRyBNb2RlbGluZyBTeW1wb3NpdW0uPC9wPgoJCQoJCTxwPjQ3IG9yZ2FuaXphdGlvbnMgYXJlIHBhcnRpY2lwYXRpbmcgaW4gRWNsaXBzZUNvbiBhcyBjb25mZXJlbmNlIHNwb25zb3JzLCBpbmNsdWRpbmcgR29sZCBzcG9uc29ycyBBTUQsIEJFQSwgQklSVCBFeGNoYW5nZSwKCQlCbGFja0JlcnJ5LCBDbG91ZHNtaXRoLCBJQk0sIEpCb3NzLCBPcmFjbGUsIFJlcGxheSBTb2x1dGlvbnMsIFNreXdheSBTb2Z0d2FyZSwgU29wZXJhIGFuZCBXaW5kIFJpdmVyLiBBIG51bWJlciBvZiBFY2xpcHNlCgkJbWVtYmVyIGNvbXBhbmllcyBhcmUgYWxzbyBhbm5vdW5jaW5nIGEgdmFyaWV0eSBvZiBleGNpdGluZyBuZXcgaW5pdGlhdGl2ZXMgYXQgdGhpcyB5ZWFyJiMxNDY7cyBjb25mZXJlbmNlLCBpbmNsdWRpbmc6CgkJCTx1bD4KCQkJCgkJCTxsaT48Yj5BY3R1YXRlPC9iPiBBY3R1YXRlJiMxNDY7cyBCSVJUIEV4Y2hhbmdlIGNvbW11bml0eSAoPGEgaHJlZj0iaHR0cDovL3d3dy5iaXJ0LWV4Y2hhbmdlLmNvbSIgdGFyZ2V0PSJibGFuayI+aHR0cDovL3d3dy5iaXJ0LWV4Y2hhbmdlLmNvbTwvYT4pLAoJCQlsYXVuY2hlZCBpbiBTZXB0ZW1iZXIgMjAwNywgaXMgYSBnb2xkIHNwb25zb3Igb2YgdGhpcyB5ZWFyJiMxNDY7cyBFY2xpcHNlQ29uIGNvbmZlcmVuY2UuIFdpdGggMTMgc2Vzc2lvbnMgZGVkaWNhdGVkIHRvIEJJUlQsCgkJCWF0dGVuZGVlcyB3aWxsIGdhaW4gYSBmaXJzdC1jbGFzcyBlZHVjYXRpb25hbCBleHBlcmllbmNlIGFuZCB3aWxsIHdhbGsgYXdheSB3aXRoIHRoZSB0b29scyBhbmQgdW5kZXJzdGFuZGluZyB0aGV5IG5lZWQgdG8KCQkJdXNlIEJJUlQgaW4gdGhlIHJlYWwgd29ybGQuPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LmJ1c2luZXNzd2lyZS5jb20vbmV3cy9ob21lLzIwMDgwMzEwMDA1NDIxL2VuIiB0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3LmJ1c2luZXNzd2lyZS5jb20vbmV3cy9ob21lLzIwMDgwMzEwMDA1NDIxL2VuPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgoJCQkKCQkJPGxpPjxiPkFueXdhcmUgVGVjaG5vbG9naWVzPC9iPiwgYXMgYW4gRWNsaXBzZSBleHBlcnQsIHdvcmtzIHdpdGggdGhlIGxlYWRpbmcgRnJlbmNoIGVuZXJneSBwcm9kdWNlciBpbiBGcmFuY2UgdG8gcHJvdmlkZQoJCQlhIHNvbHV0aW9uIGJhc2VkIG9uIEVjbGlwc2UgUkNQLCBhbGxvd2luZyBkYXRhIGFjcXVpc2l0aW9uIGFuZCB0ZXN0cyBtb25pdG9yaW5nIGR1cmluZyBlbmVyZ3kgcHJvZHVjdGlvbi48YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYW55d2FyZS10ZWNoLmNvbSIgdGFyZ2V0PSJibGFuayI+d3d3LmFueXdhcmUtdGVjaC5jb208L2E+CgkJCTwvbGk+CgkJCQoJCQk8bGk+PGI+QlJFREVYPC9iPiBSZXByZXNlbnRhdGl2ZXMgb2YgQlJFREVYIEdtYkggd2lsbCBnaXZlIHRocmVlIHRhbGtzIGF0IEVjbGlwc2VDb24gMjAwOCAmIzE1MDsgYSB0dXRvcmlhbCBmb3IgdGhlIGF1dG9tYXRlZAoJCQl0ZXN0aW5nIHRvb2wgR1VJZGFuY2VyIChNb24gMTAuMzApLCBhbmQgc2hvcnQgdGFsa3Mgb24gYWdpbGUgdGVzdGluZyAoV2VkIDE1LjAwKSBhbmQgUkNQLWF1dGhvcml6YXRpb24gKFRodXIgMTAuMzApLiBIYW5zLUouCgkJCUJyZWRlIGFuZCBBY2hpbSBMJm91bWw7cmtlIHdpbGwgYWxzbyBiZSBhdmFpbGFibGUgb24gc3RhbmQgMTA0IGluIHRoZSBleGhpYml0aW9uIGhhbGwuPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LmJyZWRleC5kZS9lbi9uZXdzL3BpY3R1cmVzL0VjbGlwc2VDb25fQ29tbXVuaXR5UmVsZWFzZV9lbi5wZGYiIHRhcmdldD0iYmxhbmsiPmh0dHA6Ly93d3cuYnJlZGV4LmRlL2VuL25ld3MvcGljdHVyZXMvRWNsaXBzZUNvbl9Db21tdW5pdHlSZWxlYXNlX2VuLnBkZjwvYT4KCQkJPGJyPjxicj4KCQkJPC9saT4KCQkJCgkJCTxsaT48Yj5Db2RlR2VhcjwvYj4gYW5ub3VuY2VkIGl0IGhhcyB0ZWFtZWQgd2l0aCBJbnN0YW50aWF0aW9ucywgSW5jLiB0byBpbnRlZ3JhdGUgSW5zdGFudGlhdGlvbnMgU3dpbmcgRGVzaWduZXIgdmlzdWFsIGxheW91dAoJCQl0b29scyBpbnRvIENvZGVHZWFyIEpCdWlsZGVyLiBKYXZhIGRldmVsb3BlcnMgdXNpbmcgSkJ1aWxkZXIgd2lsbCBub3cgYmUgYWJsZSB0byBxdWlja2x5IGNvbnN0cnVjdCBtb3JlIHNvcGhpc3RpY2F0ZWQgYW5kCgkJCXJlbGlhYmxlIFN3aW5nLWJhc2VkIEdVSXMgdGhhdCBlbmhhbmNlIHRoZSB1c2VyIGV4cGVyaWVuY2UgZm9yIGVudGVycHJpc2UgYXBwbGljYXRpb25zLiA8YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuY29kZWdlYXIuY29tL2FydGljbGUvMzc2OTUiIHRhcmdldD0iYmxhbmsiPmh0dHA6Ly93d3cuY29kZWdlYXIuY29tL2FydGljbGUvMzc2OTU8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgkJCQoJCQk8bGk+PGI+Q29kZUdlYXI8L2I+IGFubm91bmNlZCBpdCBoYXMgZnVuZGVkIHRoZSBjb250cmlidXRpb24gb2YgYSBuZXcgZmFzdCBSdWJ5IGRlYnVnZ2VyIHRvIEVjbGlwc2UgRHluYW1pYyBMYW5ndWFnZQoJCQlUb29sa2l0LiBUaGUgZGVidWdnZXIgaW5jbHVkZXMgc3RlcHBpbmcsIHJ1biB0byBicmVha3BvaW50LCBzbWFydCBzdGVwLCB2YXJpYWJsZSBpbnRyb3NwZWN0aW9uLCBob3Qgc3dhcCwgcmVtb3RlIGRlYnVnZ2luZwoJCQlhbmQgYSBmcmVlIGZvcm0gZXhwcmVzc2lvbiBhbmFseXplci4gQ29kZUdlYXIgM3JkUmFpbCAxLjEgaW5jbHVkZXMgdGhlIGZhc3QgZGVidWdnZXIgaW4gYWRkaXRpb24gdG8gZnVsbCBzdXBwb3J0IGZvciBSYWlscwoJCQkyLjAsIHJlZmFjdG9yaW5ncyBhbmQgY29udmVyc2lvbiB0b29scyB0byBtaWdyYXRlIGFwcGxpY2F0aW9ucyB0byBSYWlscyAyLnguPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LmNvZGVnZWFyLmNvbS9wcm9kdWN0cy8zcmRyYWlsIiB0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3LmNvZGVnZWFyLmNvbS9wcm9kdWN0cy8zcmRyYWlsPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgkJCQoJCQkKCQkJPGxpPjxiPmNvbXBlb3BsZSBBRzwvYj4gVGhlIFJpZW5hIHByb2plY3QsIHdoaWNoIGlzIGJlaW5nIGxlZCBieSBjb21wZW9wbGUgQUcsIGEgR2VybWFuIElULVNlcnZpY2UgcHJvdmlkZXIsIGhhcyBiZWVuCgkJCXN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZCB3aXRoaW4gdGhlIEVjbGlwc2UgQ29tbXVuaXR5LiBJdCB3aWxsIHByb3ZpZGUgYSBob21vZ2VuZW91cyBwbGF0Zm9ybSBmb3IgYnVzaW5lc3MgZW50ZXJwcmlzZQoJCQlhcHBsaWNhdGlvbnMsIGZyb20gdGhlIHVzZXIgaW50ZXJmYWNlIHRvIHRoZSBiYWNrLWVuZCBpbnRlZ3JhdGlvbiwgYmFzZWQgZW50aXJlbHkgb24gdGhlIEVjbGlwc2UgRXF1aW5veCBwbGF0Zm9ybS48YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuY29tcGVvcGxlLmRlL2VjbGlwc2UiIHRhcmdldD0iYmxhbmsiPmh0dHA6Ly93d3cuY29tcGVvcGxlLmRlL2VjbGlwc2U8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgoJCQk8bGk+PGI+RW1iYXJjYWRlcm88L2I+IFBvd2VyU1FMIHNpbXBsaWZpZXMgU1FMIGRldmVsb3BtZW50IGZvciBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHdpdGggbWFueSBmZWF0dXJlcyBmb3IgaW1wcm92aW5nCgkJCXByb2R1Y3Rpdml0eSBhbmQgcmVkdWNpbmcgZXJyb3JzLiAgQSByaWNoIFNRTCBJREUgd2l0aCBjb2RlIGNvbXBsZXRpb24sIHJlYWwtdGltZSBlcnJvciBjaGVja2luZywgY29kZSBmb3JtYXR0aW5nIGFuZAoJCQlzb3BoaXN0aWNhdGVkIG9iamVjdCB2YWxpZGF0aW9uIHRvb2xzIGhlbHAgc3RyZWFtbGluZSBjb2RpbmcgdGFza3MuIFBvd2VyIFNRTCBvZmZlcnMgbmF0aXZlIHN1cHBvcnQgZm9yIElCTSZyZWc7IERCMiZyZWc7CgkJCWZvciBMVVcsIE9yYWNsZSZyZWc7LCBNaWNyb3NvZnQmcmVnOyBTUUwgU2VydmVyIGFuZCBTeWJhc2UmcmVnOywgYXMgd2VsbCBhcyBKREJDIHN1cHBvcnQuIFBvd2VyU1FMIGlzIGF2YWlsYWJsZSBhcyBhCgkJCXN0YW5kLWFsb25lIGFwcGxpY2F0aW9uIG9yIGFzIGFuIEVjbGlwc2UgcGx1Z2luLiA8YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuZW1iYXJjYWRlcm8uY29tL3Byb2R1Y3RzL3Bvd2Vyc3FsIiB0YXJnZXQ9ImJsYW5rIj53d3cuZW1iYXJjYWRlcm8uY29tL3Byb2R1Y3RzL3Bvd2Vyc3FsPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgoKCQkJPGxpPjxiPkV0aXNoPC9iPiBoYXMgcmVjZW50bHkgYmVjb21lIGFuIEFkZC1JbiBQcm92aWRlciBtZW1iZXIgb2YgdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gVGhlaXIgT3BlbiBSZXF1aXJlbWVudHMgTWFuYWdlbWVudAoJCQlGcmFtZXdvcmsgKE9STUYpIGFuZCB0aGUgZXhlbXBsYXJ5IHRvb2wgYmFzZWQgb24gaXQsIFVzZW1lLCBoYXZlIGJlZW4gYWNjZXB0ZWQgYXMgYSBwdWJsaWMgcHJvcG9zYWwgZm9yIGFuIEVjbGlwc2UgcHJvamVjdC4KCQkJVGhlIHByb3Bvc2FsIGlzIGN1cnJlbnRseSBnYXRoZXJpbmcgY29tbXVuaXR5LiBCb3RoIFVzZW1lIGFuZCBPUk1GIHdpbGwgYmUgdGhlIHN1YmplY3RzIG9yIHByZXNlbnRhdGlvbnMgYXQgRWNsaXBzZUNvbgoJCQkyMDA4LiA8YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuZXRpc2gub3JnL3ByZXNzY2VudHJlL25ld3NfcmVsZWFzZXMvbWFyXzE3XzA4Lmh0bWwiIHRhcmdldD0iYmxhbmsiPmh0dHA6Ly93d3cuZXRpc2gub3JnL3ByZXNzY2VudHJlL25ld3NfcmVsZWFzZXMvbWFyXzE3XzA4Lmh0bWw8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CQkJCgoJCQk8bGk+PGI+ZnJvZ2xvZ2ljPC9iPiwgdGhlIHZlbmRvciBvZiB0aGUgcG9wdWxhciBhdXRvbWF0ZWQgSmF2YSBHVUkgYW5kIFdlYiB0ZXN0aW5nIHRvb2wgU3F1aXNoLCBhbm5vdW5jZWQgaXRzIHJvYWRtYXAgZm9yCgkJCXRoZSB1cGNvbWluZyBTcXVpc2ggNC4wIHJlbGVhc2UuIE9uZSBzdHJhdGVnaWMgbW92ZSBpcyB0byByZXBsYWNlIFNxdWlzaCYjMTQ2O3MgZ3JhcGhpY2FsIHRlc3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQKCQkJd2l0aCBhIGNvbXBsZXRlbHkgcmUtd3JpdHRlbiBFY2xpcHNlLWJhc2VkIElERSBib29zdGluZyB0aGUgcHJvZHVjdGl2aXR5IG9mIFFBIGVuZ2luZWVycyB1c2luZyBTcXVpc2guPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LmZyb2dsb2dpYy5jb20vcGc/aWQ9TmV3c0V2ZW50cyZjYXRlZ29yeT05NCIgdGFyZ2V0PSJibGFuayI+aHR0cDovL3d3dy5mcm9nbG9naWMuY29tL3BnP2lkPU5ld3NFdmVudHMmY2F0ZWdvcnk9OTQ8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CQoJCQkKCQkJPGxpPjxiPkdlbnVpdGVjPC9iPiB3aWxsIHByb3VkbHkgcmVsZWFzZSB0d28gbWFqb3IgcHJvZHVjdHMgYXQgRWNsaXBzZUNvbjogUHVsc2UgMi4wLCBhbiBFY2xpcHNlLWJhc2VkIHByb3Zpc2lvbmluZyB0b29sLCBhbmQKCQkJTXlFY2xpcHNlIDYuMSBCbHVlIEVkaXRpb24sIGEgY3VzdG9tIHRvb2xzdWl0ZSBmb3IgV2ViU3BoZXJlIGFuZCBSQUQgdXNlcnMuIEJvdGggcHJvZHVjdHMgb3JpZ2luYXRlZCBmcm9tIGN1c3RvbWVyIGRlbWFuZCBhbmQKCQkJcHJvdmlkZSBtYXNzaXZlIHByb2R1Y3Rpdml0eSBpbmNyZWFzZXMgZm9yIHByb2Nlc3NlcyBhbmQgZXhwYW5kZWQgZmVhdHVyZSBzZXRzLjxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5teWVjbGlwc2VpZGUuY29tIiB0YXJnZXQ9ImJsYW5rIj53d3cubXllY2xpcHNlaWRlLmNvbTwvYT48YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cucG93ZXJlZGJ5cHVsc2UuY29tIiB0YXJnZXQ9ImJsYW5rIj53d3cucG93ZXJlZGJ5cHVsc2UuY29tPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgkKCQkJCgkJCTxsaT48Yj5JQk08L2I+IChOWVNFOiBJQk0pIGFubm91bmNlZCB0aGF0IGl0cyBKYXp6ICB0ZWNobm9sb2d5IHBsYXRmb3JtIGlzIGhlbHBpbmcgc3R1ZGVudHMgbGVhcm4gaG93IHRvIGNvbGxhYm9yYXRlIG9uCgkJCWdsb2JhbCBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwcm9qZWN0cy4gIEV2ZXJ5IHllYXIgSUJNIGF3YXJkcyB1bml2ZXJzaXRpZXMgd2l0aCBncmFudHMgYWxsb3dpbmcgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZgoJCQlkZXZlbG9wZXJzIHRvIHJlc2VhcmNoIHNvZnR3YXJlIGRldmVsb3BtZW50IHRlYW0gY29sbGFib3JhdGlvbiBvbiBhIGdsb2JhbCBzY2FsZS4gPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LmlibS5jb20vc29mdHdhcmUvcmF0aW9uYWwvamF6ei8iIHRhcmdldD0iYmxhbmsiPmh0dHA6Ly93d3cuaWJtLmNvbS9zb2Z0d2FyZS9yYXRpb25hbC9qYXp6LzwvYT4KCQkJPGJyPjxicj4KCQkJPC9saT4JCgkJCQoJCQk8bGk+PGI+SUxPRzwvYj4gaW50cm9kdWNlcyBBZ2lsZSBCdXNpbmVzcyBSdWxlcyBEZXZlbG9wbWVudCAoQUJSRCkgbWV0aG9kb2xvZ3ksIHRoZSBpbmR1c3RyeSYjMTQ2O3MgZmlyc3QgZnJlZSwgdmVuZG9yLW5ldXRyYWwKCQkJc3RlcC1ieS1zdGVwIG1ldGhvZG9sb2d5IGZvciBkZXZlbG9waW5nIGJ1c2luZXNzIHJ1bGUgYXBwbGljYXRpb25zLiBUaGUgY29tcGFueSBhbHNvIGRvbmF0ZWQgYW4gb3BlbiBzb3VyY2UgSmF2YSB0byBDIwoJCQlzb3VyY2UgY29kZSBjb252ZXJ0ZXIgYW5kIGlzIHNwZWFyaGVhZGluZyB0aGUgQWxiaXJlbyBwcm9qZWN0IGZvciBkZXZlbG9waW5nIFJpY2ggQ2xpZW50IFBsYXRmb3JtIGFwcGxpY2F0aW9ucy48YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuaWxvZy5jb20vY29ycG9yYXRlL3JlbGVhc2VzL2luZGV4LmNmbSIgdGFyZ2V0PSJibGFuayI+aHR0cDovL3d3dy5pbG9nLmNvbS9jb3Jwb3JhdGUvcmVsZWFzZXMvaW5kZXguY2ZtPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgkKCgkJCTxsaT48Yj5Jbm5vb3ByYWN0PC9iPiwgcHJvdmlkZXIgb2YgdGhlIHBvcHVsYXIgWW94b3MgRWNsaXBzZSBkaXN0cmlidXRpb24sIGFubm91bmNlZCB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgbmV3IFNvZnR3YXJlLWFzLWEtU2VydmljZQoJCQlvZmZlcmluZyBmb3IgbWFuYWdpbmcgRWNsaXBzZSBhbmQgdGVhbSBjb2xsYWJvcmF0aW9uLiBZb3hvcyBIb3N0ZWQgRWRpdGlvbiBpcyBhIHNpbXBsZSB0byB1c2Ugc29mdHdhcmUgc2VydmljZSB0aGF0CgkJCWVuYWJsZXMgcHJvZmVzc2lvbmFsIGRldmVsb3BtZW50IHRlYW1zIHRvIGNvbGxhYm9yYXRlIGFuZCBzaGFyZSBwcm9qZWN0IGVudmlyb25tZW50cyBpbmNsdWRpbmcgRWNsaXBzZSB0b29sc2V0cywgY29uZmlndXJhdGlvbnMKCQkJYW5kIHNvdXJjZSBjb2RlLjxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5pbm5vb3ByYWN0LmNvbS9lbi9uZXdzLWV2ZW50cy9uZXdzLXByZXNzLXJlbGVhc2VzL2FydGljbGUveW94b3MtaG9zdGVkLmh0bWwiIHRhcmdldD0iYmxhbmsiPmh0dHA6Ly93d3cuaW5ub29wcmFjdC5jb20vZW4vbmV3cy1ldmVudHMvbmV3cy1wcmVzcy1yZWxlYXNlcy9hcnRpY2xlL3lveG9zLWhvc3RlZC5odG1sPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgkJCQkKCgkJCTxsaT48Yj5JbnN0YW50aWF0aW9uczwvYj4gSW5zdGFudGlhdGlvbnMmIzE0NicgbmV3bHkgZW5oYW5jZWQgQ29kZVBybyBBbmFseXRpWCBTZXJ2ZXIgbm93IG9mZmVycyBtb2Rlcm4sIGFnaWxlIGFuZCBpbm5vdmF0aXZlIHNvZnR3YXJlIGFuYWx5c2lzCgkJCXRvb2xzIGZvciB1c2UgaW4gbWFpbnN0cmVhbSBkZXZlbG9wbWVudCBvcmdhbml6YXRpb25zLiBJdCBhdXRvbWF0ZXMgSmF2YSBjb2RlIGF1ZGl0aW5nLCBtZXRyaWNzLCBjb2RlIGNvdmVyYWdlLCBKVW5pdCB0ZXN0CgkJCXJlc3VsdHMgYW5kIHJlcG9ydHMgdGhyb3VnaCBhIG5ldyBtYW5hZ2VtZW50IGRhc2hib2FyZC4gSXQgaW50ZWdyYXRlcyBpbnRvIGF1dG9tYXRlZCBidWlsZCBzeXN0ZW0gdXNpbmcgQW50IG9yIE1hdmVuIGFuZAoJCQlyZXR1cm5zIGFjdGlvbmFibGUgcmVzdWx0cyB0byBib3RoIGRldmVsb3BlcnMgYW5kIG1hbmFnZXJzIGF1dG9tYXRpY2FsbHkuPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9wcmVzcy9yZWxlYXNlLzA4MDMxNy5odG1sIiB0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9wcmVzcy9yZWxlYXNlLzA4MDMxNy5odG1sPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgoKCQkJPGxpPjxiPktsb2N3b3JrLCBJbmMuPC9iPiwgYSBnbG9iYWwgbGVhZGVyIGluIGF1dG9tYXRlZCBzb3VyY2UgY29kZSBhbmFseXNpcyBzb2x1dGlvbnMgZm9yIGltcHJvdmluZyBzb2Z0d2FyZSBzZWN1cml0eSBhbmQKCQkJcXVhbGl0eSwgYW5ub3VuY2VkIHN1cHBvcnQgZm9yIENhcmJpZGUuYysrLCBhIGZhbWlseSBvZiBFY2xpcHNlLWJhc2VkIGRldmVsb3BtZW50IHRvb2xzIHN1cHBvcnRpbmcgU3ltYmlhbiBPUyBkZXZlbG9wbWVudAoJCQlvbiB0aGUgUzYwIHBsYXRmb3JtLCB0aGUgU2VyaWVzIDgwIHBsYXRmb3JtLCBVSVEgYW5kIE1PQVAuIDxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5rbG9jd29yay5jb20vY29tcGFueS9yZWxlYXNlcy9LbG9jd29ya0Fubm91bmNlU3VwcG9ydEZvckNhcmJpZGUuYXNwIiB0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3Lmtsb2N3b3JrLmNvbS9jb21wYW55L3JlbGVhc2VzL0tsb2N3b3JrQW5ub3VuY2VTdXBwb3J0Rm9yQ2FyYmlkZS5hc3A8L2E+CgkJCTwvbGk+CgoJCQk8bGk+PGI+TWljcm9Eb2M8L2I+IHNwZWNpYWxpemVzIGluIGNvZGUgcXVhbGl0eSBhc3N1cmFuY2UgYW5kIGludGVncmF0ZWQgZGV2ZWxvcG1lbnQgcHJvY2VzcyBzdXBwb3J0IGZvciBlbnRlcnByaXNlIGFuZAoJCQllbWJlZGRlZCBKYXZhIHNvZnR3YXJlIHN5c3RlbXMuIFRoZSBsYXRlc3QgRWNsaXBzZSBiYXNlZCBkZXZlbG9wbWVudCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRml0bmVzc2UgYXV0b21hdGVkIHRlc3RpbmcKCQkJZnJhbWV3b3JrLCB3aGljaCBkaXJlY3RseSBzdXBwb3J0cyB0ZXN0IGV4ZWN1dGlvbiBvbiBkZXZlbG9wbWVudCB3b3Jrc3RhdGlvbnMgYXMgd2VsbCBhcyBvbiBlbWJlZGRlZCBzeXN0ZW1zLjxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlY29uLm9yZy8yMDA4Lz9wYWdlPXN1Yi8maWQ9MTk1IiB0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3LmVjbGlwc2Vjb24ub3JnLzIwMDgvP3BhZ2U9c3ViLyZpZD0xOTU8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgoJCQk8bGk+PGI+T3Blbk1ha2U8L2I+IE1laXN0ZXIgNy4yIHdpbGwgZW5oYW5jZSB0aGUgY29udGludW91cyBpbnRlZ3JhdGlvbiBwcm9jZXNzIGZvciBFY2xpcHNlIGRldmVsb3BlcnMuICBNZWlzdGVyIDcuMiwKCQkJcmVsZWFzZSBzY2hlZHVsZWQgZm9yIE1heSwgaW5jbHVkZXMgdGhlIGFiaWxpdHkgdG8gYXV0b21hdGljYWxseSBtYXNodXAgdGhlIGRldmVsb3BlciYjMTQ2O3MgRWNsaXBzZSBJREUgYnVpbGQgd2l0aCB0aGUKCQkJQ29udGludW91cyBJbnRlZ3JhdGlvbiBidWlsZCBydW5uaW5nIG91dHNpZGUgb2YgRWNsaXBzZSwgcHJldmVudGluZyBicm9rZW4gYnVpbGRzIGNhdXNlZCBieSBzb3VyY2UgY29kZSBjaGFuZ2VzIHRoYXQgaW1wYWN0CgkJCXRoZSBidWlsZCBzY3JpcHRzLiAgPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5tYWtlc29mdHdhcmUuY29tL3ByZXNzLXJlbGVhc2VzLyIgdGFyZ2V0PSJibGFuayI+aHR0cDovL3d3dy5vcGVubWFrZXNvZnR3YXJlLmNvbS9wcmVzcy1yZWxlYXNlcy88L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgoJCQk8bGk+PGI+UG9sYXJpb24gU29mdHdhcmU8L2I+IGFubm91bmNlcyBpdHMgb25nb2luZyBzdXBwb3J0IGZvciB0aGUgU3VidmVyc2l2ZSBUZWFtIFByb3ZpZGVyIHByb2plY3QsIGFuZCB0aGF0IGl0IHdpbGwgc3BvbnNvciBhIGxvbmcKCQkJdGFsayBieSB0aGUgU3VidmVyc2l2ZSBwcm9qZWN0IGxlYWRlciBvbiBpbnRlZ3JhdGluZyBTdWJ2ZXJzaW9uIGluIEVjbGlwc2UgcHJvamVjdHMuIFBvbGFyaW9uIHdpbGwgYWxzbyBob3N0IGEgQk9GIHNlc3Npb24KCQkJd2l0aCB0aGUgU3VidmVyc2l2ZSBwcm9qZWN0IGxlYWRlciB0byBkaXNjdXNzIGFueSBhbmQgYWxsIHRvcGljcyByZWxhdGVkIHRvIFN1YnZlcnNpb24uPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LnBvbGFyaW9uLmNvbS9jb21wYW55L3ByZXNzL2FyY2hpdmUyMDA4L1BvbGFyaW9uX1N1YnZlcnNpdmVfRWNsaXBzZUNvbjA4LnBkZiIgdGFyZ2V0PSJibGFuayI+aHR0cDovL3d3dy5wb2xhcmlvbi5jb20vY29tcGFueS9wcmVzcy9hcmNoaXZlMjAwOC9Qb2xhcmlvbl9TdWJ2ZXJzaXZlX0VjbGlwc2VDb24wOC5wZGY8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgoJCQk8bGk+PGI+UHJvU3lzdDwvYj4gaGFzIGNvbnRyaWJ1dGVkIHRoZSBmb2xsb3dpbmcgc3BlY2lmaWNhdGlvbiBjb21wb25lbnRzIHRvIEVxdWlub3g6IEluaXRpYWwgUHJvdmlzaW9uaW5nLCBJTyBDb25uZWN0b3IKCQkJU2VydmljZSwgV2lyZSBBZG1pbiBTZXJ2aWNlIGFuZCBEZWNsYXJhdGl2ZSBTZXJ2aWNlcy4gUHJvU3lzdCBpcyBhbiBPU0dpIHBpb25lZXIuIFRoZSBPcGVuIFNvdXJjZSBtQmVkZGVkIFNlcnZlciBFcXVpbm94CgkJCUVkaXRpb24gZnJvbSBQcm9TeXN0IGlzIGJhc2VkIG9uIEVjbGlwc2UgRXF1aW5veCBhbmQgY29udGFpbnMgYWRkaXRpb25hbCBmZWF0dXJlcyBhbmQgYnVuZGxlcy4gT3VyIDEyMCsgaW5ob3VzZSBPU0dpCgkJCWV4cGVydHMgc3RhbmQgcmVhZHkgdG8gcHJvdmlkZSBQcm9mZXNzaW9uYWwgU2VydmljZXMgaW5jbHVkaW5nIFN1cHBvcnQgU2VydmljZXMgZm9yIEVxdWlub3guPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LnByb3N5c3QuY29tIiB0YXJnZXQ9ImJsYW5rIj53d3cucHJvc3lzdC5jb208L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CQkJCgkJCQoJCQk8bGk+PGI+UHJvdGVjb2RlPC9iPiBkZXZlbG9wZWQgdGhlIGZpcnN0IGF1dG9tYXRlZCBwcmV2ZW50YXRpdmUgSW50ZWxsZWN0dWFsIFByb3BlcnR5IG1hbmFnZW1lbnQgc29sdXRpb24uICBUaGUgc29mdHdhcmUKCQkJcGx1Zy1pbiB1bm9idHJ1c2l2ZWx5IG1hbmFnZXMgSVAgYnkgZGV0ZWN0aW5nIDEwMCUgb2YgZXh0ZXJuYWwgY29udGVudCwgdGhlbiBsb2dnaW5nLCBpZGVudGlmeWluZyBhbmQgcmVwb3J0aW5nIHBlZGlncmVlCgkJCWR1cmluZyBhbnkgc3RhZ2Ugb2YgYSBzb2Z0d2FyZSBkZXZlbG9wbWVudCBwcm9qZWN0LiAgk1Byb3RlY29kaW5nlCBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBzb2Z0d2FyZSBCaWxsIG9mIE1hdGVyaWFscywKCQkJb2ZmZXJpbmcgYSBjbGVhbiBwZWRpZ3JlZSB0aGF0IGVuc3VyZXMgYWNjdXJhdGUgdXNlIG9mIGxpY2Vuc2VzLjxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5wcm90ZWNvZGUuY29tIiB0YXJnZXQ9ImJsYW5rIj53d3cucHJvdGVjb2RlLmNvbTwvYT4KCQkJPGJyPjxicj4KCQkJPC9saT4KCQkJCgkJCTxsaT48Yj5SZXBsYXkgU29sdXRpb25zPC9iPiB0b2RheSBhbm5vdW5jZWQgc2lnbi11cHMgZm9yIHRyaWFsIGRvd25sb2FkcyBvZiBuZXcgcHJvZHVjdCBSZXBsYXlESVJFQ1RPUiBmb3IgSmF2YSBFRSwgYQoJCQl1bmlxdWUgcmVjb3JkIGFuZCByZXBsYXkgdGVjaG5vbG9neSB3aXRoIGFuIEVjbGlwc2UgcGx1Zy1pbi4gUmVwbGF5RElSRUNUT1IgY2FwdHVyZXMgYW5kIHJlLWV4ZWN1dGVzIGphdmEgYXBwbGljYXRpb25zCgkJCWFsbG93aW5nIGRldmVsb3BlcnMsIFFBIGFuZCBwcm9kdWN0aW9uIHRlYW1zIHRvIGVhc2lseSBhbmQgd2l0aG91dCB0aGUgb3JpZ2luYWwgaXNzdWUgaW5mcmFzdHJ1Y3R1cmUsIHJlcHJvZHVjZQoJCQlub24tcmVwcm9kdWNpYmxlIGJ1Z3MuPGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LnJlcGxheXNvbHV0aW9ucy5jb20vbmV3cy9uZXdzLnBocD9pZD0yOSIgdGFyZ2V0PSJibGFuayI+aHR0cDovL3d3dy5yZXBsYXlzb2x1dGlvbnMuY29tL25ld3MvbmV3cy5waHA/aWQ9Mjk8L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgkJCQoJCQk8bGk+PGI+UmVzZWFyY2ggSW4gTW90aW9uIChSSU0pPC9iPiB3aWxsIGJlIHByZXZpZXdpbmcgYSBuZXcgcGx1Zy1pbiB0aGF0IHNlYW1sZXNzbHkgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIEVjbGlwc2UKCQkJZW52aXJvbm1lbnQgZW5hYmxpbmcgZGV2ZWxvcGVycyB0byBjcmVhdGUgcmljaCBKYXZhIGFwcGxpY2F0aW9ucyBmb3IgdGhlIEJsYWNrQmVycnkmcmVnOyBwbGF0Zm9ybS4gUklNIHdpbGwgYWxzbyBiZQoJCQlwcmVzZW50aW5nIGEgc2Vzc2lvbiBvbiAiVGFraW5nIEFwcGxpY2F0aW9ucyBXaXJlbGVzcyB3aXRoIEJsYWNrQmVycnkgYW5kIEVjbGlwc2UiIG9uIE1hcmNoIDE4IGFuZCBob3N0aW5nIGEKCQkJIkJsYWNrQmVycnkgRGV2ZWxvcGVyIERheSIgb24gTWFyY2ggMTkuIDxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5ibGFja2JlcnJ5LmNvbS9nby9lY2xpcHNlIiB0YXJnZXQ9ImJsYW5rIj53d3cuYmxhY2tiZXJyeS5jb20vZ28vZWNsaXBzZTwvYT4KCQkJPGJyPjxicj4KCQkJPC9saT4KCQkJCgkJCTxsaT48Yj5Ta3l3YXkgU29mdHdhcmU8L2I+IGFubm91bmNlcyB0aGF0IFNreXdheSBWaXN1YWwgUGVyc3BlY3RpdmVzIG9mZmVycyB1bmlxdWUgRWNsaXBzZSBwbHVnLWluIGNhcGFiaWxpdGllcyBmb3IKCQkJU3ByaW5nLiAgV2l0aCBTa3l3YXkgVmlzdWFsIFBlcnNwZWN0aXZlcywgZGV2ZWxvcGVycyBub3cgY2FuIG1vZGVsIHRoZWlyIGVudGlyZSBzb2x1dGlvbiAoaW5jbHVkaW5nIGRhdGEgc3RydWN0dXJlcywKCQkJYnVzaW5lc3MgbG9naWMgYW5kIHJpY2ggdXNlci1pbnRlcmZhY2VzKSBvciBzaW1wbHkgc3dpdGNoIHZpZXdzIGFuZCBjb2RlIHdoYXRldmVyIHRoZXkgbmVlZCwgd2hlbmV2ZXIgbmVjZXNzYXJ5LgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LnNreXdheXBlcnNwZWN0aXZlcy5vcmcuIiB0YXJnZXQ9ImJsYW5rIj5SZWFkIE1vcmU8L2E+PGJyPgoJCQk8YSBocmVmPSJodHRwOi8vd3d3LnNreXdheXNvZnR3YXJlLmNvbS9scC9lY2xpcHNlY29uMjAwOC5waHAiIHRhcmdldD0iYmxhbmsiPnd3dy5za3l3YXlzb2Z0d2FyZS5jb20vbHAvZWNsaXBzZWNvbjIwMDgucGhwPC9hPgoJCQk8YnI+PGJyPgoJCQk8L2xpPgoJCQkKCQkJPGxpPjxiPlNwcmluZ1NvdXJjZTwvYj4gdG9kYXkgYW5ub3VuY2VkIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIFNwcmluZ1NvdXJjZSBUb29sIFN1aXRlLCB3aGljaCBidWlsZHMgb24gdGhlIHN1Y2Nlc3Mgb2YKCQkJRWNsaXBzZSwgTXlseW4gYW5kIFNwcmluZyBJREUuIEl0IHNpbXBsaWZpZXMgZGV2ZWxvcG1lbnQgb2YgU3ByaW5nLXBvd2VyZWQgZW50ZXJwcmlzZSBKYXZhIGFwcGxpY2F0aW9ucywgZHJhbWF0aWNhbGx5CgkJCXJlZHVjZXMgaW5mb3JtYXRpb24gb3ZlcmxvYWQgYW5kIGFnZ3JlZ2F0ZXMgdGhlIGJlc3QgcHJhY3RpY2VzIGVzdGFibGlzaGVkIGJ5IFNwcmluZ1NvdXJjZSBjb25zdWx0YW50cyBhbmQgdGhlIFNwcmluZwoJCQljb21tdW5pdHkuIFRvIGRvd25sb2FkIHN0YXJ0aW5nIE1hcmNoIDE4IHBsZWFzZSB2aXNpdCA8YSBocmVmPSJodHRwOi8vd3d3LnNwcmluZ3NvdXJjZS5jb20vcHJvZHVjdHMvc3RzIgoJCQl0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3LnNwcmluZ3NvdXJjZS5jb20vcHJvZHVjdHMvc3RzPC9hPi48YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuc3ByaW5nc291cmNlLmNvbSIgdGFyZ2V0PSJibGFuayI+d3d3LnNwcmluZ3NvdXJjZS5jb208L2E+CgkJCTxicj48YnI+CgkJCTwvbGk+CgkJCQoJCQk8bGk+PGI+VGVhbXByaXNlPC9iPiBhbm5vdW5jZWQgdGhlIGF2YWlsYWJpbGl0eSBvZiBUZWFtcHJpc2UgMy4wLCBpdHMgbGF0ZXN0IHJlbGVhc2Ugb2YgY2xpZW50IGFwcGxpY2F0aW9ucyBwcm92aWRpbmcKCQkJSmF2YSBhbmQgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgdGVhbXMgd2l0aCBmdWxsIGFjY2VzcyB0byB0aGUgYXBwbGljYXRpb24gbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZmVhdHVyZXMgb2YgVmlzdWFsCgkJCVN0dWRpbyAyMDA4IFRlYW0gRm91bmRhdGlvbiBTZXJ2ZXIuICBEZW1vbnN0cmF0aW9ucyB3ZXJlIGJlaW5nIGdpdmVuIGJ5IFRlYW1wcmlzZSBhbmQgTWljcm9zb2Z0IHdoaWxlIGNvLWV4aGliaXRpbmcgYXQKCQkJRWNsaXBzZUNvbiAyMDA4Ljxicj4KCQkJPGEgaHJlZj0iaHR0cDovL3d3dy50ZWFtcHJpc2UuY29tIiB0YXJnZXQ9ImJsYW5rIj53d3cudGVhbXByaXNlLmNvbTwvYT4KCQkJPGJyPjxicj4KCQkJPC9saT4KCQkJCgkJCTxsaT48Yj5WaXJ0dXRlY2gsIEluYy48L2I+LCB0aGUgbGVhZGVyIGluIFZpcnR1YWxpemVkIFNvZnR3YXJlIERldmVsb3BtZW50IChWU0QpLCBhbm5vdW5jZWQgYW4gaW5pdGlhdGl2ZSB0byBhY2NlbGVyYXRlIHRoZQoJCQljcmVhdGlvbiBvZiBzdGFuZGFyZHMgZm9yIHRoZSBWU0QgaW5kdXN0cnkgYW5kIHRvIGRyaXZlIG1haW5zdHJlYW0gYWNjZXB0YW5jZSBvZiBWU0QgdGhyb3VnaG91dCB0aGUgZWxlY3Ryb25pYyBzeXN0ZW1zCgkJCWJ1c2luZXNzLiBWaXJ0dXRlY2ggaW50ZW5kcyB0byBsZXZlcmFnZSBpdHMgZXhwZXJ0aXNlIHRvIHByb3Bvc2UsIHByb21vdGUgYW5kIHN1cHBvcnQgYmVzdCBwcmFjdGljZXMsIGNvbnZlbnRpb25zIGFuZAoJCQlzdGFuZGFyZHMgZm9yIFZTRC48YnI+CgkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYnVzaW5lc3N3aXJlLmNvbS9wb3J0YWwvc2l0ZS9nb29nbGUvP25kbVZpZXdJZD1uZXdzX3ZpZXcmbmV3c0lkPTIwMDgwMzEwMDA1MzAwJm5ld3NMYW5nPWVuIiB0YXJnZXQ9ImJsYW5rIj5odHRwOi8vd3d3LmJ1c2luZXNzd2lyZS5jb20vcG9ydGFsL3NpdGUvZ29vZ2xlLz9uZG1WaWV3SWQ9bmV3c192aWV3Jm5ld3NJZD0yMDA4MDMxMDAwNTMwMCZuZXdzTGFuZz1lbjwvYT4KCQkJPC9saT4KCQkJPC91bD4KCQk8L3A+CgkJCgkJPHA+PGI+QWJvdXQgdGhlIEVjbGlwc2UgRm91bmRhdGlvbjwvYj48YnI+CgkJRWNsaXBzZSBpcyBhbiBvcGVuIHNvdXJjZSBjb21tdW5pdHkgd2hvc2UgcHJvamVjdHMgYXJlIGZvY3VzZWQgb24gcHJvdmlkaW5nIGFuIGV4dGVuc2libGUgZGV2ZWxvcG1lbnQgcGxhdGZvcm0gYW5kIGFwcGxpY2F0aW9uCgkJZnJhbWV3b3JrcyBmb3IgYnVpbGRpbmcgc29mdHdhcmUuIEVjbGlwc2UgcHJvdmlkZXMgZXh0ZW5zaWJsZSB0b29scyBhbmQgZnJhbWV3b3JrcyB0aGF0IHNwYW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50CgkJbGlmZWN5Y2xlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbW9kZWxpbmcsIGxhbmd1YWdlIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBmb3IgSmF2YSwgQy9DKysgYW5kIG90aGVycywgdGVzdGluZyBhbmQKCQlwZXJmb3JtYW5jZSwgYnVzaW5lc3MgaW50ZWxsaWdlbmNlLCByaWNoIGNsaWVudCBhcHBsaWNhdGlvbnMgYW5kIGVtYmVkZGVkIGRldmVsb3BtZW50LiBBIGxhcmdlLCB2aWJyYW50IGVjb3N5c3RlbSBvZiBtYWpvcgoJCXRlY2hub2xvZ3kgdmVuZG9ycywgaW5ub3ZhdGl2ZSBzdGFydC11cHMsIHVuaXZlcnNpdGllcyBhbmQgcmVzZWFyY2ggaW5zdGl0dXRpb25zIGFuZCBpbmRpdmlkdWFscyBleHRlbmQsIGNvbXBsZW1lbnQgYW5kIHN1cHBvcnQKCQl0aGUgRWNsaXBzZSBQbGF0Zm9ybS48L3A+CgkJCgkJPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBhIG5vdC1mb3ItcHJvZml0LCBtZW1iZXIgc3VwcG9ydGVkIGNvcnBvcmF0aW9uIHRoYXQgaG9zdHMgdGhlIEVjbGlwc2UgcHJvamVjdHMuIEZ1bGwgZGV0YWlscyBvZgoJCUVjbGlwc2UgYW5kIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gYXJlIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnIiB0YXJnZXQ9ImJsYW5rIj53d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4KCgkJPHA+PGNlbnRlcj4jIyM8L2NlbnRlcj48cD4KCQkKCQk8cD5BbGwgY29tcGFueS9wcm9kdWN0IG5hbWVzIGFuZCBzZXJ2aWNlIG1hcmtzIG1heSBiZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiB0aGVpciByZXNwZWN0aXZlIGNvbXBhbmllcy48L3A+CgkJCQkKCQk8cD48Yj5QcmVzcyBDb250YWN0PC9iPjxicj4KCQlTdGV2ZSBFaXNlbnN0YWR0PGJyPgoJCVBhZ2UgT25lIFB1YmxpYyBSZWxhdGlvbnM8YnI+CgkJPGEgaHJlZj0ibWFpbHRvOnN0ZXZlQHBhZ2VvbmVwci5jb20iPnN0ZXZlQHBhZ2VvbmVwci5jb208L2E+PGJyPgoJCTkxOS03ODEtODA5Njxicj4KCQk8YnI+CgoJPC9kaXY+Cgo8L2Rpdj4KCgoJCQoKRU9IVE1MOwoKCgkjIEdlbmVyYXRlIHRoZSB3ZWIgcGFnZQoJJEFwcC0+Z2VuZXJhdGVQYWdlKCR0aGVtZSwgJE1lbnUsICROYXYsICRwYWdlQXV0aG9yLCAkcGFnZUtleXdvcmRzLCAkcGFnZVRpdGxlLCAkaHRtbCk7Cj8+Cgo=