ZGlmZiAtLWdpdCBhL3JlbGVuZy8uY3ZzaWdub3JlIGIvcmVsZW5nLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNGVkZjYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nLy5jdnNpZ25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0ucHJvamVjdApkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLmN2c2lnbm9yZSBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTQyOWUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVzdWx0cwotdG9vbHMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nLy5wcm9qZWN0IGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMDFkZTcuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucmVsZW5nPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvYnVpbGQuc2ggYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9idWlsZC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBmNGQxMC4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9idWlsZC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jIGV4cG9ydCBkaXNwbGF5IGZvciBydW5uaW5nIHRoZSB0ZXN0cwotZXhwb3J0IERJU1BMQVk9OjEKLQotIyBzZXQgdXAgdG8gdXNlIHRoZSBKYXZhIDUgSlJFCi1leHBvcnQgUEFUSD0vb3B0L3B1YmxpYy9jb21tb24vaWJtLWphdmEyLXBwYy01MC9iaW46JFBBVEgKLQotIyBtYWtlIHN1cmUgd2UncmUgaW4gdGhlIHJlbGVuZyBwcm9qZWN0IGRpciAKLWNkIGBkaXJuYW1lICQwYAotCi11bWFzayAwMDIyCi0KLSMgQ2hlY2tvdXQgYmFzZWJ1aWxkZXIgdG8gcnVuIHRoZSBidWlsZAotbWtkaXIgLXAgdG9vbHMKLWNkIHRvb2xzCi1jdnMgLWQ6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L2VjbGlwc2UgXAotCWNoZWNrb3V0IC1yIFJDMl8zNCBvcmcuZWNsaXBzZS5yZWxlbmcuYmFzZWJ1aWxkZXIKLWNkIC4uCi0KLSMgTGV0J3MgZ28hCi1qYXZhIC1qYXIgdG9vbHMvb3JnLmVjbGlwc2UucmVsZW5nLmJhc2VidWlsZGVyL3BsdWdpbnMvb3JnLmVjbGlwc2UuZXF1aW5veC5sYXVuY2hlci5qYXIgXAotCS13cyBndGsgLWFyY2ggcHBjIC1vcyBsaW51eCAtYXBwbGljYXRpb24gb3JnLmVjbGlwc2UuYW50LmNvcmUuYW50UnVubmVyICQqCi0KLSMgQnVpbGQgUkRUIHNlcnZlciBwYWNrYWdlcwotY2QgcmVzdWx0cy9wbHVnaW5zCi0KLSMgQ2hlY2sgb3V0IHJkdC5jb3JlLnJlbW90ZWphcnMsIHJkdC5jb3JlLnN0dWJzIGFuZCBjZHQuY29yZSBmb3Igc291cmNlCi1leHBvcnQgQ1ZTUk9PVD06cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzCi1jdnMgY28gLWQgb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnJlbW90ZWphcnMgb3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUucmVtb3RlamFycwotY3ZzIGNvIC1kIG9yZy5lY2xpcHNlLnB0cC5yZHQuY29yZS5zdHVicyBvcmcuZWNsaXBzZS5wdHAvcmR0L29yZy5lY2xpcHNlLnB0cC5yZHQuY29yZS5zdHVicwotY3ZzIGNvIC1yIGNkdF81XzAgLWQgb3JnLmVjbGlwc2UuY2R0LmNvcmUgb3JnLmVjbGlwc2UuY2R0L2FsbC9vcmcuZWNsaXBzZS5jZHQuY29yZQotCi1jZCBvcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUucmVtb3RlamFycwotCi0jIHJ1biB0aGUgc2NyaXB0IGluIHJlbW90ZWphcnMKLWV4cG9ydCBQQVRIPS9vcHQvcHVibGljL2NvbW1vbi9pYm0tamF2YTItcHBjLTUwL2JpbjokUEFUSAotZWNobyBgamF2YSAtdmVyc2lvbmAKLWphdmEgLWphciAuLi8uLi8uLi90b29scy9vcmcuZWNsaXBzZS5yZWxlbmcuYmFzZWJ1aWxkZXIvcGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmxhdW5jaGVyLmphciBcCi0JLXdzIGd0ayAtYXJjaCBwcGMgLW9zIGxpbnV4IC1hcHBsaWNhdGlvbiBvcmcuZWNsaXBzZS5hbnQuY29yZS5hbnRSdW5uZXIKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL2J1aWxkLnhtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL2J1aWxkLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk2YTYzMy4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9idWlsZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MDUgKzAsMCBAQAotPHByb2plY3QgbmFtZT0iUFRQIiBkZWZhdWx0PSJuaWdodGx5Ij4KLQk8dGFyZ2V0IG5hbWU9ImhpIj4KLQkJPGVjaG8gbWVzc2FnZT0iJHtlY2xpcHNlLmhvbWV9Ii8+Ci0JPC90YXJnZXQ+Ci0JCi0JPHRhcmdldCBuYW1lPSJidWlsZCIgZGVwZW5kcz0iemlwcyx0ZXN0Ii8+Ci0JPHRhcmdldCBuYW1lPSJuaWdodGx5IiBkZXBlbmRzPSJ0YWcsemlwcyxzaWduLHRlc3QsY29weSIvPgotCTx0YXJnZXQgbmFtZT0idGVzdGJ1aWxkIiBkZXBlbmRzPSJ6aXBzLHRlc3QsY29weSIvPgotCTx0YXJnZXQgbmFtZT0iYnVpbGRjb3B5IiBkZXBlbmRzPSJ6aXBzLGNvcHkiLz4KLQkKLQk8dGFyZ2V0IG5hbWU9ImluaXQiPgotCQk8dG91Y2ggZmlsZT0iJHt1c2VyLmhvbWV9Ly5jdnNwYXNzIiAvPgotCQk8dHN0YW1wLz4KLQkJPHByb3BlcnR5IG5hbWU9ImVjbGlwc2VEaXN0IiB2YWx1ZT0iL2hvbWUvZGF0YS9odHRwZC9kb3dubG9hZC5lY2xpcHNlLm9yZy9lY2xpcHNlL2Rvd25sb2Fkcy9kcm9wcy9SLTMuNC0yMDA4MDYxNzIwMDAvZWNsaXBzZS1TREstMy40LWxpbnV4LWd0ay1wcGMudGFyLmd6Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJjZHREaXN0IiB2YWx1ZT0iL2hvbWUvZGF0YS9odHRwZC9kb3dubG9hZC5lY2xpcHNlLm9yZy90b29scy9jZHQvYnVpbGRzLzUuMC4yL0kuSTIwMDgwOTI2MTUwNy9jZHQtbWFzdGVyLTUuMC4yLUkyMDA4MDkyNjE1MDcuemlwIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJteWx5bkRpc3QiIHZhbHVlPSIvaG9tZS9kYXRhL2h0dHBkL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3Rvb2xzL215bHluL3VwZGF0ZS9nYW55bWVkZS9teWx5bi0zLjAuMS52MjAwODA3MjEtMjEwMC1lMy40LnppcCIvPgotCQk8cHJvcGVydHkgbmFtZT0icnNlRGlzdCIgdmFsdWU9Ii9ob21lL2RhdGEvaHR0cGQvZG93bmxvYWQuZWNsaXBzZS5vcmcvZHNkcC90bS9kb3dubG9hZHMvZHJvcHMvUi0zLjAtMjAwODA2MjAyMTMwL1JTRS1TREstMy4wLnppcCIvPgotCQk8cHJvcGVydHkgbmFtZT0icGhvdHJhbkRpc3QiIHZhbHVlPSIvaG9tZS9kYXRhL2h0dHBkL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3RlY2hub2xvZ3kvcGhvdHJhbi91cGRhdGVzL3Bob3RyYW40MGI0LW1hc3Rlci56aXAiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRhdUphcnMiIHZhbHVlPSIke3VzZXIuaG9tZX0vdGF1X2phcnMuemlwIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJicmFuY2hWZXJzaW9uIiB2YWx1ZT0iMi4xLjAiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRpbWVzdGFtcCIgdmFsdWU9IiR7RFNUQU1QfSR7VFNUQU1QfSIgLz4KLQkJPHByb3BlcnR5IG5hbWU9ImZvcmNlQ29udGV4dFF1YWxpZmllciIgdmFsdWU9IiR7dGltZXN0YW1wfSIvPgotCQk8cHJvcGVydHkgbmFtZT0iYnVpbGRpbmdPU0dpIiB2YWx1ZT0idHJ1ZSIvPgotCQk8cHJvcGVydHkgbmFtZT0iYnVpbGREaXJlY3RvcnkiIHZhbHVlPSIke2Jhc2VkaXJ9L3Jlc3VsdHMiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRlc3REaXJlY3RvcnkiIHZhbHVlPSIke2J1aWxkRGlyZWN0b3J5fS90ZXN0Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJiYXNlTG9jYXRpb24iIHZhbHVlPSIke2J1aWxkRGlyZWN0b3J5fS9lY2xpcHNlIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJwZGUuYnVpbGQuc2NyaXB0cyIgdmFsdWU9IiR7ZWNsaXBzZS5wZGVidWlsZC5zY3JpcHRzfSIvPgotCQk8cHJvcGVydHkgbmFtZT0iY29sbGVjdGluZ0ZvbGRlciIgdmFsdWU9ImVjbGlwc2UiLz4KLQkJPHByb3BlcnR5IG5hbWU9ImFyY2hpdmVQcmVmaXgiIHZhbHVlPSJlY2xpcHNlIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJidWlsZFR5cGUiIHZhbHVlPSJJIiAvPgotCQk8cHJvcGVydHkgbmFtZT0iYnVpbGRJZCIgdmFsdWU9IiR7YnVpbGRUeXBlfSR7dGltZXN0YW1wfSIvPgotCQk8cHJvcGVydHkgbmFtZT0iemlwc2RpciIgdmFsdWU9IiR7YnVpbGREaXJlY3Rvcnl9LyR7YnVpbGRUeXBlfS4ke2J1aWxkSWR9Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJtYXN0ZXJGaWxlIiB2YWx1ZT0icHRwLW1hc3Rlci0ke2JyYW5jaFZlcnNpb259LSR7YnVpbGRJZH0uemlwIi8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJlY2xpcHNlVGVzdCIgdmFsdWU9Im9yZy5lY2xpcHNlLnRlc3RfMy4yLjAiLz4KLQkJPHByb3BlcnR5IG5hbWU9Im1haWx0byIgdmFsdWU9Imcud2F0c29uQGNvbXB1dGVyLm9yZyIvPgotCQk8cHJvcGVydHkgbmFtZT0iZWNsaXBzZVJvb3QiIHZhbHVlPSI6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L2VjbGlwc2UiLz4KLQkJPHByb3BlcnR5IG5hbWU9ImJhc2VvcyIgdmFsdWU9IiR7b3NnaS5vc30iLz4KLQkJPHByb3BlcnR5IG5hbWU9ImJhc2V3cyIgdmFsdWU9IiR7b3NnaS53c30iLz4KLQkJPHByb3BlcnR5IG5hbWU9ImJhc2VhcmNoIiB2YWx1ZT0iJHtvc2dpLmFyY2h9Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ0YWdicmFuY2giIHZhbHVlPSIiLz4KLQkJPHByb3BlcnR5IG5hbWU9InRhZ25hbWUiIHZhbHVlPSJ2JHt0aW1lc3RhbXB9Ii8+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ0ZXN0UmVwb3J0cyIgdmFsdWU9IiR7emlwc2Rpcn0vdGVzdFJlcG9ydHMiLz4KLQkJPHByb3BlcnR5IG5hbWU9Imp1bml0LXJlcG9ydC1vdXRwdXQiIHZhbHVlPSIke3Rlc3RSZXBvcnRzfSIvPgotCQk8Y29uZGl0aW9uIHByb3BlcnR5PSJvbldpbmRvd3MiPgotCQkJPG9zIGZhbWlseT0id2luZG93cyIvPgotCQk8L2NvbmRpdGlvbj4KLQkJPG1rZGlyIGRpcj0iJHtidWlsZERpcmVjdG9yeX0iLz4KLQkJPG1rZGlyIGRpcj0iJHt0ZXN0UmVwb3J0c30iLz4KLQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9ImZldGNoIiBkZXBlbmRzPSJpbml0Ij4KLQkJPGFudCBhbnRmaWxlPSJidWlsZC54bWwiIGRpcj0iJHtwZGUuYnVpbGQuc2NyaXB0c30iIHRhcmdldD0icHJlQnVpbGQiPgotCQkJPHByb3BlcnR5IG5hbWU9ImJ1aWxkZXIiIHZhbHVlPSIke2Jhc2VkaXJ9L21hc3RlciIvPgotCQk8L2FudD4KLQkJPGFudCBhbnRmaWxlPSJidWlsZC54bWwiIGRpcj0iJHtwZGUuYnVpbGQuc2NyaXB0c30iIHRhcmdldD0iZmV0Y2giPgotCQkJPHByb3BlcnR5IG5hbWU9ImJ1aWxkZXIiIHZhbHVlPSIke2Jhc2VkaXJ9L21hc3RlciIvPgotCQk8L2FudD4KLQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9InVuemlwIiBkZXBlbmRzPSJpbml0IiB1bmxlc3M9ImRvbnRVbnppcCI+Ci0JCTx1bnRhciBzcmM9IiR7ZWNsaXBzZURpc3R9IiBkZXN0PSIke2J1aWxkRGlyZWN0b3J5fSIgY29tcHJlc3Npb249Imd6aXAiLz4KLQkJPHVuemlwIHNyYz0iJHtyc2VEaXN0fSIgZGVzdD0iJHtidWlsZERpcmVjdG9yeX0iLz4KLQkJPHVuemlwIHNyYz0iJHtjZHREaXN0fSIgZGVzdD0iJHtidWlsZERpcmVjdG9yeX0vZWNsaXBzZSIvPgotCQk8dW56aXAgc3JjPSIke215bHluRGlzdH0iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9L2VjbGlwc2UiLz4KLQkJPHVuemlwIHNyYz0iJHtwaG90cmFuRGlzdH0iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9L2VjbGlwc2UiLz4KLQk8L3RhcmdldD4KLQkKLQk8dGFyZ2V0IG5hbWU9InppcHMiIGRlcGVuZHM9ImluaXQsdW56aXAiPgotCQk8YW50IGFudGZpbGU9ImJ1aWxkLnhtbCIgZGlyPSIke3BkZS5idWlsZC5zY3JpcHRzfSI+Ci0JCQk8cHJvcGVydHkgbmFtZT0iYnVpbGRlciIgdmFsdWU9IiR7YmFzZWRpcn0vbWFzdGVyIiAvPgotCQk8L2FudD4KLQkJPGNvbmNhdCBkZXN0ZmlsZT0iJHt6aXBzZGlyfS9jb21waWxlbG9nLnR4dCI+Ci0JCQk8ZmlsZXNldCBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3BsdWdpbnMiIGluY2x1ZGVzPSIqKi8qLmJpbi5sb2ciLz4KLQkJPC9jb25jYXQ+Ci0JCTxsb2FkZmlsZSBwcm9wZXJ0eT0iY29tcGlsZUxvZyIgc3JjRmlsZT0iJHt6aXBzZGlyfS9jb21waWxlbG9nLnR4dCIvPgotCQk8Y29uZGl0aW9uIHByb3BlcnR5PSJoYXNFcnJvcnMiPgotCQkJPGNvbnRhaW5zIHN0cmluZz0iJHtjb21waWxlTG9nfSIgc3Vic3RyaW5nPSIgRVJST1IiLz4KLQkJPC9jb25kaXRpb24+Ci0JCTxtb3ZlIGZpbGU9IiR7emlwc2Rpcn0vJHttYXN0ZXJGaWxlfSIgdG9kaXI9IiR7YnVpbGREaXJlY3Rvcnl9Ii8+Ci0JCTx1bnppcCBzcmM9IiR7YnVpbGREaXJlY3Rvcnl9LyR7bWFzdGVyRmlsZX0iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9L3NpdGUiLz4KLQkJPG1vdmUgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vZWNsaXBzZS9lcGwtdjEwLmh0bWwiIHRvZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2UiLz4KLQkJPG1vdmUgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vZWNsaXBzZS9ub3RpY2UuaHRtbCIgdG9kaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3NpdGUvZWNsaXBzZSIvPgotCQk8Y29weSBmaWxlPSJidWlsZHNpdGUueG1sIiB0b2ZpbGU9IiR7YnVpbGREaXJlY3Rvcnl9L3NpdGUvZWNsaXBzZS9zaXRlLnhtbCIvPgotCQk8cmVwbGFjZSBmaWxlPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2Uvc2l0ZS54bWwiPgotCQkJPHJlcGxhY2VmaWx0ZXIgdG9rZW49IkBidWlsZFZlcnNpb25AIiB2YWx1ZT0iJHticmFuY2hWZXJzaW9ufS4ke3RpbWVzdGFtcH0iLz4KLQkJPC9yZXBsYWNlPgotCQk8Y29weSBmaWxlPSJwYWNrLnByb3BlcnRpZXMiIHRvZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2UiLz4KLQotCQk8emlwIGRlc3RmaWxlPSIke3ppcHNkaXJ9LyR7bWFzdGVyRmlsZX0iCi0JCQliYXNlZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9zaXRlL2VjbGlwc2UiLz4KLQk8L3RhcmdldD4KLQotCTx0YXJnZXQgbmFtZT0ic2lnbiIgZGVwZW5kcz0iaW5pdCIgdW5sZXNzPSJoYXNFcnJvcnMiPgotCQk8ZXhlYyBleGVjdXRhYmxlPSJzaWduIj4KLQkJCTxhcmcgdmFsdWU9Ii9ob21lL2RhdGEvaHR0cGQvZG93bmxvYWQtc3RhZ2luZy5wcml2L3Rvb2xzL3B0cC9yZWxlbmcvcmVzdWx0cy8ke2J1aWxkVHlwZX0uJHtidWlsZElkfS8ke21hc3RlckZpbGV9Ii8+Ci0JCQk8YXJnIHZhbHVlPSJub21haWwiLz4KLQkJCTxhcmcgdmFsdWU9Ii9ob21lL2RhdGEvaHR0cGQvZG93bmxvYWQtc3RhZ2luZy5wcml2L3Rvb2xzL3B0cC9yZWxlbmcvcmVzdWx0cy9zaWduZWQiLz4KLQkJPC9leGVjPgotCQk8d2FpdGZvciBtYXh3YWl0PSIzMCIgbWF4d2FpdHVuaXQ9Im1pbnV0ZSI+Ci0JCQk8YXZhaWxhYmxlIGZpbGU9IiR7YnVpbGREaXJlY3Rvcnl9L3NpZ25lZC8ke21hc3RlckZpbGV9Ii8+Ci0JCTwvd2FpdGZvcj4KLQkJPG1vdmUgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vc2lnbmVkLyR7bWFzdGVyRmlsZX0iIHRvZGlyPSIke3ppcHNkaXJ9Ii8+Ci0JPC90YXJnZXQ+Ci0JPHRhcmdldCBuYW1lPSJ0ZXN0IiBkZXBlbmRzPSJpbml0IiB1bmxlc3M9Imhhc0Vycm9ycyIvPgotCTx0YXJnZXQgbmFtZT0iY29weSIgZGVwZW5kcz0iaW5pdCIgdW5sZXNzPSJoYXNFcnJvcnMiPgotCQk8cHJvcGVydHkgbmFtZT0iY29weVRvRGlyIiB2YWx1ZT0iL2hvbWUvd3d3L3Rvb2xzL3B0cC9idWlsZHMvJHticmFuY2hWZXJzaW9ufSIvPgotCQk8bWtkaXIgZGlyPSIke2NvcHlUb0Rpcn0vJHtidWlsZFR5cGV9LiR7YnVpbGRJZH0iLz4KLQkJPGNvcHkgdG9kaXI9IiR7Y29weVRvRGlyfS8ke2J1aWxkVHlwZX0uJHtidWlsZElkfSI+Ci0JCQk8ZmlsZXNldCBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9LyR7YnVpbGRUeXBlfS4ke2J1aWxkSWR9Ii8+Ci0JCTwvY29weT4KLQkJPCEtLSBDcmVhdGUgc3ltbGluayB0byBsYXRlc3QgYnVpbGQgLS0+Ci0JCTxzeW1saW5rIGFjdGlvbj0iZGVsZXRlIiBsaW5rPSIke2NvcHlUb0Rpcn0vbGF0ZXN0IiBmYWlsb25lcnJvcj0iZmFsc2UiLz4KLQkJPHN5bWxpbmsgbGluaz0iJHtjb3B5VG9EaXJ9L2xhdGVzdCIgcmVzb3VyY2U9IiR7Y29weVRvRGlyfS8ke2J1aWxkVHlwZX0uJHtidWlsZElkfSIgb3ZlcndyaXRlPSJ0cnVlIi8+Ci0JPC90YXJnZXQ+Ci0JCi0JPHRhcmdldCBuYW1lPSJ0YWdvbmUiPgotCQk8Y3ZzIGN2c3Jvb3Q9Ii9jdnNyb290L3Rvb2xzIiBjb21tYW5kPSJydGFnICR7dGFnYnJhbmNofSAke3RhZ25hbWV9ICR7dGFnbW9kdWxlfSIvPgotCTwvdGFyZ2V0PgotCQotCTx0YXJnZXQgbmFtZT0idGFnIiBkZXBlbmRzPSJpbml0Ij4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hc3RlciIvPgotCQk8L2FudGNhbGw+Ci0JCQotCQk8IS0tRmVhdHVyZXMtLT4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAudXRpbHMtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5jb3JlLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucmVtb3RldG9vbHMtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5vcGVubXBpLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5leHRlcm5hbC1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnNkbS1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC5sYXBpLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGVyZi1mZWF0dXJlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5mb3J0cmFuLWZlYXR1cmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZHQtZmVhdHVyZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJCi0JCTwhLS1QbHVnaW5zLS0+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cCIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAudXRpbHMuY29yZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51dGlscy51aSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucHJveHkucHJvdG9jb2wiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucmVtb3RldG9vbHMudWkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJzZS5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UudWkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnVpIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmNvcmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ubGwuY29yZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5oZWxwIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmxsLnByb3h5Ii8+Ci0JCTwvYW50Y2FsbD4JCQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC51aSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuaGVscCIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5wZS5wcm94eSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUudWkiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpLm9wZW5tcGkuY29yZSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLm1waS5vcGVubXBpLnVpIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5ybS5yZW1vdGUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS51aSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51aSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvZGVidWcvb3JnLmVjbGlwc2UucHRwLmRlYnVnLnNkbSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuc2RtLmNvcmUiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvZGVidWcvb3JnLmVjbGlwc2UucHRwLmRlYnVnLnNkbS51aSIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcudWkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvZGVidWcvb3JnLmVjbGlwc2UucHRwLmRlYnVnLnNkbSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucHJveHkiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnV0aWxzIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LmdlbmVyaWNob3N0Ii8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC5sYXVuY2hlciIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LnVpIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5wcmVmZXJlbmNlcyIvPgotCQk8L2FudGNhbGw+CQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMudXRpbHMiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAubGF1bmNoIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9kb2Mvb3JnLmVjbGlwc2UucHRwLmhlbHAiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LmxhcGkiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzIi8+Ci0JCTwvYW50Y2FsbD4JCQkKLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0Ii8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuY29yZSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLmFuYWx5c2lzIi8+Ci0JCTwvYW50Y2FsbD4JCQotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0Lm9wZW5tcC5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5vcGVubXAudWkucHYiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LndpemFyZHMiLz4KLQkJPC9hbnRjYWxsPgkJCi0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZiIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LmphcnMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBhcGlzZWxlY3QiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBlcmZkbWYiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnNlbGluc3QiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnNlbGluc3Rmb3J0Ii8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC90b29scy9wZXJmL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRvb2xvcHRzIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnJlbW90ZWphcnMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUuc3R1YnMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LnNlcnZpY2VzIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC51aSIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5haXgucHBjIi8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLmxpbnV4LnBwYyIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5saW51eC54ODYiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAubGludXgueDg2XzY0Ii8+Ci0JCTwvYW50Y2FsbD4KLQkJPGFudGNhbGwgdGFyZ2V0PSJ0YWdvbmUiPgotCQkJPHBhcmFtIG5hbWU9InRhZ21vZHVsZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hY29zeC5wcGMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAubWFjb3N4Lng4NiIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi5wYXJhbGxlbCIvPgotCQk8L2FudGNhbGw+Ci0JCTxhbnRjYWxsIHRhcmdldD0idGFnb25lIj4KLQkJCTxwYXJhbSBuYW1lPSJ0YWdtb2R1bGUiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUucGFwaXRlc3QiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LmNvcmUudGVzdHMiLz4KLQkJPC9hbnRjYWxsPgotCQk8YW50Y2FsbCB0YXJnZXQ9InRhZ29uZSI+Ci0JCQk8cGFyYW0gbmFtZT0idGFnbW9kdWxlIiB2YWx1ZT0ib3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LnNlcnZpY2VzLnRlc3QiLz4KLQkJPC9hbnRjYWxsPgotCTwvdGFyZ2V0PgotPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvYnVpbGRzaXRlLnhtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL2J1aWxkc2l0ZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMzdhZjguLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvYnVpbGRzaXRlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08c2l0ZT4KLQk8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vZG93bmxvYWQuZWNsaXBzZS5vcmcvdG9vbHMvcHRwL3JlbGVhc2VzLzIuMSI+Ci0JCVBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIHVwZGF0ZSBzaXRlIC0gUmVsZWFzZSAyLjEKLQk8L2Rlc2NyaXB0aW9uPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLmNvcmVfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLmNvcmUiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC51dGlsc19AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAudXRpbHMiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29sc19AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ubGxfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbCIgdmVyc2lvbj0iQGJ1aWxkVmVyc2lvbkAiPgotCQk8Y2F0ZWdvcnkgbmFtZT0iUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0gMi4xIi8+Ci0JPC9mZWF0dXJlPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5wZV9AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlIiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5yZW1vdGUucmVtb3RldG9vbHMiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlIiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuc2RtX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0iIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5leHRlcm5hbF9AYnVpbGRWZXJzaW9uQC5qYXIiIGlkPSJvcmcuZWNsaXBzZS5wdHAuZXh0ZXJuYWwiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGVfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZSIgdmVyc2lvbj0iQGJ1aWxkVmVyc2lvbkAiPgotCQk8Y2F0ZWdvcnkgbmFtZT0iUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0gMi4xIi8+Ci0JPC9mZWF0dXJlPgotCTxmZWF0dXJlIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLnJtLm9wZW5tcGlfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm9wZW5tcGkiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5wbGR0X0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0IiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5sYXBpX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LmxhcGkiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTwvZmVhdHVyZT4KLQk8ZmVhdHVyZSB1cmw9ImZlYXR1cmVzL29yZy5lY2xpcHNlLnB0cC5wZXJmX0BidWlsZFZlcnNpb25ALmphciIgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wZXJmIiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgdXJsPSJmZWF0dXJlcy9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXVfQGJ1aWxkVmVyc2lvbkAuamFyIiBpZD0ib3JnLmVjbGlwc2UucHRwLnBlcmYudGF1IiB2ZXJzaW9uPSJAYnVpbGRWZXJzaW9uQCI+Ci0JCTxjYXRlZ29yeSBuYW1lPSJQYXJhbGxlbCBUb29scyBQbGF0Zm9ybSAyLjEiLz4KLQk8L2ZlYXR1cmU+Ci0JPGZlYXR1cmUgaWQ9Im9yZy5lY2xpcHNlLnB0cC5yZHQiIHVybD0iZmVhdHVyZXMvb3JnLmVjbGlwc2UucHRwLnJkdF9AYnVpbGRWZXJzaW9uQC5qYXIiIHZlcnNpb249IkBidWlsZFZlcnNpb25AIj4KLQkJPGNhdGVnb3J5IG5hbWU9IlJlbW90ZSBEZXZlbG9wbWVudCBUb29scyIvPgotCTwvZmVhdHVyZT4KLQk8Y2F0ZWdvcnktZGVmIG5hbWU9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIgbGFiZWw9IlBhcmFsbGVsIFRvb2xzIFBsYXRmb3JtIDIuMSIvPgotCTxjYXRlZ29yeS1kZWYgbmFtZT0iUmVtb3RlIERldmVsb3BtZW50IFRvb2xzIiBsYWJlbD0iUmVtb3RlIERldmVsb3BtZW50IFRvb2xzIi8+Ci08L3NpdGU+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXBzL3B0cC5tYXAgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXBzL3B0cC5tYXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NWM1ZGUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFwcy9wdHAubWFwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLSEgVGhlIG1hc3RlcgotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAubWFzdGVyPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hc3RlcgotCi0hIFBUUCBmZWF0dXJlcwotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAudXRpbHM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAudXRpbHMtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5jb3JlLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnJlbW90ZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGUucnNlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMtZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmxsPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnJtLm9wZW5tcGk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0ub3Blbm1waS1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5leHRlcm5hbD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5leHRlcm5hbC1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG09QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAuc2RtLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnBsZHQ9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5wbGR0LmxhcGk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGxkdC5sYXBpLWZlYXR1cmUKLWZlYXR1cmVAb3JnLmVjbGlwc2UucHRwLnBlcmY9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucGVyZi1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS1mZWF0dXJlCi1mZWF0dXJlQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5mb3J0cmFuPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LmZvcnRyYW4tZmVhdHVyZQotZmVhdHVyZUBvcmcuZWNsaXBzZS5wdHAucmR0PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJkdC1mZWF0dXJlCi0KLSEgUGx1Z2lucwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnV0aWxzLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnV0aWxzLmNvcmUKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAudXRpbHMudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnV0aWxzLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnByb3h5LnByb3RvY29sPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5wcm94eS5wcm90b2NvbAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGUuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLmNvcmUKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yZW1vdGV0b29scy51aT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJlbW90ZXRvb2xzLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucmVtb3RlLnJzZS5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnJlbW90ZS5yc2UudWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucmVtb3RlLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5yZW1vdGUudWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucm0uY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5oZWxwPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5oZWxwCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC5wcm94eT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ubGwucHJveHkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmxsLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5sbC51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuaGVscD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUuaGVscAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUucHJveHk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Jtcy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLnBlLnByb3h5Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLmlibS5wZS51aT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0ucGUudWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucm0ubXBpLm9wZW5tcGkuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcm1zL29yZy5lY2xpcHNlLnB0cC5ybS5tcGkub3Blbm1waS5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLm1waS5vcGVubXBpLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLm1waS5vcGVubXBpLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLnJlbW90ZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvY29yZS9vcmcuZWNsaXBzZS5wdHAucm0ucmVtb3RlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJtLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9ybXMvb3JnLmVjbGlwc2UucHRwLnJtLnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnVpPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9kZWJ1Zy9vcmcuZWNsaXBzZS5wdHAuZGVidWcuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG09QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0KLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAuZGVidWcuc2RtLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0uY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0udWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0udWkKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAuZGVidWcudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG09QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2RlYnVnL29yZy5lY2xpcHNlLnB0cC5kZWJ1Zy5zZG0KLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucHJveHk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL2NvcmUvb3JnLmVjbGlwc2UucHRwLnByb3h5Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnV0aWxzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC51dGlscwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC5nZW5lcmljaG9zdD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LmdlbmVyaWNob3N0Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLmVudmlyb25tZW50LmxhdW5jaGVyPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQubGF1bmNoZXIKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMuZW52aXJvbm1lbnQudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5lbnZpcm9ubWVudC51aQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZW1vdGV0b29scy5wcmVmZXJlbmNlcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLnByZWZlcmVuY2VzCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJlbW90ZXRvb2xzLnV0aWxzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucmVtb3RldG9vbHMudXRpbHMKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAubGF1bmNoPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9jb3JlL29yZy5lY2xpcHNlLnB0cC5sYXVuY2gKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAuaGVscD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvZG9jL29yZy5lY2xpcHNlLnB0cC5oZWxwCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24KLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQubGFwaT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubGFwaQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5jb3JlPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm9wZW5tcC5hbmFseXNpcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvb3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLmFuYWx5c2lzCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLmNvcmU9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0Lm9wZW5tcC5jb3JlCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBsZHQub3Blbm1wLnVpLnB2PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9vcmcuZWNsaXBzZS5wdHAucGxkdC5vcGVubXAudWkucHYKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wbGR0LndpemFyZHM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL29yZy5lY2xpcHNlLnB0cC5wbGR0LndpemFyZHMKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZj1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZgotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuamFycz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuamFycwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5wYXBpc2VsZWN0PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9wZXJmL29yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5wYXBpc2VsZWN0Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBlcmZkbWY9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBlcmZkbWYKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuc2VsaW5zdD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuc2VsaW5zdAotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5wZXJmLnRhdS5zZWxpbnN0Zm9ydD1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50YXUuc2VsaW5zdGZvcnQKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50b29sb3B0cz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvdG9vbHMvcGVyZi9vcmcuZWNsaXBzZS5wdHAucGVyZi50b29sb3B0cwotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZHQuY29yZT1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmR0L29yZy5lY2xpcHNlLnB0cC5yZHQuY29yZQotcGx1Z2luQG9yZy5lY2xpcHNlLnB0cC5yZHQudWk9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JkdC9vcmcuZWNsaXBzZS5wdHAucmR0LnVpCi1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJkdC5zZXJ2aWNlcz1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmR0L29yZy5lY2xpcHNlLnB0cC5yZHQuc2VydmljZXMKLQotISBGcmFnbWVudHMKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5haXgucHBjPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLmFpeC5wcGMKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5saW51eC5wcGM9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAubGludXgucHBjCi1mcmFnbWVudEBvcmcuZWNsaXBzZS5wdHAubGludXgueDg2PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLmxpbnV4Lng4NgotZnJhZ21lbnRAb3JnLmVjbGlwc2UucHRwLmxpbnV4Lng4Nl82ND1AcHRwVGFnQCw6cHNlcnZlcjphbm9ueW1vdXNAZGV2LmVjbGlwc2Uub3JnOi9jdnNyb290L3Rvb2xzLCxvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5saW51eC54ODZfNjQKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5tYWNvc3gucHBjPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hY29zeC5wcGMKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5tYWNvc3gueDg2PUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLm1hY29zeC54ODYKLWZyYWdtZW50QG9yZy5lY2xpcHNlLnB0cC5wZXJmLnBhcmFsbGVsPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC90b29scy9wZXJmL29yZy5lY2xpcHNlLnB0cC5wZXJmLnBhcmFsbGVsCi0KLSEgVGVzdHMKLXBsdWdpbkBvcmcuZWNsaXBzZS5wdHAucGVyZi50YXUucGFwaXRlc3Q9QHB0cFRhZ0AsOnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scywsb3JnLmVjbGlwc2UucHRwL3Rvb2xzL3BlcmYvb3JnLmVjbGlwc2UucHRwLnBlcmYudGF1LnBhcGl0ZXN0Ci1wbHVnaW5Ab3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnRlc3RzPUBwdHBUYWdALDpwc2VydmVyOmFub255bW91c0BkZXYuZWNsaXBzZS5vcmc6L2N2c3Jvb3QvdG9vbHMsLG9yZy5lY2xpcHNlLnB0cC9yZHQvb3JnLmVjbGlwc2UucHRwLnJkdC5jb3JlLnRlc3RzCi0KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL21hc3Rlci9idWlsZC5wcm9wZXJ0aWVzIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFzdGVyL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMzZjZTIuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFzdGVyL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSwgMjAwNyBJQk0gQ29ycG9yYXRpb24gYW5kIG90aGVycy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUGFyYW1ldGVycyBkZXNjcmliaW5nIGhvdyBhbmQgd2hlcmUgdG8gZXhlY3V0ZSB0aGUgYnVpbGQuCi0jIFR5cGljYWwgdXNlcnMgbmVlZCBvbmx5IHVwZGF0ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6Ci0jICAgIGJhc2VMb2NhdGlvbiAtIHdoZXJlIHRoaW5ncyB5b3UgYXJlIGJ1aWxkaW5nIGFnYWluc3QgYXJlIGluc3RhbGxlZAotIyAgICBib290Y2xhc3NwYXRoIC0gVGhlIGJhc2UgamFycyB0byBjb21waWxlIGFnYWluc3QgKHR5cGljYWx5IHJ0LmphcikKLSMgICAgY29uZmlncyAtIHRoZSBsaXN0IG9mIHtvcywgd3MsIGFyY2h9IGNvbmZpZ3VyYXRpb25zIHRvIGJ1aWxkLiAgCi0jCi0jIE9mIGNvdXJzZSBhbnkgb2YgdGhlIHNldHRpbmdzIGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3BlYydpbmcgCi0jIHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZSAoZS5nLiwgLURiYXNlTG9jYXRpb249ZDovZWNsaXBzZQotCi0jIyMjIyMjIyMjIyMjIENWUyBDT05UUk9MICMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIENWUyB0YWcgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgdGhlIG1hcCBmaWxlcyBmcm9tIHRoZSByZXBvc2l0b3J5Ci1tYXBWZXJzaW9uVGFnPUhFQUQKLQotIyBUaGUgQ1ZTIHRhZyB0byB1c2Ugd2hlbiBmZXRjaGluZyBlbGVtZW50cyB0byBidWlsZC4gIEJ5IGRlZmF1bHQgdGhlCi0jIGJ1aWxkZXIgd2lsbCB1c2Ugd2hhdGV2ZXIgaXMgaW4gdGhlIG1hcHMuICBVc2UgdGhpcyB2YWx1ZSB0byBvdmVycmlkZQotIyBmb3IgZXhhbXBsZSwgd2hlbiBkb2luZyBhIG5pZ2h0bHkgYnVpbGQgb3V0IG9mIEhFQUQKLSMgZmV0Y2hUYWc9SEVBRAotCi1wdHBUYWc9SEVBRAotCi0jIyMjIyMjIyMjIyMjIyBCVUlMRCAvIEdFTkVSQVRJT04gQ09OVFJPTCAjIyMjIyMjIyMjIyMjIyMjCi0jIFRoZSBkaXJlY3RvcnkgaW50byB3aGljaCB0aGUgYnVpbGQgZWxlbWVudHMgd2lsbCBiZSBmZXRjaGVkIGFuZCB3aGVyZQotIyB0aGUgYnVpbGQgd2lsbCB0YWtlIHBsYWNlLiAgYnVpbGREaXJlY3RvcnkgYW5kIGluc3RhbGwgc2hvdWxkIGJlIHRoZSBzYW1lCi0jIHZhbHVlLgotYnVpbGREaXJlY3Rvcnk9YnVpbGQKLQotIyBUeXBlIG9mIGJ1aWxkLiAgVXNlZCBpbiBuYW1pbmcgdGhlIGJ1aWxkIG91dHB1dC4gIFR5cGljYWxseSB0aGlzIHZhbHVlIGlzCi0jIG9uZSBvZiBJLCBOLCBNLCBTLCAuLi4KLWJ1aWxkVHlwZT1JCi0KLSMgSUQgb2YgdGhlIGJ1aWxkLiAgVXNlZCBpbiBuYW1pbmcgdGhlIGJ1aWxkIG91dHB1dC4KLWJ1aWxkSWQ9VGVzdEJ1aWxkCi0KLSMgTGFiZWwgZm9yIHRoZSBidWlsZC4gIFVzZWQgaW4gbmFtaW5nIHRoZSBidWlsZCBvdXRwdXQKLWJ1aWxkTGFiZWw9JHtidWlsZFR5cGV9LiR7YnVpbGRJZH0KLQotIyBUaW1lc3RhbXAgZm9yIHRoZSBidWlsZC4gIFVzZWQgaW4gbmFtaW5nIHRoZSBidWlsZCBvdXRwdXQKLXRpbWVzdGFtcD0wMDcKLQotIyBCYXNlIGxvY2F0aW9uIGZvciBhbnl0aGluZyB0aGUgYnVpbGQgbmVlZHMgdG8gY29tcGlsZSBhZ2FpbnN0LiAgRm9yIGV4YW1wbGUsCi0jIHdoZW4gYnVpbGRpbmcgR0VGLCB0aGUgYmFzZUxvY2F0aW9uIHNob3VsZCBiZSB0aGUgbG9jYXRpb24gb2YgYSBwcmV2aW91c2x5Ci0jIGluc3RhbGxlZCBFY2xpcHNlIGFnYWluc3Qgd2hpY2ggdGhlIEdFRiBjb2RlIHdpbGwgYmUgY29tcGlsZWQuCi1iYXNlTG9jYXRpb249Ci0KLSNPcy9Xcy9BcmNoL25sIG9mIHRoZSBlY2xpcHNlIHNwZWNpZmllZCBieSBiYXNlTG9jYXRpb24KLSNiYXNlb3MKLSNiYXNld3MKLSNiYXNlYXJjaAotI2Jhc2VubAotCi0jIFRoZSBsb2NhdGlvbiB1bmRlcndoaWNoIGFsbCBvZiB0aGUgYnVpbGQgb3V0cHV0IHdpbGwgYmUgY29sbGVjdGVkLiAgVGhpcyB3aWxsIGJlCi0jIHRoZSByb290IHBhdGggaW4gdGhlIHJlc3VsdGFudCB6aXAgZmlsZS4KLWNvbGxQbGFjZT1lY2xpcHNlCi0KLSMgVGhlIGRpcmVjdG9yeSAgaW4gd2hpY2ggdG8gZXhlY3V0ZSB6aXAgb2YgdGhlICR7Y29sbFBsYWNlfSBkaXJlY3RvcnkKLWNvbGxCYXNlPS4KLQotIyBUaGUgbGlzdCBvZiB7b3MsIHdzLCBhcmNofSBjb25maWd1cmF0aW9ucyB0byBidWlsZC4gIFRoaXMgCi0jIHZhbHVlIGlzIGEgJyYnIHNlcGFyYXRlZCBsaXN0IG9mICcsJyBzZXBhcmF0ZSB0cmlwbGVzLiAgRm9yIGV4YW1wbGUsIAotIyAgICAgY29uZmlncz13aW4zMix3aW4zMix4ODYgJiBsaW51eCxtb3RpZix4ODYKLSMgQnkgZGVmYXVsdCB0aGUgdmFsdWUgaXMgKiwqLCoKLWNvbmZpZ3M9IFwKLQkgIGFpeCxtb3RpZixwcGMgXAotICAgICYgbGludXgsZ3RrLHg4NiBcCi0gICAgJiBsaW51eCxndGsseDg2XzY0IFwKLSAgICAmIGxpbnV4LGd0ayxwcGMgXAotICAgICYgbWFjb3N4LGNhcmJvbixwcGMgXAotICAgICYgd2luMzIsd2luMzIseDg2Ci0KLW91dHB1dFVwZGF0ZUphcnM9dHJ1ZQotZ3JvdXBDb25maWd1cmF0aW9ucz10cnVlCi0KLSNBcmd1bWVudHMgdG8gc2VuZCB0byB0aGUgemlwIGV4ZWN1dGFibGUKLXppcGFyZ3M9Ci0KLSMjIyMjIyMjIyMjIyMgSkFWQSBDT01QSUxFUiBPUFRJT05TICMjIyMjIyMjIyMjIyMjCi0jIFRoZSBsb2NhdGlvbiBvZiB0aGUgSmF2YSBqYXJzIHRvIGNvbXBpbGUgYWdhaW5zdC4gIFR5cGljYWxseSB0aGUgcnQuamFyIGZvciB5b3VyIEpESy9KUkUKLSNib290Y2xhc3NwYXRoPWQ6L2libTEuMy4xL2pyZS9saWIvcnQuamFyCi0KLWphdmFjRGVidWdJbmZvPW9uCi1qYXZhY1ZlcmJvc2U9dHJ1ZQotamF2YWNGYWlsT25FcnJvcj1mYWxzZQotCi0jIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgY29kZQotamF2YWNTb3VyY2U9MS41Ci0KLSMgVGhlIHZlcnNpb24gb2YgdGhlIGJ5dGUgY29kZSB0YXJnZXRlZAotamF2YWNUYXJnZXQ9MS41CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXN0ZXIvY3VzdG9tVGFyZ2V0cy54bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9tYXN0ZXIvY3VzdG9tVGFyZ2V0cy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYjZmNWUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvbWFzdGVyL2N1c3RvbVRhcmdldHMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLTxwcm9qZWN0IG5hbWU9IkJ1aWxkIHNwZWNpZmljIHRhcmdldHMgYW5kIHByb3BlcnRpZXMiIGRlZmF1bHQ9Im5vRGVmYXVsdCIgPgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gUnVuIGEgZ2l2ZW4gJHt0YXJnZXR9IG9uIGFsbCBlbGVtZW50cyBiZWluZyBidWlsdCAtLT4KLTwhLS0gQWRkIG9uIDxhbnQ+IHRhc2sgZm9yIGVhY2ggdG9wIGxldmVsIGVsZW1lbnQgYmVpbmcgYnVpbHQuIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dGFyZ2V0IG5hbWU9ImFsbEVsZW1lbnRzIj4KLQk8YW50IGFudGZpbGU9IiR7Z2VuZXJpY1RhcmdldHN9IiB0YXJnZXQ9IiR7dGFyZ2V0fSI+Ci0JCTxwcm9wZXJ0eSBuYW1lPSJ0eXBlIiB2YWx1ZT0iZmVhdHVyZSIvPgotCQk8cHJvcGVydHkgbmFtZT0iaWQiIHZhbHVlPSJvcmcuZWNsaXBzZS5wdHAubWFzdGVyIi8+Ci0JPC9hbnQ+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFRhcmdldHMgdG8gYXNzZW1ibGUgdGhlIGJ1aWx0IGVsZW1lbnRzIGZvciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zICAtLT4KLTwhLS0gVGhlc2UgZ2VuZXJhbGx5IGNhbGwgdGhlIGdlbmVyYXRlZCBhc3NlbWJsZSBzY3JpcHRzIChuYW1lZCBpbiAtLT4KLTwhLS0gJHthc3NlbWJsZVNjcmlwdE5hbWV9KSBidXQgbWF5IGFsc28gYWRkIHByZSBhbmQgcG9zdCBwcm9jZXNzaW5nIC0tPgotPCEtLSBBZGQgb25lIHRhcmdldCBmb3IgZWFjaCByb290IGVsZW1lbnQgYW5kIGVhY2ggY29uZmlndXJhdGlvbiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotCi08dGFyZ2V0IG5hbWU9ImFzc2VtYmxlLm9yZy5lY2xpcHNlLnB0cC5tYXN0ZXIuZ3JvdXAuZ3JvdXAuZ3JvdXAiPgotCTxhbnQgYW50ZmlsZT0iJHthc3NlbWJsZVNjcmlwdE5hbWV9IiBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9Ij4KLQkJPHByb3BlcnR5IG5hbWU9ImFyY2hpdmVOYW1lIiB2YWx1ZT0icHRwLW1hc3Rlci0ke2JyYW5jaFZlcnNpb259LSR7YnVpbGRJZH0uemlwIi8+Ci0JPC9hbnQ+Ci08L3RhcmdldD4KLQkKLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBDaGVjayBvdXQgbWFwIGZpbGVzIGZyb20gY29ycmVjdCByZXBvc2l0b3J5IC0tPgotPCEtLSBSZXBsYWNlIHZhbHVlcyBmb3IgY3ZzUm9vdCwgcGFja2FnZSBhbmQgbWFwVmVyc2lvblRhZyBhcyBkZXNpcmVkLiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJnZXRNYXBGaWxlcyI+Ci0JPGNvcHkgZmlsZT0iJHtidWlsZGVyfS8uLi9tYXBzL3B0cC5tYXAiIHRvZGlyPSIke2J1aWxkRGlyZWN0b3J5fS9tYXBzIi8+Ci0JPHJlcGxhY2UgZmlsZT0iJHtidWlsZERpcmVjdG9yeX0vbWFwcy9wdHAubWFwIj4KLQkJPHJlcGxhY2VmaWx0ZXIgdG9rZW49IkBwdHBUYWdAIiB2YWx1ZT0iJHtwdHBUYWd9Ii8+Ci0JPC9yZXBsYWNlPgotPC90YXJnZXQ+Ci0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgc2V0dXAgLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icHJlU2V0dXAiPgotPC90YXJnZXQ+Ci0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBhZnRlciBzZXR1cCBidXQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBidWlsZCBwcm9wZXIgLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdFNldHVwIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gYmVmb3JlIGZldGNoaW5nIHRoZSBidWlsZCBlbGVtZW50cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwcmVGZXRjaCI+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIGZldGNoaW5nIHRoZSBidWlsZCBlbGVtZW50cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwb3N0RmV0Y2giPgotCTxjb25kaXRpb24gcHJvcGVydHk9InBhdGNoZXNBdmFpbGFibGUiPgotCQk8YXZhaWxhYmxlIGZpbGU9IiR7YnVpbGRlcn0vcGF0Y2gueG1sIi8+Ci0JPC9jb25kaXRpb24+Ci0JPGFudGNhbGwgdGFyZ2V0PSJhcHBseVBhdGNoZXMiLz4KLTwvdGFyZ2V0PgotCi08dGFyZ2V0IG5hbWU9ImFwcGx5UGF0Y2hlcyIgaWY9InBhdGNoZXNBdmFpbGFibGUiPgotCTxhbnQgYW50ZmlsZT0iJHtidWlsZGVyfS9wYXRjaC54bWwiLz4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gYmVmb3JlIGdlbmVyYXRpbmcgdGhlIGJ1aWxkIHNjcmlwdHMuIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dGFyZ2V0IG5hbWU9InByZUdlbmVyYXRlIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gYWZ0ZXIgZ2VuZXJhdGluZyB0aGUgYnVpbGQgc2NyaXB0cy4gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdEdlbmVyYXRlIj4KLTwvdGFyZ2V0PgotCi0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBiZWZvcmUgcnVubmluZyB0aGUgYnVpbGQueG1scyBmb3IgdGhlIGVsZW1lbnRzIGJlaW5nIGJ1aWx0LiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwcmVQcm9jZXNzIj4KLQk8cmVwbGFjZSBkaXI9IiR7YnVpbGREaXJlY3Rvcnl9L3BsdWdpbnMiIHZhbHVlPSIke3RpbWVzdGFtcH0iIHRva2VuPSJAYnVpbGRAIj4KLQkJPGluY2x1ZGUgbmFtZT0iKiovYWJvdXQubWFwcGluZ3MiIC8+Ci0JPC9yZXBsYWNlPgotCTx1bnppcCBzcmM9IiR7dGF1SmFyc30iIGRlc3Q9IiR7YnVpbGREaXJlY3Rvcnl9Ii8+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGFmdGVyIHJ1bm5pbmcgdGhlIGJ1aWxkLnhtbHMgZm9yIHRoZSBlbGVtZW50cyBiZWluZyBidWlsdC4gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdFByb2Nlc3MiPgotPC90YXJnZXQ+Ci0KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGJlZm9yZSBydW5uaW5nIGFzc2VtYmxlLiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwcmVBc3NlbWJsZSI+Ci08L3RhcmdldD4KLQotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08IS0tIFN0ZXBzIHRvIGRvIGFmdGVyICBydW5uaW5nIGFzc2VtYmxlLiAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwb3N0QXNzZW1ibGUiPgotPC90YXJnZXQ+Ci0KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPCEtLSBTdGVwcyB0byBkbyBhZnRlciB0aGUgYnVpbGQgaXMgZG9uZS4gLS0+Ci08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTx0YXJnZXQgbmFtZT0icG9zdEJ1aWxkIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gdG8gdGVzdCB0aGUgYnVpbGQgcmVzdWx0cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJ0ZXN0Ij4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gU3RlcHMgdG8gZG8gdG8gcHVibGlzaCB0aGUgYnVpbGQgcmVzdWx0cyAtLT4KLTwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgotPHRhcmdldCBuYW1lPSJwdWJsaXNoIj4KLTwvdGFyZ2V0PgotCi08IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KLTwhLS0gRGVmYXVsdCB0YXJnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgotPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+Ci08dGFyZ2V0IG5hbWU9Im5vRGVmYXVsdCI+Ci0JPGVjaG8gbWVzc2FnZT0iWW91IG11c3Qgc3BlY2lmeSBhIHRhcmdldCB3aGVuIGludm9raW5nIHRoaXMgZmlsZSIgLz4KLTwvdGFyZ2V0PgotCi08L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9wYWNrLnByb3BlcnRpZXMgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9wYWNrLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYjVhNWUuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvcGFjay5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcGFjazIwMC5kZWZhdWx0LmFyZ3M9LUU0CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZy9wdHBidWlsZCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL3B0cGJ1aWxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Q4MmIyLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucmVsZW5nL3B0cGJ1aWxkCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIHB0cGJ1aWxkIHdyYXBwZXIgc2NyaXB0Ci0jCi0jIFVzYWdlOiBwdHBidWlsZCB2ZXJzaW9uIFtidWlsZF9hcmdzXQotIwotIyB3aGVyZSB2ZXJzaW9uIGlzIHRoZSBjdXJyZW50IFBUUCB2ZXJzaW9uIGJlaW5nIGJ1aWx0IGFuZAotIyBidWlsZF9hcmdzIGFyZSBhbnkgb3RoZXIgYXJndW1lbnRzIHlvdSB3YW50IHRvIHBhc3MgdG8gdGhlCi0jIGJ1aWxkIHNjcmlwdC4KLSMKLSMgc2V0IHVwIGFueXRoaW5nIGVudmlyb25tZW50IHNwZWNpZmljIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUKLSMgbGF1bmNoaW5nIHRoZSBidWlsZCBzY3JpcHQgaW4gdGhlIHJlbGVuZyBwcm9qZWN0Ci0KLWlmIFsgJCMgLWx0IDEgXTsgdGhlbgotCWVjaG8gInVzYWdlOiBwdHBidWlsZCB2ZXJzaW9uIFtidWlsZF9hcmdzXSIKLQlleGl0IDEKLWZpCi0KLSMgVmVyc2lvbiBvZiBQVFAgd2UncmUgYnVpbGRpbmcKLVBUUF9WRVJTSU9OPSQxOyBzaGlmdAotCi0jIG1haW4gc3RhZ2luZyBkaXJlY3RvcnkKLVNUQUdJTkdfRElSPS9vcHQvcHVibGljL2Rvd25sb2FkLXN0YWdpbmcucHJpdi90b29scy9wdHAvcmVsZW5nCi0KLSMgZG93bmxvYWQgbG9jYXRpb24gZm9yIGJ1aWxkcwotQlVJTERTX0RJUj0vaG9tZS93d3cvdG9vbHMvcHRwL2J1aWxkcy8kUFRQX1ZFUlNJT04KLQotIyBjcmVhdGUgdGhlIHJlbGVuZyBzdGFnaW5nIGRpcmVjdG9yeSBhbmQgZ28gdGhlcmUKLW1rZGlyIC1wICRTVEFHSU5HX0RJUgotY2QgJFNUQUdJTkdfRElSCi0KLSMgbWFrZSBhIGxpbmsgdG8gdGhlIHJlc3VsdHMKLWlmIFsgISAtTCByZXN1bHRzIF07IHRoZW4KLQlsbiAtcyBvcmcuZWNsaXBzZS5wdHAvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5yZWxlbmcvcmVzdWx0cyByZXN1bHRzCi1maQotCi0jIHJlbW92ZSB0aGUgb2xkIGJ1aWxkCi1ybSAtZnIgb3JnLmVjbGlwc2UucHRwCi0KLSMgQ2hlY2sgb3V0IHRoZSByZWxlbmcgcHJvamVjdAotZXhwb3J0IENWU1JPT1Q9OnBzZXJ2ZXI6YW5vbnltb3VzQGRldi5lY2xpcHNlLm9yZzovY3Zzcm9vdC90b29scwotY3ZzIGNvIG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZwotCi0jIHJ1biB0aGUgbWFpbiBzY3JpcHQKLWNkIG9yZy5lY2xpcHNlLnB0cC9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJlbGVuZwotc2ggYnVpbGQuc2ggJCogMj4mMSB8IHRlZSAkU1RBR0lOR19ESVIvYnVpbGQubG9nCi0KLSMgQ29weSB0aGUgYnVpbGQubG9nIHRvIHdoZXJlIHRoZSBsYXRlc3QgYnVpbGQgaXMuIE9ubHkgY29weQotIyBpZiBhIGJ1aWxkLmxvZyBkb2Vzbid0IGV4aXN0LCBvdGhlcndpc2UgdGhlIGJ1aWxkIGZhaWxlZCBhbmQKLSMgd2Ugd291bGQgY29weSBvdmVyIGFuIG9sZCBsb2cgZmlsZS4KLWlmIFsgISAtZiAkQlVJTERTX0RJUi9sYXRlc3QvYnVpbGQubG9nIF07IHRoZW4KLQljcCAkU1RBR0lOR19ESVIvYnVpbGQubG9nICRCVUlMRFNfRElSL2xhdGVzdAotZmkKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvLnByb2plY3QgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjFlYjdiLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmU8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRmOGYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0uYmx1ZWdlbmUtZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCi0gICAgICAgICAgICAgICBsaWNlbnNlLmh0bWwsXAotICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0uYmx1ZWdlbmUtZmVhdHVyZS9lcGwtdjEwLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2VwbC12MTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi08aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiCi14bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIgoteG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPgotCi08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgotPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50PgotPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bWV0YSBuYW1lPU9yaWdpbmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bGluayByZWw9RmlsZS1MaXN0Ci1ocmVmPSIuL0VjbGlwc2UlMjBFUEwlMjAyMDAzXzExXzEwJTIwRmluYWxfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTx0aXRsZT5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gVmVyc2lvbiAxLjA8L3RpdGxlPgotPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPG86RG9jdW1lbnRQcm9wZXJ0aWVzPgotICA8bzpSZXZpc2lvbj4yPC9vOlJldmlzaW9uPgotICA8bzpUb3RhbFRpbWU+MzwvbzpUb3RhbFRpbWU+Ci0gIDxvOkNyZWF0ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286Q3JlYXRlZD4KLSAgPG86TGFzdFNhdmVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkxhc3RTYXZlZD4KLSAgPG86UGFnZXM+NDwvbzpQYWdlcz4KLSAgPG86V29yZHM+MTYyNjwvbzpXb3Jkcz4KLSAgPG86Q2hhcmFjdGVycz45MjcwPC9vOkNoYXJhY3RlcnM+Ci0gICA8bzpMaW5lcz43NzwvbzpMaW5lcz4KLSAgPG86UGFyYWdyYXBocz4xODwvbzpQYXJhZ3JhcGhzPgotICA8bzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4xMTM4NDwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KLSAgPG86VmVyc2lvbj45LjQ0MDI8L286VmVyc2lvbj4KLSA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPgotPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPHc6V29yZERvY3VtZW50PgotICA8dzpUcmFja1JldmlzaW9ucy8+Ci0gPC93OldvcmREb2N1bWVudD4KLTwveG1sPjwhW2VuZGlmXS0tPgotPHN0eWxlPgotPCEtLQotIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KLUBmb250LWZhY2UKLQl7Zm9udC1mYW1pbHk6VGFob21hOwotCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OwotCW1zby1mb250LWNoYXJzZXQ6MDsKLQltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKLQltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLQltc28tZm9udC1zaWduYXR1cmU6NTUzNjc5NDk1IC0yMTQ3NDgzNjQ4IDggMCA2NjA0NyAwO30KLSAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLwotcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAotCXttc28tc3R5bGUtcGFyZW50OiIiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAKLQl7bWFyZ2luLXJpZ2h0OjBpbjsKLQltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKLQltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKLQltYXJnaW4tbGVmdDowaW47Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcC5CYWxsb29uVGV4dCwgbGkuQmFsbG9vblRleHQsIGRpdi5CYWxsb29uVGV4dAotCXttc28tc3R5bGUtbmFtZToiQmFsbG9vbiBUZXh0IjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjguMHB0OwotCWZvbnQtZmFtaWx5OlRhaG9tYTsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1AcGFnZSBTZWN0aW9uMQotCXtzaXplOjguNWluIDExLjBpbjsKLQltYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjsKLQltc28taGVhZGVyLW1hcmdpbjouNWluOwotCW1zby1mb290ZXItbWFyZ2luOi41aW47Ci0JbXNvLXBhcGVyLXNvdXJjZTowO30KLWRpdi5TZWN0aW9uMQotCXtwYWdlOlNlY3Rpb24xO30KLS0tPgotPC9zdHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz1FTi1VUyBzdHlsZT0ndGFiLWludGVydmFsOi41aW4nPgotCi08ZGl2IGNsYXNzPVNlY3Rpb24xPgotCi08cCBhbGlnbj1jZW50ZXIgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Yj5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gdiAxLjA8L2I+Ci08L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIKLVRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCZxdW90O0FHUkVFTUVOVCZxdW90OykuIEFOWSBVU0UsCi1SRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UKLU9GIFRISVMgQUdSRUVNRU5ULjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+MS4gREVGSU5JVElPTlM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRpb24mcXVvdDsgbWVhbnM6PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQgZG9jdW1lbnRhdGlvbgotZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZDxiciBjbGVhcj1sZWZ0PgotYikgaW4gdGhlIGNhc2Ugb2YgZWFjaCBzdWJzZXF1ZW50IENvbnRyaWJ1dG9yOjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1jaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbTs8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz53aGVyZQotc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZAotYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiBBIENvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yCi1pZiBpdCB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbgotc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlCi1Qcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24KLXdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUKLXdvcmtzIG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0b3ImcXVvdDsgbWVhbnMgYW55IHBlcnNvbiBvcgotZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtMaWNlbnNlZCBQYXRlbnRzICZxdW90OyBtZWFuIHBhdGVudAotY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSBDb250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2UKLW9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtQcm9ncmFtJnF1b3Q7IG1lYW5zIHRoZSBDb250cmlidXRpb25zCi1kaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtSZWNpcGllbnQmcXVvdDsgbWVhbnMgYW55b25lIHdobwotcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Mi4gR1JBTlQgT0YgUklHSFRTPC9zcGFuPjwvYj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQKLWEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG88c3Bhbgotc3R5bGU9J2NvbG9yOnJlZCc+IDwvc3Bhbj5yZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkKLWRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoCi1Db250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUKLWZvcm0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMKLVJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSw8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPiA8L3NwYW4+cm95YWx0eS1mcmVlCi1wYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0Ci1hbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UKLWNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgYXBwbHkgdG8gdGhlIGNvbWJpbmF0aW9uCi1vZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZAotYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2ggY29tYmluYXRpb24KLXRvIGJlIGNvdmVyZWQgYnkgdGhlIExpY2Vuc2VkIFBhdGVudHMuIFRoZSBwYXRlbnQgbGljZW5zZSBzaGFsbCBub3QgYXBwbHkgdG8KLWFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMKLWxpY2Vuc2VkIGhlcmV1bmRlci4gPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YykKLVJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMKLUNvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyBhcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yCi10aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5Ci1yaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCBDb250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQKLWZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwKLXByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQKLWxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5Ci10byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvciBleGFtcGxlLAotaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZQotdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZQotZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmQpCi1FYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodAotcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbgotdGhpcyBBZ3JlZW1lbnQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4zLiBSRVFVSVJFTUVOVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUKLVByb2dyYW0gaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0Ojwvc3Bhbj4KLTwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotaXRzIGxpY2Vuc2UgYWdyZWVtZW50Ojwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1lZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMgYW5kCi1jb25kaXRpb25zLCBleHByZXNzIGFuZCBpbXBsaWVkLCBpbmNsdWRpbmcgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIHRpdGxlCi1hbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eQotYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsCi1pbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoCi1hcyBsb3N0IHByb2ZpdHM7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpaSkKLXN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgQWdyZWVtZW50IGFyZSBvZmZlcmVkIGJ5IHRoYXQKLUNvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pdikKLXN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoIENvbnRyaWJ1dG9yLCBhbmQKLWluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEKLW1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS48c3BhbiBzdHlsZT0nY29sb3I6Ymx1ZSc+IDwvc3Bhbj48L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+V2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UKLWNvZGUgZm9ybTo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKSBhCi1jb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoIGNvcHkgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55Ci1jb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUKLW9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzCi1zdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5Ci1hY2NlcHQgY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzCi1hbmQgdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZQotb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsCi1wcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lciB3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsCi1saWFiaWxpdHkgZm9yIG90aGVyIENvbnRyaWJ1dG9ycy4gVGhlcmVmb3JlLCBpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoJnF1b3Q7Q29tbWVyY2lhbAotQ29udHJpYnV0b3ImcXVvdDspIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIKLUNvbnRyaWJ1dG9yICgmcXVvdDtJbmRlbW5pZmllZCBDb250cmlidXRvciZxdW90OykgYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZAotY29zdHMgKGNvbGxlY3RpdmVseSAmcXVvdDtMb3NzZXMmcXVvdDspIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlcgotbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgdG8KLXRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4KLWNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0Ci1vZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgdG8gYW55IGNsYWltcyBvciBMb3NzZXMKLXJlbGF0aW5nIHRvIGFueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlcgotdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsCi1Db250cmlidXRvciBpbiB3cml0aW5nIG9mIHN1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvcgotdG8gY29udHJvbCwgYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQKLWFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlCi1pbiBhbnkgc3VjaCBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYQotQ29tbWVyY2lhbCBDb250cmlidXRvci4gSWYgdGhhdCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRoZW4gbWFrZXMgcGVyZm9ybWFuY2UKLWNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQKLXdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzCi1zZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUKLW90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEKLWNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NS4gTk8gV0FSUkFOVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICZxdW90O0FTIElTJnF1b3Q7IEJBU0lTLCBXSVRIT1VUCi1XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLAotV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULAotTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkKLXJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlCi1Qcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsCi1jb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLCBkYW1hZ2UgdG8gb3IgbG9zcyBvZiBkYXRhLCBwcm9ncmFtcyBvcgotZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz42LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMgU0hBTEwgSEFWRSBBTlkgTElBQklMSVRZIEZPUgotQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GCi1USEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ny4gR0VORVJBTDwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgaW52YWxpZAotb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgdmFsaWRpdHkgb3IKLWVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dAotZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUKLW1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggcHJvdmlzaW9uIHZhbGlkIGFuZCBlbmZvcmNlYWJsZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uCi1hZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpCi1hbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoCi1vdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2gKLVJlY2lwaWVudCdzIHJpZ2h0cyBncmFudGVkIHVuZGVyIFNlY3Rpb24gMihiKSBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUKLXN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQKLXNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yCi1jb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2ggZmFpbHVyZSBpbiBhIHJlYXNvbmFibGUKLXBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzCi1yaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQKLWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzIHJlYXNvbmFibHkgcHJhY3RpY2FibGUuIEhvd2V2ZXIsCi1SZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkKLVJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlCi1jb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMKLWNvcHlyaWdodGVkIGFuZCBtYXkgb25seSBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudAotU3Rld2FyZCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mCi10aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcwotdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIEFncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbAotQWdyZWVtZW50IFN0ZXdhcmQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbgotb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIENvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLShpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseSBzdGF0ZWQKLWluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgbGljZW5zZXMgdG8KLXRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LCB3aGV0aGVyCi1leHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90Ci1leHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUKLVN0YXRlIG9mIE5ldyBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YKLUFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcwotQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcwotaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWw+PCFbaWYgIXN1cHBvcnRFbXB0eVBhcmFzXT4mbmJzcDs8IVtlbmRpZl0+PG86cD48L286cD48L3A+Ci0KLTwvZGl2PgotCi08L2JvZHk+Ci0KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWIwOTkzLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gCi0jIFRoaXMgbWF0ZXJpYWwgd2FzIHByb2R1Y2VkIHVuZGVyIFUuUy4gR292ZXJubWVudCBjb250cmFjdCBXLTc0MDUtRU5HLTM2IAotIyBmb3IgTG9zIEFsYW1vcyBOYXRpb25hbCBMYWJvcmF0b3J5LCB3aGljaCBpcyBvcGVyYXRlZCBieSB0aGUgVW5pdmVyc2l0eSAKLSMgb2YgQ2FsaWZvcm5pYSBmb3IgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBFbmVyZ3kuIFRoZSBVLlMuIEdvdmVybm1lbnQgaGFzIAotIyByaWdodHMgdG8gdXNlLCByZXByb2R1Y2UsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUuIE5FSVRIRVIgVEhFIAotIyBHT1ZFUk5NRU5UIE5PUiBUSEUgVU5JVkVSU0lUWSBNQUtFUyBBTlkgV0FSUkFOVFksIEVYUFJFU1MgT1IgSU1QTElFRCwgT1IgCi0jIEFTU1VNRVMgQU5ZIExJQUJJTElUWSBGT1IgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLiBJZiBzb2Z0d2FyZSBpcyBtb2RpZmllZCAKLSMgdG8gcHJvZHVjZSBkZXJpdmF0aXZlIHdvcmtzLCBzdWNoIG1vZGlmaWVkIHNvZnR3YXJlIHNob3VsZCBiZSBjbGVhcmx5IG1hcmtlZCwgCi0jIHNvIGFzIG5vdCB0byBjb25mdXNlIGl0IHdpdGggdGhlIHZlcnNpb24gYXZhaWxhYmxlIGZyb20gTEFOTC4KLSMgCi0jIEFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBMQS1DQyAwNC0xMTUKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0KLSMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPVBUUCBTdXBwb3J0IEZvciBCbHVlIEdlbmUKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPUVjbGlwc2UgUFRQIFVwZGF0ZSBTaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1BZGRzIHN1cHBvcnQgZm9yIHRoZSBCbHVlIEdlbmUgc3lzdGVtCi0KLSMgY29weXJpZ2h0Ci1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA3IElCTSBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLlxuXAotQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotQ29udHJpYnV0b3JzOlxuXAotSUJNIENvcnBvcmF0aW9uIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uXG4KLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1NYXJjaCAxNywgMjAwNVxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS54bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2ZlYXR1cmUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODA2OTU5Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLWZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lIgotICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjIuMC4wLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCi0gICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+Ci0KLSAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly9lY2xpcHNlLm9yZy9wdHAiPgotICAgICAgJWRlc2NyaXB0aW9uCi0gICA8L2Rlc2NyaXB0aW9uPgotCi0gICA8Y29weXJpZ2h0PgotICAgICAgJWNvcHlyaWdodAotICAgPC9jb3B5cmlnaHQ+Ci0KLSAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHJlcXVpcmVzPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnNlYXJjaCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UuZGVidWcuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5wcm94eS5wcm90b2NvbCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5jb3JlIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5sYXVuY2giLz4KLSAgIDwvcmVxdWlyZXM+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0uaWJtLmJsdWVnZW5lLnByb3h5IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS51aSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5pYm0uYmx1ZWdlbmUtZmVhdHVyZS9saWNlbnNlLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhZjk2Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmlibS5ibHVlZ2VuZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+RWNsaXBzZS5vcmcgU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L3RpdGxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPSJFTi1VUyIgbGluaz1ibHVlIHZsaW5rPXB1cnBsZT4KLTxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgotPHA+TWFyY2ggMTcsIDIwMDU8L3A+Ci0KLTxoMz5Vc2FnZSBPZiBDb250ZW50PC9oMz4KLQotPHA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUiBPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTCi0gICAoQ09MTEVDVElWRUxZICZxdW90O0NPTlRFTlQmcXVvdDspLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQotICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKLSAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9wPgotICAgCi08aDM+QXBwbGljYWJsZSBMaWNlbnNlczwvaDM+ICAgCi0gICAKLTxwPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKLSAgICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi0gICBGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgotCi08cD5Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSwgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIENWUwotICAgbW9kdWxlcyAoJnF1b3Q7TW9kdWxlcyZxdW90OykgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoJnF1b3Q7RG93bmxvYWRzJnF1b3Q7KS48L3A+Ci0gICAKLTx1bD4KLQk8bGk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgmcXVvdDtQbHVnLWlucyZxdW90OyksIHBsdWctaW4gZnJhZ21lbnRzICgmcXVvdDtGcmFnbWVudHMmcXVvdDspLCBhbmQgZmVhdHVyZXMgKCZxdW90O0ZlYXR1cmVzJnF1b3Q7KS48L2xpPgotCTxsaT5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEmdHJhZGU7IEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O3BsdWdpbnMmcXVvdDsuPC9saT4KLQk8bGk+QSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtmZWF0dXJlcyZxdW90Oy4gIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKLSAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L2xpPgotCTxsaT5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgmcXVvdDtJbmNsdWRlZCBGZWF0dXJlcyZxdW90OykuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy48L2xpPgotPC91bD4gICAKLSAKLTxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCi1JbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgotCi08dWw+Ci0JPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+Ci0JPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KLQk8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+Ci0JPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KLQk8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Ci08L3VsPgotCQkKLTxwPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCi1pbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKLWluZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KLVN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgotdGhhdCBkaXJlY3RvcnkuPC9wPgotCi08cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+Ci0KLTx1bD4KLQk8bGk+Q29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9hPik8L2xpPgotCTxsaT5JQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9hPik8L2xpPgkKLQk8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgotCTxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Ci08L3VsPgotCi08cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQotY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+Ci0KLTxoMz5DcnlwdG9ncmFwaHk8L2gzPgotCi08cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCi0gICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKLSAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgotICAgCi08c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9zbWFsbD4gICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvLnByb2plY3QgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTU2ZGZmLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmU8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlTmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRmOGYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5sc2YtZmVhdHVyZS9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1iaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCi0gICAgICAgICAgICAgICBsaWNlbnNlLmh0bWwsXAotICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLFwKLSAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5sc2YtZmVhdHVyZS9lcGwtdjEwLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2VwbC12MTAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi08aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiCi14bWxuczp3PSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTp3b3JkIgoteG1sbnM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAiPgotCi08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgotPG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1Xb3JkLkRvY3VtZW50PgotPG1ldGEgbmFtZT1HZW5lcmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bWV0YSBuYW1lPU9yaWdpbmF0b3IgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgOSI+Ci08bGluayByZWw9RmlsZS1MaXN0Ci1ocmVmPSIuL0VjbGlwc2UlMjBFUEwlMjAyMDAzXzExXzEwJTIwRmluYWxfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTx0aXRsZT5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gVmVyc2lvbiAxLjA8L3RpdGxlPgotPCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPG86RG9jdW1lbnRQcm9wZXJ0aWVzPgotICA8bzpSZXZpc2lvbj4yPC9vOlJldmlzaW9uPgotICA8bzpUb3RhbFRpbWU+MzwvbzpUb3RhbFRpbWU+Ci0gIDxvOkNyZWF0ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286Q3JlYXRlZD4KLSAgPG86TGFzdFNhdmVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkxhc3RTYXZlZD4KLSAgPG86UGFnZXM+NDwvbzpQYWdlcz4KLSAgPG86V29yZHM+MTYyNjwvbzpXb3Jkcz4KLSAgPG86Q2hhcmFjdGVycz45MjcwPC9vOkNoYXJhY3RlcnM+Ci0gICA8bzpMaW5lcz43NzwvbzpMaW5lcz4KLSAgPG86UGFyYWdyYXBocz4xODwvbzpQYXJhZ3JhcGhzPgotICA8bzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4xMTM4NDwvbzpDaGFyYWN0ZXJzV2l0aFNwYWNlcz4KLSAgPG86VmVyc2lvbj45LjQ0MDI8L286VmVyc2lvbj4KLSA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPgotPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+Ci0gPHc6V29yZERvY3VtZW50PgotICA8dzpUcmFja1JldmlzaW9ucy8+Ci0gPC93OldvcmREb2N1bWVudD4KLTwveG1sPjwhW2VuZGlmXS0tPgotPHN0eWxlPgotPCEtLQotIC8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KLUBmb250LWZhY2UKLQl7Zm9udC1mYW1pbHk6VGFob21hOwotCXBhbm9zZS0xOjIgMTEgNiA0IDMgNSA0IDQgMiA0OwotCW1zby1mb250LWNoYXJzZXQ6MDsKLQltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKLQltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLQltc28tZm9udC1zaWduYXR1cmU6NTUzNjc5NDk1IC0yMTQ3NDgzNjQ4IDggMCA2NjA0NyAwO30KLSAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLwotcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAotCXttc28tc3R5bGUtcGFyZW50OiIiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAKLQl7bWFyZ2luLXJpZ2h0OjBpbjsKLQltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKLQltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKLQltYXJnaW4tbGVmdDowaW47Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcC5CYWxsb29uVGV4dCwgbGkuQmFsbG9vblRleHQsIGRpdi5CYWxsb29uVGV4dAotCXttc28tc3R5bGUtbmFtZToiQmFsbG9vbiBUZXh0IjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjguMHB0OwotCWZvbnQtZmFtaWx5OlRhaG9tYTsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1AcGFnZSBTZWN0aW9uMQotCXtzaXplOjguNWluIDExLjBpbjsKLQltYXJnaW46MS4waW4gMS4yNWluIDEuMGluIDEuMjVpbjsKLQltc28taGVhZGVyLW1hcmdpbjouNWluOwotCW1zby1mb290ZXItbWFyZ2luOi41aW47Ci0JbXNvLXBhcGVyLXNvdXJjZTowO30KLWRpdi5TZWN0aW9uMQotCXtwYWdlOlNlY3Rpb24xO30KLS0tPgotPC9zdHlsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz1FTi1VUyBzdHlsZT0ndGFiLWludGVydmFsOi41aW4nPgotCi08ZGl2IGNsYXNzPVNlY3Rpb24xPgotCi08cCBhbGlnbj1jZW50ZXIgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyJz48Yj5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gdiAxLjA8L2I+Ci08L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIKLVRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCZxdW90O0FHUkVFTUVOVCZxdW90OykuIEFOWSBVU0UsCi1SRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UKLU9GIFRISVMgQUdSRUVNRU5ULjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+MS4gREVGSU5JVElPTlM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRpb24mcXVvdDsgbWVhbnM6PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQgZG9jdW1lbnRhdGlvbgotZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZDxiciBjbGVhcj1sZWZ0PgotYikgaW4gdGhlIGNhc2Ugb2YgZWFjaCBzdWJzZXF1ZW50IENvbnRyaWJ1dG9yOjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1jaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbTs8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz53aGVyZQotc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZAotYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLiBBIENvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yCi1pZiBpdCB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbgotc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlCi1Qcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4gY29uanVuY3Rpb24KLXdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUKLXdvcmtzIG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0b3ImcXVvdDsgbWVhbnMgYW55IHBlcnNvbiBvcgotZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtMaWNlbnNlZCBQYXRlbnRzICZxdW90OyBtZWFuIHBhdGVudAotY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSBDb250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2UKLW9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtQcm9ncmFtJnF1b3Q7IG1lYW5zIHRoZSBDb250cmlidXRpb25zCi1kaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtSZWNpcGllbnQmcXVvdDsgbWVhbnMgYW55b25lIHdobwotcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Mi4gR1JBTlQgT0YgUklHSFRTPC9zcGFuPjwvYj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQKLWEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG88c3Bhbgotc3R5bGU9J2NvbG9yOnJlZCc+IDwvc3Bhbj5yZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkKLWRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoCi1Db250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUKLWZvcm0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMKLVJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSw8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPiA8L3NwYW4+cm95YWx0eS1mcmVlCi1wYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0Ci1hbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UKLWNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgYXBwbHkgdG8gdGhlIGNvbWJpbmF0aW9uCi1vZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZAotYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2ggY29tYmluYXRpb24KLXRvIGJlIGNvdmVyZWQgYnkgdGhlIExpY2Vuc2VkIFBhdGVudHMuIFRoZSBwYXRlbnQgbGljZW5zZSBzaGFsbCBub3QgYXBwbHkgdG8KLWFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMKLWxpY2Vuc2VkIGhlcmV1bmRlci4gPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YykKLVJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMKLUNvbnRyaWJ1dGlvbnMgc2V0IGZvcnRoIGhlcmVpbiwgbm8gYXNzdXJhbmNlcyBhcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yCi10aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5Ci1yaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCBDb250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQKLWZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwKLXByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQKLWxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5Ci10byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvciBleGFtcGxlLAotaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZQotdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZQotZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmQpCi1FYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodAotcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbgotdGhpcyBBZ3JlZW1lbnQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4zLiBSRVFVSVJFTUVOVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUKLVByb2dyYW0gaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0Ojwvc3Bhbj4KLTwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotaXRzIGxpY2Vuc2UgYWdyZWVtZW50Ojwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmkpCi1lZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMgYW5kCi1jb25kaXRpb25zLCBleHByZXNzIGFuZCBpbXBsaWVkLCBpbmNsdWRpbmcgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIHRpdGxlCi1hbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eQotYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paSkKLWVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsCi1pbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoCi1hcyBsb3N0IHByb2ZpdHM7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpaSkKLXN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgQWdyZWVtZW50IGFyZSBvZmZlcmVkIGJ5IHRoYXQKLUNvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQ8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pdikKLXN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoIENvbnRyaWJ1dG9yLCBhbmQKLWluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEKLW1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS48c3BhbiBzdHlsZT0nY29sb3I6Ymx1ZSc+IDwvc3Bhbj48L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+V2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UKLWNvZGUgZm9ybTo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKSBhCi1jb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoIGNvcHkgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55Ci1jb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUKLW9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzCi1zdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5Ci1hY2NlcHQgY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIHdpdGggcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzCi1hbmQgdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZQotb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsCi1wcm9kdWN0IG9mZmVyaW5nIHNob3VsZCBkbyBzbyBpbiBhIG1hbm5lciB3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsCi1saWFiaWxpdHkgZm9yIG90aGVyIENvbnRyaWJ1dG9ycy4gVGhlcmVmb3JlLCBpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoJnF1b3Q7Q29tbWVyY2lhbAotQ29udHJpYnV0b3ImcXVvdDspIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIKLUNvbnRyaWJ1dG9yICgmcXVvdDtJbmRlbW5pZmllZCBDb250cmlidXRvciZxdW90OykgYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZAotY29zdHMgKGNvbGxlY3RpdmVseSAmcXVvdDtMb3NzZXMmcXVvdDspIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlcgotbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgdG8KLXRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4KLWNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0Ci1vZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgdG8gYW55IGNsYWltcyBvciBMb3NzZXMKLXJlbGF0aW5nIHRvIGFueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlcgotdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsCi1Db250cmlidXRvciBpbiB3cml0aW5nIG9mIHN1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvcgotdG8gY29udHJvbCwgYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQKLWFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlCi1pbiBhbnkgc3VjaCBjbGFpbSBhdCBpdHMgb3duIGV4cGVuc2UuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZQotUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYQotQ29tbWVyY2lhbCBDb250cmlidXRvci4gSWYgdGhhdCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRoZW4gbWFrZXMgcGVyZm9ybWFuY2UKLWNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQKLXdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzCi1zZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZCBjbGFpbXMgYWdhaW5zdCB0aGUKLW90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEKLWNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NS4gTk8gV0FSUkFOVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICZxdW90O0FTIElTJnF1b3Q7IEJBU0lTLCBXSVRIT1VUCi1XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLAotV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULAotTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkKLXJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlCi1Qcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsCi1jb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLCBkYW1hZ2UgdG8gb3IgbG9zcyBvZiBkYXRhLCBwcm9ncmFtcyBvcgotZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz42LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMgU0hBTEwgSEFWRSBBTlkgTElBQklMSVRZIEZPUgotQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GCi1USEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLjwvc3Bhbj4gPC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ny4gR0VORVJBTDwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIGFueSBwcm92aXNpb24gb2YgdGhpcyBBZ3JlZW1lbnQgaXMgaW52YWxpZAotb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQgc2hhbGwgbm90IGFmZmVjdCB0aGUgdmFsaWRpdHkgb3IKLWVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dAotZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCB0byB0aGUKLW1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggcHJvdmlzaW9uIHZhbGlkIGFuZCBlbmZvcmNlYWJsZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uCi1hZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpCi1hbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoCi1vdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2gKLVJlY2lwaWVudCdzIHJpZ2h0cyBncmFudGVkIHVuZGVyIFNlY3Rpb24gMihiKSBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUKLXN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQKLXNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yCi1jb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2ggZmFpbHVyZSBpbiBhIHJlYXNvbmFibGUKLXBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzCi1yaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQKLWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzIHJlYXNvbmFibHkgcHJhY3RpY2FibGUuIEhvd2V2ZXIsCi1SZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkKLVJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlCi1jb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMKLWNvcHlyaWdodGVkIGFuZCBtYXkgb25seSBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudAotU3Rld2FyZCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mCi10aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcwotdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIEFncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbAotQWdyZWVtZW50IFN0ZXdhcmQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8KLXNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbgotb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIENvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KLShpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseSBzdGF0ZWQKLWluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgbGljZW5zZXMgdG8KLXRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LCB3aGV0aGVyCi1leHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90Ci1leHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUKLVN0YXRlIG9mIE5ldyBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YKLUFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcwotQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcwotaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWw+PCFbaWYgIXN1cHBvcnRFbXB0eVBhcmFzXT4mbmJzcDs8IVtlbmRpZl0+PG86cD48L286cD48L3A+Ci0KLTwvZGl2PgotCi08L2JvZHk+Ci0KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWI2MjY3Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb3B5cmlnaHQgKGMpIDIwMDUgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gCi0jIFRoaXMgbWF0ZXJpYWwgd2FzIHByb2R1Y2VkIHVuZGVyIFUuUy4gR292ZXJubWVudCBjb250cmFjdCBXLTc0MDUtRU5HLTM2IAotIyBmb3IgTG9zIEFsYW1vcyBOYXRpb25hbCBMYWJvcmF0b3J5LCB3aGljaCBpcyBvcGVyYXRlZCBieSB0aGUgVW5pdmVyc2l0eSAKLSMgb2YgQ2FsaWZvcm5pYSBmb3IgdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiBFbmVyZ3kuIFRoZSBVLlMuIEdvdmVybm1lbnQgaGFzIAotIyByaWdodHMgdG8gdXNlLCByZXByb2R1Y2UsIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUuIE5FSVRIRVIgVEhFIAotIyBHT1ZFUk5NRU5UIE5PUiBUSEUgVU5JVkVSU0lUWSBNQUtFUyBBTlkgV0FSUkFOVFksIEVYUFJFU1MgT1IgSU1QTElFRCwgT1IgCi0jIEFTU1VNRVMgQU5ZIExJQUJJTElUWSBGT1IgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLiBJZiBzb2Z0d2FyZSBpcyBtb2RpZmllZCAKLSMgdG8gcHJvZHVjZSBkZXJpdmF0aXZlIHdvcmtzLCBzdWNoIG1vZGlmaWVkIHNvZnR3YXJlIHNob3VsZCBiZSBjbGVhcmx5IG1hcmtlZCwgCi0jIHNvIGFzIG5vdCB0byBjb25mdXNlIGl0IHdpdGggdGhlIHZlcnNpb24gYXZhaWxhYmxlIGZyb20gTEFOTC4KLSMgCi0jIEFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAKLSMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0jIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0jIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0jIAotIyBMQS1DQyAwNC0xMTUKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0KLSMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPVBUUCBTdXBwb3J0IEZvciBMU0YKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPUVjbGlwc2UgUFRQIFVwZGF0ZSBTaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1BZGRzIHN1cHBvcnQgZm9yIHRoZSBMU0Ygam9iIHNjaGVkdWxlcgotCi0jIGNvcHlyaWdodAotY29weXJpZ2h0PVwKLUNvcHlyaWdodCAoYykgMjAwNSBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLlxuXAotVGhpcyBtYXRlcmlhbCB3YXMgcHJvZHVjZWQgdW5kZXIgVS5TLiBHb3Zlcm5tZW50IGNvbnRyYWN0IFctNzQwNS1FTkctMzZcblwKLWZvciBMb3MgQWxhbW9zIE5hdGlvbmFsIExhYm9yYXRvcnksIHdoaWNoIGlzIG9wZXJhdGVkIGJ5IHRoZSBVbml2ZXJzaXR5XG5cCi1vZiBDYWxpZm9ybmlhIGZvciB0aGUgVS5TLiBEZXBhcnRtZW50IG9mIEVuZXJneS4gVGhlIFUuUy4gR292ZXJubWVudCBoYXNcblwKLXJpZ2h0cyB0byB1c2UsIHJlcHJvZHVjZSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZS4gTkVJVEhFUiBUSEVcblwKLUdPVkVSTk1FTlQgTk9SIFRIRSBVTklWRVJTSVRZIE1BS0VTIEFOWSBXQVJSQU5UWSwgRVhQUkVTUyBPUiBJTVBMSUVELCBPUlxuXAotQVNTVU1FUyBBTlkgTElBQklMSVRZIEZPUiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUuIElmIHNvZnR3YXJlIGlzIG1vZGlmaWVkXG5cCi10byBwcm9kdWNlIGRlcml2YXRpdmUgd29ya3MsIHN1Y2ggbW9kaWZpZWQgc29mdHdhcmUgc2hvdWxkIGJlIGNsZWFybHkgbWFya2VkLFxuXAotc28gYXMgbm90IHRvIGNvbmZ1c2UgaXQgd2l0aCB0aGUgdmVyc2lvbiBhdmFpbGFibGUgZnJvbSBMQU5MLlxuXAotXG5cCi1BZGRpdGlvbmFsbHksIHRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKLWFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAotd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCi1cblwKLUxBLUNDIDA0LTExNVxuCi0KLSMgImxpY2Vuc2VVUkwiIHByb3BlcnR5IC0gVVJMIG9mIHRoZSAiRmVhdHVyZSBMaWNlbnNlIgotIyBkbyBub3QgdHJhbnNsYXRlIHZhbHVlIC0ganVzdCBjaGFuZ2UgdG8gcG9pbnQgdG8gYSBsb2NhbGUtc3BlY2lmaWMgSFRNTCBwYWdlCi1saWNlbnNlVVJMPWxpY2Vuc2UuaHRtbAotCi0jICJsaWNlbnNlIiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIgotIyBzaG91bGQgYmUgcGxhaW4gdGV4dCB2ZXJzaW9uIG9mIGxpY2Vuc2UgYWdyZWVtZW50IHBvaW50ZWQgdG8gYmUgImxpY2Vuc2VVUkwiCi1saWNlbnNlPVwKLUVDTElQU0UgRk9VTkRBVElPTiBTT0ZUV0FSRSBVU0VSIEFHUkVFTUVOVFxuXAotTWFyY2ggMTcsIDIwMDVcblwKLVxuXAotVXNhZ2UgT2YgQ29udGVudFxuXAotXG5cCi1USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCi1PVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKLVVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCi1OT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCi1BR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCi1BTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAotT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKLVRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKLU9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlNcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gQ1ZTIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCi1hcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKLVxuXAotICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAotICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCi0gICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCi0gICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YT8gQVJjaGl2ZSlcblwKLSAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAotICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKLSAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKLSAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCi0gICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKLSAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCi0gICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gRmlsZXMgbmFtZWRcblwKLSJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mXG5cCi1JbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLSAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0gICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0gICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLSAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKLUVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlXG5cCi1MaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCi13aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIi4gU3VjaCBBYm91dHMsXG5cCi1GZWF0dXJlIExpY2Vuc2VzIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAotVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCi1TT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCi1cblwKLSAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAotICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCi0gICAgLSBJQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwpXG5cCi0gICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKLSAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCi1cblwKLUlUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1JcblwKLVRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlXG5cCi1pcyBwcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuXAotZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LlxuXAotXG5cCi1DcnlwdG9ncmFwaHlcblwKLVxuXAotQ29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlXG5cCi1jdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsXG5cCi1hbmQvb3IgcmUtZXhwb3J0IHRvIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFXG5cCi11c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cyxcblwKLXJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSxcblwKLWFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLlxuXAotXG5cCi1KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC5cbgotIyMjIyMjIyMjIyMgZW5kIG9mIGxpY2Vuc2UgcHJvcGVydHkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2ZlYXR1cmUueG1sIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5sc2YtZmVhdHVyZS9mZWF0dXJlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI4NTUxZi4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2ZlYXR1cmUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxmZWF0dXJlCi0gICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLmxzZiIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIyLjAuMC5xdWFsaWZpZXIiCi0gICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgotICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgotCi0gICA8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vZWNsaXBzZS5vcmcvcHRwIj4KLSAgICAgICVkZXNjcmlwdGlvbgotICAgPC9kZXNjcmlwdGlvbj4KLQotICAgPGNvcHlyaWdodD4KLSAgICAgICVjb3B5cmlnaHQKLSAgIDwvY29weXJpZ2h0PgotCi0gICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KLSAgICAgICVsaWNlbnNlCi0gICA8L2xpY2Vuc2U+Ci0KLSAgIDxyZXF1aXJlcz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2Uuc2VhcmNoIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UuZGVidWcuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5yZW1vdGUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAucHJveHkucHJvdG9jb2wiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5kZWJ1Zy51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5sYXVuY2giLz4KLSAgIDwvcmVxdWlyZXM+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubHNmLmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubHNmLnByb3h5IgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubHNmLnVpIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi08L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLmxzZi1mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvbGljZW5zZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmFmOTY2Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubHNmLWZlYXR1cmUvbGljZW5zZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIj4KLTx0aXRsZT5FY2xpcHNlLm9yZyBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9IkVOLVVTIiBsaW5rPWJsdWUgdmxpbms9cHVycGxlPgotPGgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvaDI+Ci08cD5NYXJjaCAxNywgMjAwNTwvcD4KLQotPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgotCi08cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKLSAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECi0gICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCi0gICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgotICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECi0gICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+Ci0gICAKLTxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4gICAKLSAgIAotPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAotICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLSAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+Ci0KLTxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlLm9yZyBDVlMgcmVwb3NpdG9yeSAoJnF1b3Q7UmVwb3NpdG9yeSZxdW90OykgaW4gQ1ZTCi0gICBtb2R1bGVzICgmcXVvdDtNb2R1bGVzJnF1b3Q7KSBhbmQgbWFkZSBhdmFpbGFibGUgYXMgZG93bmxvYWRhYmxlIGFyY2hpdmVzICgmcXVvdDtEb3dubG9hZHMmcXVvdDspLjwvcD4KLSAgIAotPHVsPgotCTxsaT5Db250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLCBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuICBUeXBpY2FsIG1vZHVsZXMgbWF5IGluY2x1ZGUgcGx1Zy1pbnMgKCZxdW90O1BsdWctaW5zJnF1b3Q7KSwgcGx1Zy1pbiBmcmFnbWVudHMgKCZxdW90O0ZyYWdtZW50cyZxdW90OyksIGFuZCBmZWF0dXJlcyAoJnF1b3Q7RmVhdHVyZXMmcXVvdDspLjwvbGk+Ci0JPGxpPkVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YSZ0cmFkZTsgQVJjaGl2ZSkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7cGx1Z2lucyZxdW90Oy48L2xpPgotCTxsaT5BIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O2ZlYXR1cmVzJnF1b3Q7LiAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS54bWwmcXVvdDsgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBQbHVnLWlucwotICAgICAgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLjwvbGk+Ci0JPGxpPkZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCZxdW90O0luY2x1ZGVkIEZlYXR1cmVzJnF1b3Q7KS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS54bWwmcXVvdDsgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLjwvbGk+Ci08L3VsPiAgIAotIAotPHA+VGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgJnF1b3Q7YWJvdXQuaHRtbCZxdW90OyAoJnF1b3Q7QWJvdXRzJnF1b3Q7KS4gVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQKLUluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgJnF1b3Q7bGljZW5zZS5odG1sJnF1b3Q7ICgmcXVvdDtGZWF0dXJlIExpY2Vuc2VzJnF1b3Q7KS4gIEFib3V0cyBhbmQgRmVhdHVyZSBMaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczo8L3A+Ci0KLTx1bD4KLQk8bGk+VGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5PC9saT4KLQk8bGk+UGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXM8L2xpPgotCTxsaT5JbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzPC9saT4KLQk8bGk+U3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7c3JjJnF1b3Q7IG9mIGNlcnRhaW4gUGx1Zy1pbnM8L2xpPgotCTxsaT5GZWF0dXJlIGRpcmVjdG9yaWVzPC9saT4KLTwvdWw+Ci0JCQotPHA+Tm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCZxdW90O0ZlYXR1cmUgVXBkYXRlIExpY2Vuc2UmcXVvdDspIGR1cmluZyB0aGUKLWluc3RhbGxhdGlvbiBwcm9jZXNzLiAgSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3Ugd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvcgotaW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB0aGVtLiAgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluIHRoZSAmcXVvdDtsaWNlbnNlJnF1b3Q7IHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUucHJvcGVydGllcyZxdW90OyBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLgotU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluCi10aGF0IGRpcmVjdG9yeS48L3A+Ci0KLTxwPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVIgVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuICBTT01FIE9GIFRIRVNFCi1PVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOjwvcD4KLQotPHVsPgotCTxsaT5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWw8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRTwvYT4pPC9saT4KLQk8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L2E+KTwvbGk+Ci0JPGxpPklCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbCI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWw8L2E+KTwvbGk+CQotCTxsaT5NZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L2E+KTwvbGk+Ci0JPGxpPk1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvYT4pPC9saT4KLTwvdWw+Ci0KLTxwPklUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1IgVE8gVVNFIE9GIFRIRSBDT05URU5ULiAgSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSwgb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBpcyBwcm92aWRlZCwgcGxlYXNlCi1jb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LjwvcD4KLQotPGgzPkNyeXB0b2dyYXBoeTwvaDM+Ci0KLTxwPkNvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsIGFuZC9vciByZS1leHBvcnQgdG8KLSAgIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFIHVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLCByZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LAotICAgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmQgcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIHRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC48L3A+Ci0gICAKLTxzbWFsbD5KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPiAgIAotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS8ucHJvamVjdCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZjQ3NmYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS8ucHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08cHJvamVjdERlc2NyaXB0aW9uPgotCTxuYW1lPm9yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZTwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5GZWF0dXJlQnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JPC9idWlsZFNwZWM+Ci0JPG5hdHVyZXM+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVOYXR1cmU8L25hdHVyZT4KLQk8L25hdHVyZXM+Ci08L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc5ZGY4Zi4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IGZlYXR1cmUueG1sLFwKLSAgICAgICAgICAgICAgIGxpY2Vuc2UuaHRtbCxcCi0gICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMsXAotICAgICAgICAgICAgICAgZXBsLXYxMC5odG1sCmRpZmYgLS1naXQgYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2VwbC12MTAuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRiMTk2Li4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZXBsLXYxMC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLTxodG1sIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIKLXhtbG5zOnc9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQiCi14bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+Ci0KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Ci08bWV0YSBuYW1lPVByb2dJZCBjb250ZW50PVdvcmQuRG9jdW1lbnQ+Ci08bWV0YSBuYW1lPUdlbmVyYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxtZXRhIG5hbWU9T3JpZ2luYXRvciBjb250ZW50PSJNaWNyb3NvZnQgV29yZCA5Ij4KLTxsaW5rIHJlbD1GaWxlLUxpc3QKLWhyZWY9Ii4vRWNsaXBzZSUyMEVQTCUyMDIwMDNfMTFfMTAlMjBGaW5hbF9maWxlcy9maWxlbGlzdC54bWwiPgotPHRpdGxlPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSBWZXJzaW9uIDEuMDwvdGl0bGU+Ci08IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8bzpEb2N1bWVudFByb3BlcnRpZXM+Ci0gIDxvOlJldmlzaW9uPjI8L286UmV2aXNpb24+Ci0gIDxvOlRvdGFsVGltZT4zPC9vOlRvdGFsVGltZT4KLSAgPG86Q3JlYXRlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpDcmVhdGVkPgotICA8bzpMYXN0U2F2ZWQ+MjAwNC0wMy0wNVQyMzowMzowMFo8L286TGFzdFNhdmVkPgotICA8bzpQYWdlcz40PC9vOlBhZ2VzPgotICA8bzpXb3Jkcz4xNjI2PC9vOldvcmRzPgotICA8bzpDaGFyYWN0ZXJzPjkyNzA8L286Q2hhcmFjdGVycz4KLSAgIDxvOkxpbmVzPjc3PC9vOkxpbmVzPgotICA8bzpQYXJhZ3JhcGhzPjE4PC9vOlBhcmFncmFwaHM+Ci0gIDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjExMzg0PC9vOkNoYXJhY3RlcnNXaXRoU3BhY2VzPgotICA8bzpWZXJzaW9uPjkuNDQwMjwvbzpWZXJzaW9uPgotIDwvbzpEb2N1bWVudFByb3BlcnRpZXM+Ci08L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KLSA8dzpXb3JkRG9jdW1lbnQ+Ci0gIDx3OlRyYWNrUmV2aXNpb25zLz4KLSA8L3c6V29yZERvY3VtZW50PgotPC94bWw+PCFbZW5kaWZdLS0+Ci08c3R5bGU+Ci08IS0tCi0gLyogRm9udCBEZWZpbml0aW9ucyAqLwotQGZvbnQtZmFjZQotCXtmb250LWZhbWlseTpUYWhvbWE7Ci0JcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7Ci0JbXNvLWZvbnQtY2hhcnNldDowOwotCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOwotCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOwotCW1zby1mb250LXNpZ25hdHVyZTo1NTM2Nzk0OTUgLTIxNDc0ODM2NDggOCAwIDY2MDQ3IDA7fQotIC8qIFN0eWxlIERlZmluaXRpb25zICovCi1wLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCi0Je21zby1zdHlsZS1wYXJlbnQ6IiI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZToxMi4wcHQ7Ci0JZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotcAotCXttYXJnaW4tcmlnaHQ6MGluOwotCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotCW1hcmdpbi1sZWZ0OjBpbjsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wLkJhbGxvb25UZXh0LCBsaS5CYWxsb29uVGV4dCwgZGl2LkJhbGxvb25UZXh0Ci0Je21zby1zdHlsZS1uYW1lOiJCYWxsb29uIFRleHQiOwotCW1hcmdpbjowaW47Ci0JbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6OC4wcHQ7Ci0JZm9udC1mYW1pbHk6VGFob21hOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLUBwYWdlIFNlY3Rpb24xCi0Je3NpemU6OC41aW4gMTEuMGluOwotCW1hcmdpbjoxLjBpbiAxLjI1aW4gMS4waW4gMS4yNWluOwotCW1zby1oZWFkZXItbWFyZ2luOi41aW47Ci0JbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKLQltc28tcGFwZXItc291cmNlOjA7fQotZGl2LlNlY3Rpb24xCi0Je3BhZ2U6U2VjdGlvbjE7fQotLS0+Ci08L3N0eWxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPUVOLVVTIHN0eWxlPSd0YWItaW50ZXJ2YWw6LjVpbic+Ci0KLTxkaXYgY2xhc3M9U2VjdGlvbjE+Ci0KLTxwIGFsaWduPWNlbnRlciBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXInPjxiPkVjbGlwc2UgUHVibGljIExpY2Vuc2UgLSB2IDEuMDwvYj4KLTwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRIRSBBQ0NPTVBBTllJTkcgUFJPR1JBTSBJUyBQUk9WSURFRCBVTkRFUgotVEhFIFRFUk1TIE9GIFRISVMgRUNMSVBTRSBQVUJMSUMgTElDRU5TRSAoJnF1b3Q7QUdSRUVNRU5UJnF1b3Q7KS4gQU5ZIFVTRSwKLVJFUFJPRFVDVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRQotT0YgVEhJUyBBR1JFRU1FTlQuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4xLiBERUZJTklUSU9OUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dGlvbiZxdW90OyBtZWFuczo8L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLWluIHRoZSBjYXNlIG9mIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yLCB0aGUgaW5pdGlhbCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uCi1kaXN0cmlidXRlZCB1bmRlciB0aGlzIEFncmVlbWVudCwgYW5kPGJyIGNsZWFyPWxlZnQ+Ci1iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOzwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPndoZXJlCi1zdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkCi1ieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IKLWlmIGl0IHdhcyBhZGRlZCB0byB0aGUgUHJvZ3JhbSBieSBzdWNoIENvbnRyaWJ1dG9yIGl0c2VsZiBvciBhbnlvbmUgYWN0aW5nIG9uCi1zdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUKLVByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbgotd2l0aCB0aGUgUHJvZ3JhbSB1bmRlciB0aGVpciBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZQotd29ya3Mgb2YgdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4mcXVvdDtDb250cmlidXRvciZxdW90OyBtZWFucyBhbnkgcGVyc29uIG9yCi1lbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0xpY2Vuc2VkIFBhdGVudHMgJnF1b3Q7IG1lYW4gcGF0ZW50Ci1jbGFpbXMgbGljZW5zYWJsZSBieSBhIENvbnRyaWJ1dG9yIHdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZQotb3Igc2FsZSBvZiBpdHMgQ29udHJpYnV0aW9uIGFsb25lIG9yIHdoZW4gY29tYmluZWQgd2l0aCB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1Byb2dyYW0mcXVvdDsgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMKLWRpc3RyaWJ1dGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGlzIEFncmVlbWVudC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O1JlY2lwaWVudCZxdW90OyBtZWFucyBhbnlvbmUgd2hvCi1yZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGFsbCBDb250cmlidXRvcnMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz4yLiBHUkFOVCBPRiBSSUdIVFM8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudAotYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0bzxzcGFuCi1zdHlsZT0nY29sb3I6cmVkJz4gPC9zcGFuPnJlcHJvZHVjZSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mLCBwdWJsaWNseQotZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2gKLUNvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZQotZm9ybS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5iKQotU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cwotUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+IDwvc3Bhbj5yb3lhbHR5LWZyZWUKLXBhdGVudCBsaWNlbnNlIHVuZGVyIExpY2Vuc2VkIFBhdGVudHMgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQKLWFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZQotY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24KLW9mIHRoZSBDb250cmlidXRpb24gYW5kIHRoZSBQcm9ncmFtIGlmLCBhdCB0aGUgdGltZSB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkCi1ieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbgotdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0bwotYW55IG90aGVyIGNvbWJpbmF0aW9ucyB3aGljaCBpbmNsdWRlIHRoZSBDb250cmlidXRpb24uIE5vIGhhcmR3YXJlIHBlciBzZSBpcwotbGljZW5zZWQgaGVyZXVuZGVyLiA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5jKQotUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cwotQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IKLXRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlIHBhdGVudCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkKLXJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudAotZm9yIGNsYWltcyBicm91Z2h0IGJ5IGFueSBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbAotcHJvcGVydHkgcmlnaHRzIG9yIG90aGVyd2lzZS4gQXMgYSBjb25kaXRpb24gdG8gZXhlcmNpc2luZyB0aGUgcmlnaHRzIGFuZAotbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkKLXRvIHNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yIGV4YW1wbGUsCi1pZiBhIHRoaXJkIHBhcnR5IHBhdGVudCBsaWNlbnNlIGlzIHJlcXVpcmVkIHRvIGFsbG93IFJlY2lwaWVudCB0byBkaXN0cmlidXRlCi10aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlCi1kaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+ZCkKLUVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0Ci1yaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCB0aGUgY29weXJpZ2h0IGxpY2Vuc2Ugc2V0IGZvcnRoIGluCi10aGlzIEFncmVlbWVudC4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjMuIFJFUVVJUkVNRU5UUzwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkEgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZQotUHJvZ3JhbSBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIGl0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6PC9zcGFuPgotPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1pdHMgbGljZW5zZSBhZ3JlZW1lbnQ6PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aSkKLWVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQKLWNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUKLWFuZCBub24taW5mcmluZ2VtZW50LCBhbmQgaW1wbGllZCB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5Ci1hbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmlpKQotZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIGxpYWJpbGl0eSBmb3IgZGFtYWdlcywKLWluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2gKLWFzIGxvc3QgcHJvZml0czsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWlpKQotc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdAotQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgcGFydHk7IGFuZDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPml2KQotc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZAotaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYQotbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLjxzcGFuIHN0eWxlPSdjb2xvcjpibHVlJz4gPC9zcGFuPjwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZQotY29kZSBmb3JtOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpIGEKLWNvcHkgb2YgdGhpcyBBZ3JlZW1lbnQgbXVzdCBiZSBpbmNsdWRlZCB3aXRoIGVhY2ggY29weSBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbnRyaWJ1dG9ycyBtYXkgbm90IHJlbW92ZSBvciBhbHRlciBhbnkKLWNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZQotb3JpZ2luYXRvciBvZiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3MKLXN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+NC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT048L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkKLWFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMKLWFuZCB0aGUgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzIGludGVuZGVkIHRvIGZhY2lsaXRhdGUgdGhlIGNvbW1lcmNpYWwgdXNlCi1vZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwKLXByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwKLWxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsIGlmIGEgQ29udHJpYnV0b3IgaW5jbHVkZXMgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgmcXVvdDtDb21tZXJjaWFsCi1Db250cmlidXRvciZxdW90OykgaGVyZWJ5IGFncmVlcyB0byBkZWZlbmQgYW5kIGluZGVtbmlmeSBldmVyeSBvdGhlcgotQ29udHJpYnV0b3IgKCZxdW90O0luZGVtbmlmaWVkIENvbnRyaWJ1dG9yJnF1b3Q7KSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kCi1jb3N0cyAoY29sbGVjdGl2ZWx5ICZxdW90O0xvc3NlcyZxdW90OykgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyCi1sZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0bwotdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbgotY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3QKLW9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbmZyaW5nZW1lbnQuIEluIG9yZGVyCi10byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkgdGhlIENvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yCi10byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4sIHRoZSBkZWZlbnNlIGFuZAotYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciBtYXkgcGFydGljaXBhdGUKLWluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlCi1Qcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZQotY2xhaW1zLCBvciBvZmZlcnMgd2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZAotd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMKLXNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZQotb3RoZXIgQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYQotY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlCi1Db21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz41LiBOTyBXQVJSQU5UWTwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMKLUFHUkVFTUVOVCwgVEhFIFBST0dSQU0gSVMgUFJPVklERUQgT04gQU4gJnF1b3Q7QVMgSVMmcXVvdDsgQkFTSVMsIFdJVEhPVVQKLVdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCBJTkNMVURJTkcsCi1XSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsCi1NRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIEVhY2ggUmVjaXBpZW50IGlzIHNvbGVseQotcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aGUKLVByb2dyYW0gYW5kIGFzc3VtZXMgYWxsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBpdHMgZXhlcmNpc2Ugb2YgcmlnaHRzIHVuZGVyIHRoaXMKLUFncmVlbWVudCAsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywKLWNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yCi1lcXVpcG1lbnQsIGFuZCB1bmF2YWlsYWJpbGl0eSBvciBpbnRlcnJ1cHRpb24gb2Ygb3BlcmF0aW9ucy4gPC9zcGFuPjwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SCi1BTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLShJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIExPU1QgUFJPRklUUyksIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi1PRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwotTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPUiBESVNUUklCVVRJT04gT0YKLVRIRSBQUk9HUkFNIE9SIFRIRSBFWEVSQ0lTRSBPRiBBTlkgUklHSFRTIEdSQU5URUQgSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuPC9zcGFuPiA8L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz43LiBHRU5FUkFMPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkCi1vciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFwcGxpY2FibGUgbGF3LCBpdCBzaGFsbCBub3QgYWZmZWN0IHRoZSB2YWxpZGl0eSBvcgotZW5mb3JjZWFiaWxpdHkgb2YgdGhlIHJlbWFpbmRlciBvZiB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGFuZCB3aXRob3V0Ci1mdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZQotbWluaW11bSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VjaCBwcm92aXNpb24gdmFsaWQgYW5kIGVuZm9yY2VhYmxlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+SWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24KLWFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkKLWFsbGVnaW5nIHRoYXQgdGhlIFByb2dyYW0gaXRzZWxmIChleGNsdWRpbmcgY29tYmluYXRpb25zIG9mIHRoZSBQcm9ncmFtIHdpdGgKLW90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaAotUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZQotc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudAotc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IKLWNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZQotcGVyaW9kIG9mIHRpbWUgYWZ0ZXIgYmVjb21pbmcgYXdhcmUgb2Ygc3VjaCBub25jb21wbGlhbmNlLiBJZiBhbGwgUmVjaXBpZW50J3MKLXJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZAotZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwKLVJlY2lwaWVudCdzIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgbGljZW5zZXMgZ3JhbnRlZCBieQotUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUKLWNvcGllcyBvZiB0aGlzIEFncmVlbWVudCwgYnV0IGluIG9yZGVyIHRvIGF2b2lkIGluY29uc2lzdGVuY3kgdGhlIEFncmVlbWVudCBpcwotY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50Ci1TdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucyAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YKLXRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLiBObyBvbmUgb3RoZXIgdGhhbiB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgaGFzCi10aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsCi1BZ3JlZW1lbnQgU3Rld2FyZC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYXkgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0bwotc2VydmUgYXMgdGhlIEFncmVlbWVudCBTdGV3YXJkIHRvIGEgc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uCi1vZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0KLShpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mCi10aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQotKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZAotaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0bwotdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIHdoZXRoZXIKLWV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gQWxsIHJpZ2h0cyBpbiB0aGUgUHJvZ3JhbSBub3QKLWV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC48L3NwYW4+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPlRoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZQotU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZgotQW1lcmljYS4gTm8gcGFydHkgdG8gdGhpcyBBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzCi1BZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzCi1pdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uPC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbD48IVtpZiAhc3VwcG9ydEVtcHR5UGFyYXNdPiZuYnNwOzwhW2VuZGlmXT48bzpwPjwvbzpwPjwvcD4KLQotPC9kaXY+Ci0KLTwvYm9keT4KLQotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNWNkNWIuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS9mZWF0dXJlLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENvcHlyaWdodCAoYykgMjAwNSBUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAKLSMgVGhpcyBtYXRlcmlhbCB3YXMgcHJvZHVjZWQgdW5kZXIgVS5TLiBHb3Zlcm5tZW50IGNvbnRyYWN0IFctNzQwNS1FTkctMzYgCi0jIGZvciBMb3MgQWxhbW9zIE5hdGlvbmFsIExhYm9yYXRvcnksIHdoaWNoIGlzIG9wZXJhdGVkIGJ5IHRoZSBVbml2ZXJzaXR5IAotIyBvZiBDYWxpZm9ybmlhIGZvciB0aGUgVS5TLiBEZXBhcnRtZW50IG9mIEVuZXJneS4gVGhlIFUuUy4gR292ZXJubWVudCBoYXMgCi0jIHJpZ2h0cyB0byB1c2UsIHJlcHJvZHVjZSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZS4gTkVJVEhFUiBUSEUgCi0jIEdPVkVSTk1FTlQgTk9SIFRIRSBVTklWRVJTSVRZIE1BS0VTIEFOWSBXQVJSQU5UWSwgRVhQUkVTUyBPUiBJTVBMSUVELCBPUiAKLSMgQVNTVU1FUyBBTlkgTElBQklMSVRZIEZPUiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUuIElmIHNvZnR3YXJlIGlzIG1vZGlmaWVkIAotIyB0byBwcm9kdWNlIGRlcml2YXRpdmUgd29ya3MsIHN1Y2ggbW9kaWZpZWQgc29mdHdhcmUgc2hvdWxkIGJlIGNsZWFybHkgbWFya2VkLCAKLSMgc28gYXMgbm90IHRvIGNvbmZ1c2UgaXQgd2l0aCB0aGUgdmVyc2lvbiBhdmFpbGFibGUgZnJvbSBMQU5MLgotIyAKLSMgQWRkaXRpb25hbGx5LCB0aGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIAotIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgCi0jIExBLUNDIDA0LTExNQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLQotIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQotZmVhdHVyZU5hbWU9UFRQIFN1cHBvcnQgRm9yIE1QSUNIMgotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotdXBkYXRlU2l0ZU5hbWU9RWNsaXBzZSBQVFAgVXBkYXRlIFNpdGUKLQotIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPUFkZHMgc3VwcG9ydCBmb3IgTVBJQ0gyCi0KLSMgY29weXJpZ2h0Ci1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuXG5cCi1UaGlzIG1hdGVyaWFsIHdhcyBwcm9kdWNlZCB1bmRlciBVLlMuIEdvdmVybm1lbnQgY29udHJhY3QgVy03NDA1LUVORy0zNlxuXAotZm9yIExvcyBBbGFtb3MgTmF0aW9uYWwgTGFib3JhdG9yeSwgd2hpY2ggaXMgb3BlcmF0ZWQgYnkgdGhlIFVuaXZlcnNpdHlcblwKLW9mIENhbGlmb3JuaWEgZm9yIHRoZSBVLlMuIERlcGFydG1lbnQgb2YgRW5lcmd5LiBUaGUgVS5TLiBHb3Zlcm5tZW50IGhhc1xuXAotcmlnaHRzIHRvIHVzZSwgcmVwcm9kdWNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLiBORUlUSEVSIFRIRVxuXAotR09WRVJOTUVOVCBOT1IgVEhFIFVOSVZFUlNJVFkgTUFLRVMgQU5ZIFdBUlJBTlRZLCBFWFBSRVNTIE9SIElNUExJRUQsIE9SXG5cCi1BU1NVTUVTIEFOWSBMSUFCSUxJVFkgRk9SIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4gSWYgc29mdHdhcmUgaXMgbW9kaWZpZWRcblwKLXRvIHByb2R1Y2UgZGVyaXZhdGl2ZSB3b3Jrcywgc3VjaCBtb2RpZmllZCBzb2Z0d2FyZSBzaG91bGQgYmUgY2xlYXJseSBtYXJrZWQsXG5cCi1zbyBhcyBub3QgdG8gY29uZnVzZSBpdCB3aXRoIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBmcm9tIExBTkwuXG5cCi1cblwKLUFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotTEEtQ0MgMDQtMTE1XG4KLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1NYXJjaCAxNywgMjAwNVxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZmVhdHVyZS54bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2ZlYXR1cmUueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjVlYjRhLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyLWZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ubXBpY2gyIgotICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjIuMS4wLnF1YWxpZmllciIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCi0gICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+Ci0KLSAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly9lY2xpcHNlLm9yZy9wdHAiPgotICAgICAgJWRlc2NyaXB0aW9uCi0gICA8L2Rlc2NyaXB0aW9uPgotCi0gICA8Y29weXJpZ2h0PgotICAgICAgJWNvcHlyaWdodAotICAgPC9jb3B5cmlnaHQ+Ci0KLSAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgotICAgICAgJWxpY2Vuc2UKLSAgIDwvbGljZW5zZT4KLQotICAgPHJlcXVpcmVzPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmNvcmUucnVudGltZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnNlYXJjaCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UuZGVidWcuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5wcm94eS5wcm90b2NvbCIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5jb3JlIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmRlYnVnLnVpIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnVpIi8+Ci0gICA8L3JlcXVpcmVzPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi5jb3JlIgotICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKLSAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjAuMC4wIgotICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi5wcm94eSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi51aSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIKLSAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KLQotPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5tcGljaDItZmVhdHVyZS9saWNlbnNlLmh0bWwgYi9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhZjk2Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm1waWNoMi1mZWF0dXJlL2xpY2Vuc2UuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci08dGl0bGU+RWNsaXBzZS5vcmcgU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L3RpdGxlPgotPC9oZWFkPgotCi08Ym9keSBsYW5nPSJFTi1VUyIgbGluaz1ibHVlIHZsaW5rPXB1cnBsZT4KLTxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgotPHA+TWFyY2ggMTcsIDIwMDU8L3A+Ci0KLTxoMz5Vc2FnZSBPZiBDb250ZW50PC9oMz4KLQotPHA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUiBPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTCi0gICAoQ09MTEVDVElWRUxZICZxdW90O0NPTlRFTlQmcXVvdDspLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQotICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKLSAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAotICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9wPgotICAgCi08aDM+QXBwbGljYWJsZSBMaWNlbnNlczwvaDM+ICAgCi0gICAKLTxwPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKLSAgICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCi0gICBGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgotCi08cD5Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSwgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZS5vcmcgQ1ZTIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIENWUwotICAgbW9kdWxlcyAoJnF1b3Q7TW9kdWxlcyZxdW90OykgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoJnF1b3Q7RG93bmxvYWRzJnF1b3Q7KS48L3A+Ci0gICAKLTx1bD4KLQk8bGk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgmcXVvdDtQbHVnLWlucyZxdW90OyksIHBsdWctaW4gZnJhZ21lbnRzICgmcXVvdDtGcmFnbWVudHMmcXVvdDspLCBhbmQgZmVhdHVyZXMgKCZxdW90O0ZlYXR1cmVzJnF1b3Q7KS48L2xpPgotCTxsaT5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEmdHJhZGU7IEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O3BsdWdpbnMmcXVvdDsuPC9saT4KLQk8bGk+QSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtmZWF0dXJlcyZxdW90Oy4gIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKLSAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L2xpPgotCTxsaT5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgmcXVvdDtJbmNsdWRlZCBGZWF0dXJlcyZxdW90OykuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy48L2xpPgotPC91bD4gICAKLSAKLTxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCi1JbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgotCi08dWw+Ci0JPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+Ci0JPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KLQk8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+Ci0JPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KLQk8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Ci08L3VsPgotCQkKLTxwPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCi1pbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKLWluZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KLVN1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgotdGhhdCBkaXJlY3RvcnkuPC9wPgotCi08cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQotT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+Ci0KLTx1bD4KLQk8bGk+Q29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L2E+KTwvbGk+Ci0JPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9hPik8L2xpPgotCTxsaT5JQk0gUHVibGljIExpY2Vuc2UgMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvbGljZW5zZTEwLmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sPC9hPik8L2xpPgkKLQk8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgotCTxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Ci08L3VsPgotCi08cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQotY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+Ci0KLTxoMz5DcnlwdG9ncmFwaHk8L2gzPgotCi08cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCi0gICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKLSAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgotICAgCi08c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9zbWFsbD4gICAKLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlLy5wcm9qZWN0IGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ODRkZWQuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlPC9uYW1lPgotCTxjb21tZW50PjwvY29tbWVudD4KLQk8cHJvamVjdHM+Ci0JPC9wcm9qZWN0cz4KLQk8YnVpbGRTcGVjPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLkZlYXR1cmVCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuRmVhdHVyZU5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcyBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OWRmOGYuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotYmluLmluY2x1ZGVzID0gZmVhdHVyZS54bWwsXAotICAgICAgICAgICAgICAgbGljZW5zZS5odG1sLFwKLSAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcyxcCi0gICAgICAgICAgICAgICBlcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2VwbC12MTAuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2VwbC12MTAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0YjE5Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm9ydGUtZmVhdHVyZS9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotPGh0bWwgeG1sbnM6bz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlIgoteG1sbnM6dz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIKLXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj4KLQotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PUNvbnRlbnQtVHlwZSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KLTxtZXRhIG5hbWU9UHJvZ0lkIGNvbnRlbnQ9V29yZC5Eb2N1bWVudD4KLTxtZXRhIG5hbWU9R2VuZXJhdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPG1ldGEgbmFtZT1PcmlnaW5hdG9yIGNvbnRlbnQ9Ik1pY3Jvc29mdCBXb3JkIDkiPgotPGxpbmsgcmVsPUZpbGUtTGlzdAotaHJlZj0iLi9FY2xpcHNlJTIwRVBMJTIwMjAwM18xMV8xMCUyMEZpbmFsX2ZpbGVzL2ZpbGVsaXN0LnhtbCI+Ci08dGl0bGU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC90aXRsZT4KLTwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDxvOkRvY3VtZW50UHJvcGVydGllcz4KLSAgPG86UmV2aXNpb24+MjwvbzpSZXZpc2lvbj4KLSAgPG86VG90YWxUaW1lPjM8L286VG90YWxUaW1lPgotICA8bzpDcmVhdGVkPjIwMDQtMDMtMDVUMjM6MDM6MDBaPC9vOkNyZWF0ZWQ+Ci0gIDxvOkxhc3RTYXZlZD4yMDA0LTAzLTA1VDIzOjAzOjAwWjwvbzpMYXN0U2F2ZWQ+Ci0gIDxvOlBhZ2VzPjQ8L286UGFnZXM+Ci0gIDxvOldvcmRzPjE2MjY8L286V29yZHM+Ci0gIDxvOkNoYXJhY3RlcnM+OTI3MDwvbzpDaGFyYWN0ZXJzPgotICAgPG86TGluZXM+Nzc8L286TGluZXM+Ci0gIDxvOlBhcmFncmFwaHM+MTg8L286UGFyYWdyYXBocz4KLSAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+MTEzODQ8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+Ci0gIDxvOlZlcnNpb24+OS40NDAyPC9vOlZlcnNpb24+Ci0gPC9vOkRvY3VtZW50UHJvcGVydGllcz4KLTwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYgZ3RlIG1zbyA5XT48eG1sPgotIDx3OldvcmREb2N1bWVudD4KLSAgPHc6VHJhY2tSZXZpc2lvbnMvPgotIDwvdzpXb3JkRG9jdW1lbnQ+Ci08L3htbD48IVtlbmRpZl0tLT4KLTxzdHlsZT4KLTwhLS0KLSAvKiBGb250IERlZmluaXRpb25zICovCi1AZm9udC1mYWNlCi0Je2ZvbnQtZmFtaWx5OlRhaG9tYTsKLQlwYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLQltc28tZm9udC1jaGFyc2V0OjA7Ci0JbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci0JbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci0JbXNvLWZvbnQtc2lnbmF0dXJlOjU1MzY3OTQ5NSAtMjE0NzQ4MzY0OCA4IDAgNjYwNDcgMDt9Ci0gLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8KLXAuTXNvTm9ybWFsLCBsaS5Nc29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwKLQl7bXNvLXN0eWxlLXBhcmVudDoiIjsKLQltYXJnaW46MGluOwotCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKLQltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47Ci0JZm9udC1zaXplOjEyLjBwdDsKLQlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLQltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wCi0Je21hcmdpbi1yaWdodDowaW47Ci0JbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87Ci0JbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87Ci0JbWFyZ2luLWxlZnQ6MGluOwotCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLQlmb250LXNpemU6MTIuMHB0OwotCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KLXAuQmFsbG9vblRleHQsIGxpLkJhbGxvb25UZXh0LCBkaXYuQmFsbG9vblRleHQKLQl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCI7Ci0JbWFyZ2luOjBpbjsKLQltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Ci0JbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotCWZvbnQtc2l6ZTo4LjBwdDsKLQlmb250LWZhbWlseTpUYWhvbWE7Ci0JbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQotQHBhZ2UgU2VjdGlvbjEKLQl7c2l6ZTo4LjVpbiAxMS4waW47Ci0JbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci0JbXNvLWhlYWRlci1tYXJnaW46LjVpbjsKLQltc28tZm9vdGVyLW1hcmdpbjouNWluOwotCW1zby1wYXBlci1zb3VyY2U6MDt9Ci1kaXYuU2VjdGlvbjEKLQl7cGFnZTpTZWN0aW9uMTt9Ci0tLT4KLTwvc3R5bGU+Ci08L2hlYWQ+Ci0KLTxib2R5IGxhbmc9RU4tVVMgc3R5bGU9J3RhYi1pbnRlcnZhbDouNWluJz4KLQotPGRpdiBjbGFzcz1TZWN0aW9uMT4KLQotPHAgYWxpZ249Y2VudGVyIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcic+PGI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9iPgotPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSCi1USEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQyBMSUNFTlNFICgmcXVvdDtBR1JFRU1FTlQmcXVvdDspLiBBTlkgVVNFLAotUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFCi1PRiBUSElTIEFHUkVFTUVOVC48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjEuIERFRklOSVRJT05TPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOjwvc3Bhbj4gPC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5hKQotaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KLWRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQ8YnIgY2xlYXI9bGVmdD4KLWIpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1hZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+d2hlcmUKLXN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUgZGlzdHJpYnV0ZWQKLWJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvcgotaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24KLXN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90IGluY2x1ZGUgYWRkaXRpb25zIHRvIHRoZQotUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uCi13aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlCi13b3JrcyBvZiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPiZxdW90O0NvbnRyaWJ1dG9yJnF1b3Q7IG1lYW5zIGFueSBwZXJzb24gb3IKLWVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7TGljZW5zZWQgUGF0ZW50cyAmcXVvdDsgbWVhbiBwYXRlbnQKLWNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlCi1vciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UHJvZ3JhbSZxdW90OyBtZWFucyB0aGUgQ29udHJpYnV0aW9ucwotZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMgQWdyZWVtZW50Ljwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+JnF1b3Q7UmVjaXBpZW50JnF1b3Q7IG1lYW5zIGFueW9uZSB3aG8KLXJlY2VpdmVzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjIuIEdSQU5UIE9GIFJJR0hUUzwvc3Bhbj48L2I+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YSkKLVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50Ci1hIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPHNwYW4KLXN0eWxlPSdjb2xvcjpyZWQnPiA8L3NwYW4+cmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5Ci1kaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlCi1mb3JtLjwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmIpCi1TdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzCi1SZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz4gPC9zcGFuPnJveWFsdHktZnJlZQotcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydAotYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlCi1jb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbgotb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQKLWJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uCi10byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCi1hbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuIDwvc3Bhbj48L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmMpCi1SZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCi1Db250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvcgotdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eQotcmlnaHRzIG9mIGFueSBvdGhlciBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50Ci1mb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsCi1wcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kCi1saWNlbnNlcyBncmFudGVkIGhlcmV1bmRlciwgZWFjaCBSZWNpcGllbnQgaGVyZWJ5IGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eQotdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwKLWlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUKLXRoZSBQcm9ncmFtLCBpdCBpcyBSZWNpcGllbnQncyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZSBiZWZvcmUKLWRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS48L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5kKQotRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQKLXJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4KLXRoaXMgQWdyZWVtZW50LiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+My4gUkVRVUlSRU1FTlRTPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+QSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlCi1Qcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDo8L3NwYW4+Ci08L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikKLWl0cyBsaWNlbnNlIGFncmVlbWVudDo8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5pKQotZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCB3YXJyYW50aWVzIGFuZAotY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZQotYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkKLWFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aWkpCi1lZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLAotaW5jbHVkaW5nIGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgc3VjaAotYXMgbG9zdCBwcm9maXRzOyA8L3NwYW4+PC9wPgotCi08cCBjbGFzcz1Nc29Ob3JtYWwgc3R5bGU9J21hcmdpbi1sZWZ0Oi41aW4nPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5paWkpCi1zdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0Ci1Db250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+aXYpCi1zdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCi1pbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhCi1tZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPHNwYW4gc3R5bGU9J2NvbG9yOmJsdWUnPiA8L3NwYW4+PC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlCi1jb2RlIGZvcm06PC9zcGFuPiA8L3A+Ci0KLTxwIGNsYXNzPU1zb05vcm1hbCBzdHlsZT0nbWFyZ2luLWxlZnQ6LjVpbic+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPmEpCi1pdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9zcGFuPjwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsIHN0eWxlPSdtYXJnaW4tbGVmdDouNWluJz48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+YikgYQotY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3NwYW4+PC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueQotY29weXJpZ2h0IG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgUHJvZ3JhbS4gPC9zcGFuPjwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlCi1vcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cwotc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uIDwvc3Bhbj48L3A+Ci0KLTxwPjxiPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvc3Bhbj48L2I+IDwvcD4KLQotPHA+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heQotYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycwotYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2UKLW9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAotbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yJnF1b3Q7KSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyCi1Db250cmlidXRvciAoJnF1b3Q7SW5kZW1uaWZpZWQgQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQKLWNvc3RzIChjb2xsZWN0aXZlbHkgJnF1b3Q7TG9zc2VzJnF1b3Q7KSBhcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIKLWxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvCi10aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluCi1jb25uZWN0aW9uIHdpdGggaXRzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdAotb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzCi1yZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIKLXRvIHF1YWxpZnksIGFuIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG11c3Q6IGEpIHByb21wdGx5IG5vdGlmeSB0aGUgQ29tbWVyY2lhbAotQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IKLXRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kCi1hbnkgcmVsYXRlZCBzZXR0bGVtZW50IG5lZ290aWF0aW9ucy4gVGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIG1heSBwYXJ0aWNpcGF0ZQotaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Rm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUKLVByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIFByb2R1Y3QgWC4gVGhhdCBDb250cmlidXRvciBpcyB0aGVuIGEKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlCi1jbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kCi13YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IncyByZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcwotc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlCi1vdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhCi1jb3VydCByZXF1aXJlcyBhbnkgb3RoZXIgQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUKLUNvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjUuIE5PIFdBUlJBTlRZPC9zcGFuPjwvYj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUwotQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywgV0lUSE9VVAotV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywKLVdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwKLU1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5Ci1yZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZQotUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcwotQWdyZWVtZW50ICwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLAotY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IKLWVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiA8L3NwYW4+PC9wPgotCi08cD48Yj48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTCi1BR1JFRU1FTlQsIE5FSVRIRVIgUkVDSVBJRU5UIE5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IKLUFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLU9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRgotVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L3NwYW4+IDwvcD4KLQotPHA+PGI+PHNwYW4gc3R5bGU9J2ZvbnQtc2l6ZToxMC4wcHQnPjcuIEdFTkVSQUw8L3NwYW4+PC9iPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQKLW9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yCi1lbmZvcmNlYWJpbGl0eSBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQKLWZ1cnRoZXIgYWN0aW9uIGJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlCi1taW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9zcGFuPiA8L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbgotYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KQotYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aAotb3RoZXIgc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlCi1zdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50Ci1zaGFsbCB0ZXJtaW5hdGUgaWYgaXQgZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvcgotY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlCi1wZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncwotcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuIDwvc3Bhbj48L3A+Ci0KLTxwPjxzcGFuIHN0eWxlPSdmb250LXNpemU6MTAuMHB0Jz5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZQotY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZSBBZ3JlZW1lbnQKLVN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZgotdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMKLXRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgdGhlIGluaXRpYWwKLUFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbQotKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YKLXRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZgotdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCi0oaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkCi1pbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlcgotZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdAotZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvc3Bhbj4gPC9wPgotCi08cD48c3BhbiBzdHlsZT0nZm9udC1zaXplOjEwLjBwdCc+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlCi1TdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mCi1BbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMKLUFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIgYWZ0ZXIgdGhlIGNhdXNlIG9mIGFjdGlvbiBhcm9zZS4gRWFjaCBwYXJ0eSB3YWl2ZXMKLWl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi48L3NwYW4+IDwvcD4KLQotPHAgY2xhc3M9TXNvTm9ybWFsPjwhW2lmICFzdXBwb3J0RW1wdHlQYXJhc10+Jm5ic3A7PCFbZW5kaWZdPjxvOnA+PC9vOnA+PC9wPgotCi08L2Rpdj4KLQotPC9ib2R5PgotCi08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGM4ODdmLi4wMDAwMDAwCi0tLSBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2ZlYXR1cmUucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuIAotIyBUaGlzIG1hdGVyaWFsIHdhcyBwcm9kdWNlZCB1bmRlciBVLlMuIEdvdmVybm1lbnQgY29udHJhY3QgVy03NDA1LUVORy0zNiAKLSMgZm9yIExvcyBBbGFtb3MgTmF0aW9uYWwgTGFib3JhdG9yeSwgd2hpY2ggaXMgb3BlcmF0ZWQgYnkgdGhlIFVuaXZlcnNpdHkgCi0jIG9mIENhbGlmb3JuaWEgZm9yIHRoZSBVLlMuIERlcGFydG1lbnQgb2YgRW5lcmd5LiBUaGUgVS5TLiBHb3Zlcm5tZW50IGhhcyAKLSMgcmlnaHRzIHRvIHVzZSwgcmVwcm9kdWNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLiBORUlUSEVSIFRIRSAKLSMgR09WRVJOTUVOVCBOT1IgVEhFIFVOSVZFUlNJVFkgTUFLRVMgQU5ZIFdBUlJBTlRZLCBFWFBSRVNTIE9SIElNUExJRUQsIE9SIAotIyBBU1NVTUVTIEFOWSBMSUFCSUxJVFkgRk9SIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4gSWYgc29mdHdhcmUgaXMgbW9kaWZpZWQgCi0jIHRvIHByb2R1Y2UgZGVyaXZhdGl2ZSB3b3Jrcywgc3VjaCBtb2RpZmllZCBzb2Z0d2FyZSBzaG91bGQgYmUgY2xlYXJseSBtYXJrZWQsIAotIyBzbyBhcyBub3QgdG8gY29uZnVzZSBpdCB3aXRoIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBmcm9tIExBTkwuCi0jIAotIyBBZGRpdGlvbmFsbHksIHRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotIyAKLSMgTEEtQ0MgMDQtMTE1Ci0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi0jICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1QVFAgU3VwcG9ydCBGb3IgT3BlbiBNUEkKLQotIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQotcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCi0KLSMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKLXVwZGF0ZVNpdGVOYW1lPUVjbGlwc2UgUFRQIFVwZGF0ZSBTaXRlCi0KLSMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1BZGRzIHN1cHBvcnQgZm9yIE9wZW4gTVBJCi0KLSMgY29weXJpZ2h0Ci1jb3B5cmlnaHQ9XAotQ29weXJpZ2h0IChjKSAyMDA1IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuXG5cCi1UaGlzIG1hdGVyaWFsIHdhcyBwcm9kdWNlZCB1bmRlciBVLlMuIEdvdmVybm1lbnQgY29udHJhY3QgVy03NDA1LUVORy0zNlxuXAotZm9yIExvcyBBbGFtb3MgTmF0aW9uYWwgTGFib3JhdG9yeSwgd2hpY2ggaXMgb3BlcmF0ZWQgYnkgdGhlIFVuaXZlcnNpdHlcblwKLW9mIENhbGlmb3JuaWEgZm9yIHRoZSBVLlMuIERlcGFydG1lbnQgb2YgRW5lcmd5LiBUaGUgVS5TLiBHb3Zlcm5tZW50IGhhc1xuXAotcmlnaHRzIHRvIHVzZSwgcmVwcm9kdWNlLCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLiBORUlUSEVSIFRIRVxuXAotR09WRVJOTUVOVCBOT1IgVEhFIFVOSVZFUlNJVFkgTUFLRVMgQU5ZIFdBUlJBTlRZLCBFWFBSRVNTIE9SIElNUExJRUQsIE9SXG5cCi1BU1NVTUVTIEFOWSBMSUFCSUxJVFkgRk9SIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4gSWYgc29mdHdhcmUgaXMgbW9kaWZpZWRcblwKLXRvIHByb2R1Y2UgZGVyaXZhdGl2ZSB3b3Jrcywgc3VjaCBtb2RpZmllZCBzb2Z0d2FyZSBzaG91bGQgYmUgY2xlYXJseSBtYXJrZWQsXG5cCi1zbyBhcyBub3QgdG8gY29uZnVzZSBpdCB3aXRoIHRoZSB2ZXJzaW9uIGF2YWlsYWJsZSBmcm9tIExBTkwuXG5cCi1cblwKLUFkZGl0aW9uYWxseSwgdGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAotYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCi13aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKLVxuXAotTEEtQ0MgMDQtMTE1XG4KLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRUNMSVBTRSBGT1VOREFUSU9OIFNPRlRXQVJFIFVTRVIgQUdSRUVNRU5UXG5cCi1NYXJjaCAxNywgMjAwNVxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKLU9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAotVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCi1BR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKLU5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKLUFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKLUFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCi1PUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAotVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAotT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKLUJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKLVxuXAotQXBwbGljYWJsZSBMaWNlbnNlc1xuXAotXG5cCi1Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvblxuXAotaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWNcblwKLUxpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzXG5cCi1Db250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAotXG5cCi1Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKLWRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWU1xuXAotcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBDVlMgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0gICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi0gICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKLSAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKLSAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhPyBBUmNoaXZlKVxuXAotICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCi0gICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAotICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAotICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKLSAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAotICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKLSAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCi1cblwKLUZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBGaWxlcyBuYW1lZFxuXAotImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2ZcblwKLUluY2x1ZGVkIEZlYXR1cmVzLlxuXAotXG5cCi1UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCi1jb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCi1pbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCi1MaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCi1pbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKLVxuXAotICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKLSAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKLSAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAotICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCi0gICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKLVxuXAotTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAotRWNsaXBzZSBVcGRhdGUgTWFuYWdlciwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBVcGRhdGVcblwKLUxpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAotSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKLXdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCi15b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCi10aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiLiBTdWNoIEFib3V0cyxcblwKLUZlYXR1cmUgTGljZW5zZXMgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZFxuXAotY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyXG5cCi11c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKLVxuXAotVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUyBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCi1UTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKLVNPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKLVxuXAotICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCi0gICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKLSAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKLSAgICAtIElCTSBQdWJsaWMgTGljZW5zZSAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbClcblwKLSAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAotICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKLVxuXAotSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAotVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKLWlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCi1nb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCi0jIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2ZlYXR1cmUueG1sIGIvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YjI1MzIuLjAwMDAwMDAKLS0tIGEvcmVsZW5nL29yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLWZlYXR1cmUvZmVhdHVyZS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ub3J0ZSIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIyLjAuMS5xdWFsaWZpZXIiCi0gICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgotICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgotCi0gICA8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vZWNsaXBzZS5vcmcvcHRwIj4KLSAgICAgICVkZXNjcmlwdGlvbgotICAgPC9kZXNjcmlwdGlvbj4KLQotICAgPGNvcHlyaWdodD4KLSAgICAgICVjb3B5cmlnaHQKLSAgIDwvY29weXJpZ2h0PgotCi0gICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KLSAgICAgICVsaWNlbnNlCi0gICA8L2xpY2Vuc2U+Ci0KLSAgIDxyZXF1aXJlcz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5zZWFyY2giLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLmRlYnVnLmNvcmUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAucHJveHkucHJvdG9jb2wiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAuY29yZSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC5ybS5yZW1vdGUiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAudXRpbHMiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAucHJveHkiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAudWkiLz4KLSAgICAgIDxpbXBvcnQgcGx1Z2luPSJvcmcuZWNsaXBzZS5wdHAubGF1bmNoIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZS5jb3JlIi8+Ci0gICAgICA8aW1wb3J0IHBsdWdpbj0ib3JnLmVjbGlwc2UucHRwLnJlbW90ZS51aSIvPgotICAgICAgPGltcG9ydCBwbHVnaW49Im9yZy5lY2xpcHNlLnB0cC51dGlscy51aSIvPgotICAgPC9yZXF1aXJlcz4KLQotICAgPHBsdWdpbgotICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnB0cC5ybS5vcnRlLmNvcmUiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLSAgIDxwbHVnaW4KLSAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS5wcm94eSIKLSAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCi0gICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIwLjAuMCIvPgotCi0gICA8cGx1Z2luCi0gICAgICAgICBpZD0ib3JnLmVjbGlwc2UucHRwLnJtLm9ydGUudWkiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMC4wLjAiCi0gICAgICAgICB1bnBhY2s9ImZhbHNlIi8+Ci0KLTwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbCBiL3JlbGVuZy9vcmcuZWNsaXBzZS5wdHAucm0ub3J0ZS1mZWF0dXJlL2xpY2Vuc2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZhZjk2Ni4uMDAwMDAwMAotLS0gYS9yZWxlbmcvb3JnLmVjbGlwc2UucHRwLnJtLm9ydGUtZmVhdHVyZS9saWNlbnNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgotPHRpdGxlPkVjbGlwc2Uub3JnIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC90aXRsZT4KLTwvaGVhZD4KLQotPGJvZHkgbGFuZz0iRU4tVVMiIGxpbms9Ymx1ZSB2bGluaz1wdXJwbGU+Ci08aDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9oMj4KLTxwPk1hcmNoIDE3LCAyMDA1PC9wPgotCi08aDM+VXNhZ2UgT2YgQ29udGVudDwvaDM+Ci0KLTxwPlRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUwotICAgKENPTExFQ1RJVkVMWSAmcXVvdDtDT05URU5UJnF1b3Q7KS4gIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQKLSAgIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VIEFHUkVFIFRIQVQgWU9VUiBVU0UKLSAgIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SCi0gICBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQKLSAgIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULjwvcD4KLSAgIAotPGgzPkFwcGxpY2FibGUgTGljZW5zZXM8L2gzPiAgIAotICAgCi08cD5Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wCi0gICAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpcyBDb250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgotICAgRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KLQotPHA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2Uub3JnIENWUyByZXBvc2l0b3J5ICgmcXVvdDtSZXBvc2l0b3J5JnF1b3Q7KSBpbiBDVlMKLSAgIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgotICAgCi08dWw+Ci0JPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KLQk8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+Ci0JPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCi0gICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KLQk8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KLTwvdWw+ICAgCi0gCi08cD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDthYm91dC5odG1sJnF1b3Q7ICgmcXVvdDtBYm91dHMmcXVvdDspLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZAotSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDtsaWNlbnNlLmh0bWwmcXVvdDsgKCZxdW90O0ZlYXR1cmUgTGljZW5zZXMmcXVvdDspLiAgQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGUKLWluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOjwvcD4KLQotPHVsPgotCTxsaT5UaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3Rvcnk8L2xpPgotCTxsaT5QbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3RvcmllczwvbGk+Ci0JPGxpPkluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnM8L2xpPgotCTxsaT5TdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtzcmMmcXVvdDsgb2YgY2VydGFpbiBQbHVnLWluczwvbGk+Ci0JPGxpPkZlYXR1cmUgZGlyZWN0b3JpZXM8L2xpPgotPC91bD4KLQkJCi08cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIEVjbGlwc2UgVXBkYXRlIE1hbmFnZXIsIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoJnF1b3Q7RmVhdHVyZSBVcGRhdGUgTGljZW5zZSZxdW90OykgZHVyaW5nIHRoZQotaW5zdGFsbGF0aW9uIHByb2Nlc3MuICBJZiB0aGUgRmVhdHVyZSBjb250YWlucyBJbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yCi1pbmZvcm0geW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uICBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW4gdGhlICZxdW90O2xpY2Vuc2UmcXVvdDsgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS5wcm9wZXJ0aWVzJnF1b3Q7IGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuCi1TdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4KLXRoYXQgZGlyZWN0b3J5LjwvcD4KLQotPHA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy4gIFNPTUUgT0YgVEhFU0UKLU9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6PC9wPgotCi08dWw+Ci0JPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KLQk8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgotCTxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KLQk8bGk+SUJNIFB1YmxpYyBMaWNlbnNlIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2xpY2Vuc2UxMC5odG1sIj5odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9saWNlbnNlMTAuaHRtbDwvYT4pPC9saT4JCi0JPGxpPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sIj5odHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbDwvYT4pPC9saT4KLQk8bGk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbCI+aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sPC9hPik8L2xpPgotPC91bD4KLQotPHA+SVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUiBUTyBVU0UgT0YgVEhFIENPTlRFTlQuICBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIGlzIHByb3ZpZGVkLCBwbGVhc2UKLWNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuPC9wPgotCi08aDM+Q3J5cHRvZ3JhcGh5PC9oMz4KLQotPHA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSwgYW5kL29yIHJlLWV4cG9ydCB0bwotICAgYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsCi0gICBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLjwvcD4KLSAgIAotPHNtYWxsPkphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLjwvc21hbGw+ICAgCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5jbGFzc3BhdGggYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5jbGFzc3BhdGgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWFjMDYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8uY3ZzaWdub3JlIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8uY3ZzaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2M4MTNmLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotYmluCi1AZG90Ci1qYXZhQ29tcGlsZXIuLi5hcmdzCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5wcm9qZWN0IGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAxMTRjMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0RGVzY3JpcHRpb24+Ci0JPG5hbWU+b3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscDwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUyNDhhNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogUFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIEhlbHAgUGx1Zy1pbgotQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscDsgc2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMi4xLjAucXVhbGlmaWVyCi1CdW5kbGUtQ2xhc3NQYXRoOiAuCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwLkhlbHBQbHVnaW4KLUJ1bmRsZS1WZW5kb3I6IElCTSBSZXNlYXJjaAotQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luCi1FeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscAotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLnVpLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwKLSBvcmcuZWNsaXBzZS5oZWxwCi1FY2xpcHNlLUF1dG9TdGFydDogdHJ1ZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9hYm91dC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9hYm91dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjgxMDkzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvYWJvdXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+QWJvdXQ8L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotPC9oZWFkPgotPGJvZHkgbGFuZz0iRU4tVVMiPgotPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+Ci0gCi08cD5NYXkgMiwgMjAwNjwvcD4JCi08aDM+TGljZW5zZTwvaDM+Ci0KLTxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKLUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KLUZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+Ci0KLTxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQotYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIHByb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQotaW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQgYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmciPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcuPC9wPgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODg5NDEyLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvYnVpbGQucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWJpbi5pbmNsdWRlcyA9IHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgaHRtbC8sXAotICAgICAgICAgICAgICAgdG9jLnhtbCxcCi0gICAgICAgICAgICAgICAuLFwKLSAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcCi0gICAgICAgICAgICAgICBpbnRyby8KLXNyYy5pbmNsdWRlcyA9IGh0bWwvLFwKLSAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXAotICAgICAgICAgICAgICAgdG9jLnhtbAotamFycy5jb21waWxlLm9yZGVyID0gLgotc291cmNlLi4gPSBzcmMvCi1vdXRwdXQuLiA9IGJpbi8KLWJpbi5leGNsdWRlcyA9IGh0bWwvaW1hZ2VzT2xkLwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sLy5jdnNpZ25vcmUgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRiOGRiNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW1hZ2VzT2xkCi1pbWFnZXNPbGQyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvYmFycmllci5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2JhcnJpZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE5ZjJjMS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvYmFycmllci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Ci0KLTxodG1sPgotPGhlYWQ+Ci0JPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Ci0JPHRpdGxlPk1QSSBCYXJyaWVyIEFuYWx5c2lzPC90aXRsZT4KLQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJoZWxwLmNzcyI+Ci0JPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGh1bWIuanMiPiA8L3NjcmlwdD4KLTwvaGVhZD4KLQotPGJvZHk+Ci08aDE+PGltZyBzcmM9ImltYWdlcy9iYXJyaWVyLmdpZiI+IEJhcnJpZXIgQW5hbHlzaXM6IEEgU2hvcnQgSW50cm9kdWN0aW9uPC9oMT4KLTxwPkEgY29tbW9uIHNvdXJjZSBvZiBlcnJvcnMgaW4gU1BNRCAoU2luZ2xlIFByb2dyYW0gTXVsdGlwbGUgRGF0YSkgcHJvZ3JhbW1pbmcgY2F1c2VzIGRlYWRsb2NrcyB3aGVuIGJhcnJpZXIKLXN0YXRlbWVudHMsIGluIHdoaWNoIGFsbCB0YXNrcyBtdXN0IHN5bmNocm9uaXplLCBhcmUgbm90IG1hdGNoZWQgcHJvcGVybHkuCi1JZiBvbmUgTVBJIHRhc2sgaW4gYSBjb21tdW5pY2F0b3IgZG9lcyBub3QgcGFzcyB0aHJvdWdoIHRoZSBzYW1lIG51bWJlciBvZiBNUElfQmFycmllciBzdGF0ZW1lbnRzIGFzIHRoZQotb3RoZXIgdGFza3MgaW4gdGhlIHNhbWUgY29tbXVuaWNhdG9yLAotdGhlIG90aGVyIHRhc2tzIHdpbGwgZGVhZGxvY2sgd2hpbGUgd2FpdGluZy4KLQotPHA+Ci1UaGUgUExEVCBNUEkgQmFycmllciBhbmFseXNpcyBjaGVja3MgYW4gU1BNRCBwcm9ncmFtIGFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlcmUgYXJlIGRlYWRsb2NrcwotZHVlIHRvIHRoZSBtaXNwbGFjZW1lbnQgb2YgYmFycmllcnMuIFdlIHdpbGwgcmVwb3J0IGVycm9ycyBpZiBhbnksIGFuZCBzaG93ICJtYXRjaGluZyBzZXRzIiAKLWZvciBlYWNoIGJhcnJpZXIgaWYgZXJyb3ItZnJlZS4gVGhlIG1hdGNoaW5nIHNldCBvZiBhIGJhcnJpZXIgY29udGFpbnMgYWxsIGJhcnJpZXJzIHRoYXQKLXN5bmNocm9uaXplIHdpdGggaXQgYXQgcnVuIHRpbWUuIAotCi08cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIHNlY29uZCBpZi1icmFuY2ggaW4gCi08YSBocmVmPSJzYW1wbGVzL3Rlc3RNUEliYXJyaWVyLmMiPnRlc3RNUEliYXJyaWVyLmM8L2E+LiAKLTxwcmU+Ci0JaWYobXlfcmFuayA9PSAwKXsKLQkJcHJpbnRmKCJ0ZXN0IGVycm9yc1xuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0KLTwvcHJlPgotVGhlIHByb2dyYW0gd2lsbCBiZWNvbWUgZGVhZGxvY2tlZCBvbiB0aGUgYWJvdmUgYnJhbmNoIGJlY2F1c2Ugc29tZSBwcm9jZXNzb3JzCi13aWxsIGV4ZWN1dGUgdGhlIGdsb2JhbCBiYXJyaWVyIGluIHRoZSBicmFuY2ggd2hpbGUgdGhlIG90aGVycyB3aWxsIHNraXAgaXQuIAotSG93ZXZlciwKLWl0IGlzIGRpZmZpY3VsdCB0byB2aXN1YWxseSBkZXRlY3QgYW4gZXJyb3IgaWYgYmFycmllcnMgYXJlIG5vdCAidGV4dHVhbGx5IiBhbGlnbmVkLiAKLTxwPgotTm93LCBjb25zaWRlciB0aGUKLXRoaXJkIGlmLWJyYW5jaCBpbiA8YSBocmVmPSJzYW1wbGVzL3Rlc3RNUEliYXJyaWVyLmMiPnRlc3RNUEliYXJyaWVyLmM8L2E+LiAKLTxwcmU+Ci0JaWYoeCA8IDMpewotCQlwcmludGYoIkl0IGlzIG5vdCBhbiBlcnJvclxuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0KLTwvcHJlPgotRXZlbiBpZiB3ZSBvbmx5IGhhdmUgYSBiYXJyaWVyIGluIHRoZSB0aGVuIGNsYXVzZSBidXQKLW5vdCBpbiB0aGUgZWxzZSBjbGF1c2UsIHRoZXJlIGlzIG5vIGVycm9yIHNpbmNlIGFsbCBwcm9jZXNzb3JzIGFncmVlIG9uIHRoZSBicmFuY2gKLXByZWRpY2F0ZSwgYW5kIHRoZXkgd2lsbCBjaG9vc2UgdGhlIHNhbWUgd2F5IHRvIGdvLgotPGgyPlJ1bm5pbmcgQmFycmllciBBbmFseXNpczwvaDI+Ci08cD5UbyBydW4gdGhlIGJhcnJpZXIgYW5hbHlzaXMsIHNlbGVjdCBhIHByb2plY3QsIGNvbnRhaW5lciwgb3Igc291cmNlIGZpbGUgaW4gdGhlIFByb2plY3QgRXhwbG9yZXIgdmlldywgCi1hbmQgY2xpY2sgdGhlICBNUEkgYmFycmllciBhbmFseXNpcyBhY3Rpb24gaW4gdGhlIFBMRFQgaWNvbiBtZW51LiAKLU5vdGUgdGhhdCB0aGlzIHNpbXBsZSBleGFtcGxlIGhhcyBhbGwgY29kZSBpbiBhIHNpbmdsZSBmaWxlLCBidXQgYnkgcnVubmluZyB0aGUgYW5hbHlzaXMgb24gYSAKLWNvbnRhaW5lciAoZm9sZGVyKSBvciB0aGUgZW50aXJlIHByb2plY3QsIGludGVyLXByb2NlZHVyYWwgYmFycmllcnMgZnJvbSBvdGhlciBpbmNsdWRlZCBmaWxlcyBhcmUgYWxzbyBjb25zaWRlcmVkLgotPGJyPjxzY3JpcHQ+IHRodW1iKCJpbWFnZXMvYmFycmllckFjdGlvbkFubi5naWYiLDMwMCk8L3NjcmlwdD4KLTxwPlRoZSBiYXJyaWVyIGFuYWx5c2lzIHByb2R1Y2VzIHRocmVlIHZpZXdzIG9mIGluZm9ybWF0aW9uOgotPHVsPgotPGxpPjxhIGhyZWY9IiNiYXJWaWV3Ij5NUEkgQmFycmllcnMgVmlldzwvYT48L2xpPgotPGxpPjxhIGhyZWY9IiNiYXJNYXRjaCI+QmFycmllciBNYXRjaGVzIFZpZXc8L2E+PC9saT4KLTxsaT48YSBocmVmPSIjYmFyRXJyb3IiPkJhcnJpZXIgRXJyb3JzIFZpZXc8L2E+PC9saT4KLTwvdWw+Ci08cD5UaGUgdGhyZWUgdmlld3Mgc2hvdWxkIHNob3cgYXV0b21hdGljYWxseSBhZnRlciBwZXJmb3JtaW5nIGJhcnJpZXIgYW5hbHlzaXMsCi1idXQgdG8gYnJpbmcgdGhlbSB1cCBvdGhlcndpc2UsIHNlbGVjdCBXaW5kb3cgPiBTaG93IFZpZXcgPiBPdGhlci4uLiBhbmQgdW5kZXIKLTxiPlBUUCBNUEkgVmlld3M8L2I+LCBzZWxlY3QgdGhlIHZpZXcgeW91IHdhbnQgdG8gc2hvdy4KLQotPGgyIGlkPSJiYXJWaWV3Ij5NUEkgQmFycmllcnMgVmlldyA8L2gyPgotPHA+VGhlIDxiPk1QSSBCYXJyaWVyczwvYj4gdmlldyBsaXN0cyBhbGwgYmFycmllcnMgaW4gdGhlIHByb2dyYW0ocyksIHRoZWlyCi1lbmNsb3NpbmcgZnVuY3Rpb24gbmFtZXMsIGZpbGVuYW1lcywgbGluZSBudW1iZXJzLCBhbmQgaW5kZXggbnVtYmVycyAKLShiZWdpbm5pbmcgZnJvbSAxKS4gSW4gdGhlIG90aGVyIHR3byB2aWV3cywgYmFycmllcnMgYXJlIHJlZmVycmVkIHRvIGFjY29yZGluZyB0bwotdGhlaXIgaW5kZXggbnVtYmVycyAoZS5nLiwgdGhlIGJhcnJpZXIgd2l0aCBpbmRleCBudW1iZXIgMSBpcyBjYWxsZWQgCi0iYmFycmllciAxIikuCi08cD5UbyBmaW5kIHRoZSBzb3VyY2UgY29kZSBsaW5lIGZvciBhIGJhcnJpZXIgaW4gdGhlIHZpZXcsIGRvdWJsZS1jbGljayBvbiB0aGUgbGluZQotaW4gdGhlIHZpZXcsIGFuZCB0aGUgZWRpdG9yIHdpbGwgb3BlbiBvbiB0aGF0IHNvdXJjZSBmaWxlIChpZiBub3QgYWxyZWFkeSBvcGVuZWQpIGFuZAotaXQgd2lsbCBzY3JvbGwgdG8gdGhlIGxpbmUgY29udGFpbmluZyB0aGUgYmFycmllci48L3A+Ci08cD4gCi08aW1nIHNyYz0iaW1hZ2VzL0JhcnJpZXJWaWV3LmdpZiI+Ci08YnI+Ci08aDIgaWQ9ImJhck1hdGNoIj5CYXJyaWVyIE1hdGNoZXMgVmlldyA8L2gyPgotPHA+QnkgcnVubmluZyB0aGUgYW5hbHlzaXMsIHdlIHdpbGwgc2hvdyB0d28ga2luZHMKLW9mIHJlc3VsdHM6IAotCi08b2w+Ci08bGk+Ci1Gb3IgZWFjaCBiYXJyaWVyIGIsIGFsbCBiYXJyaWVycyB0aGF0IG1hdGNoIHRvIGIgYXJlIHNob3duLiA8L2xpPgotPGxpPgotQmFycmllciBzeW5jaHJvbml6YXRpb24gZXJyb3JzIGFyZSBzaG93biwgaWYgYW55LiA8L2xpPgotPC9vbD4KLTxwPlRoZSBtYXRjaGluZyBzZXRzIGFyZSBzaG93biBpbiB0aGUgPGI+QmFycmllciBNYXRjaGVzPC9iPiB2aWV3LiAKLVRoZXkgYXJlIGdyb3VwZWQgaW4gdGhpcyB2aWV3IGFzIGEgdHJlZSB2aWV3IHdpdGggInBhcmVudCIgbm9kZXMgYW5kICJjaGlsZCIgbm9kZXMuCi1UaGUgbWF0Y2hpbmcgc2V0IG9mIGEgYmFycmllciBjb250YWlucyBhbGwgYmFycmllcnMgdGhhdAotc3luY2hyb25pemUgd2l0aCBpdCBhdCBydW4gdGltZS4gVGhhdCBpcywgYWxsIHByb2Nlc3NlcyBpbiB0aGUgTVBJIHByb2dyYW0gbXVzdCBhcnJpdmUKLWF0IG9uZSBvZiB0aGUgYmFycmllciBzdGF0ZW1lbnRzIGluIGEgbWF0Y2hpbmcgc2V0LCBiZWZvcmUgYW55IG9mIHRoZSBwcm9jZXNzZXMgY2FuIHByb2NlZWQuCi1Gb3IgZWFjaCBiYXJyaWVyIHN0YXRlbWVudCBpbiB0aGUgcHJvZ3JhbSBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgYW5hbHl6ZWQsIGEgbWF0Y2hpbmcgc2V0IGlzIGNhbGN1bGF0ZWQgYW5kIHNob3duLiAgCi1TbyBmb3IgYSBtYXRjaGluZyBzZXQKLXdpdGggdHdvIG1lbWJlcnMsIHRoaXMgdmlldyB3aWxsIHNob3cgYm90aCBhIG1hdGNoaW5nIHNldCB3aXRoIHRoZSBmaXJzdCBiYXJyaWVyIGFzIHRoZSBwYXJlbnQsCi1hbmQgYW5vdGhlciBtYXRjaGluZyBzZXQgd2l0aCB0aGUgc2Vjb25kIGJhcnJpZXIgYXMgdGhlIHBhcmVudC4KLVRoZSBwYXJlbnQgYmFycmllciBub2RlIGluIHRoZSB2aWV3IHNob3dzIHRoZSBzaXplIG9mIGl0cyBtYXRjaGluZyBzZXQgaW4gcGFyZW50aGVzZXMuCi08cD4KLU5vdGUgdGhhdCBpZiBhIG1hdGNoaW5nIGVycm9yIG9jY3VycyBpbiBhIHN0YXRlbWVudCwgIAotdGhlbiBiYXJyaWVycyB1c2VkIGluIHRoaXMgc3RhdGVtZW50IDxpPm1pZ2h0PC9pPiBoYXZlIGFuIGVtcHR5IG1hdGNoaW5nIHNldCAodGhleSA8aT5taWdodDwvaT4KLXN0aWxsIGhhdmUgYSBub24tZW1wdHkgbWF0Y2hpbmcgc2V0IGlmIHRoZXkgYXJlIGFsc28gdXNlZCBpbiBvdGhlciBwb3J0aW9ucyBvZiB0aGUKLXByb2dyYW0pLiBUaGlzIGlzIG9uZSBvZiB0aGUgYWR2YW50YWdlcyBvZiBvdXIgYW5hbHlzaXM6IGlmIGFuIGVycm9yIG9jY3Vycywgb3VyCi1hbmFseXNpcyBjYW4gInJlY292ZXIiIGZyb20gc3VjaCBhbiBlcnJvciBieSBjb250aW51aW5nIHRvIGFuYWx5emUgb3RoZXIgcG9ydGlvbnMgb2YgCi10aGUgcHJvZ3JhbSB0aGF0IGFyZSBub3QgYWZmZWN0ZWQgYnkgc3VjaCBlcnJvci4KLTwvcD4KLTxwPkluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIG1hdGNoaW5nIHNldCBmb3IgIkJhcnJpZXIgMSIgCi0odGhlIGJhcnJpZXIgc2V0IGhpZ2hsaWdodCBpbiBibHVlIGJlbG93KSBjb250YWlucyB0d28gKDIpIGJhcnJpZXJzLgotVGhlIGZpcnN0IGlzIGluIHRoZSA8Y29kZT5iYXJyaWVyKCk8L2NvZGU+IGZ1bmN0aW9uIGFuZCB0aGUgc2Vjb25kIGlzIGluIHRoZSAKLTxjb2RlPm1haW4oKTwvY29kZT4gZnVuY3Rpb24uCi08L3A+Ci08cD5MaWtlIHRoZSBvdGhlciB2aWV3cywgdG8gZmluZCBhIGJhcnJpZXIgc291cmNlIGNvZGUgbGluZSBmcm9tIHRoZSB2aWV3LCBkb3VibGUtY2xpY2sgb24gdGhlCi1saW5lIGluIHRoZSB2aWV3LiAgQmFycmllciBtYXJrZXJzIGFyZSBzaG93biBpbiB0aGUgbWFya2VyIGJhciBvZiB0aGUgZWRpdG9yIHRvIHBpbnBvaW50IHRoZQotYmFycmllciBzdGF0ZW1lbnRzIGZvdW5kLgotCi08cD4KLTxpbWcgc3JjPSJpbWFnZXMvQmFycmllck1hdGNoaW5nU2V0Vmlldy5naWYiPgotCi08aDIgaWQ9ImJhckVycm9yIj5CYXJyaWVyIEVycm9ycyBWaWV3IDwvaDI+Ci08cD5XaGVuIGEgYmFycmllciBlcnJvciBpcyBkZXRlY3RlZCwgaXQgaXMgaGlnaGxpZ2h0ZWQgaW4KLXRoZSBlZGl0b3IgaW4gcmVkLiBJbiBhZGRpdGlvbiwgdGhlIEJhcnJpZXIgRXJyb3JzIHZpZXcgc2hvd3MgYSBjb3VudGVyIGV4YW1wbGUgd2hpY2ggY29udGFpbnMgCi10d28gc2VxdWVuY2VzIG9mIGJhcnJpZXJzIHdoaWNoIGhhdmUgZGlmZmVyZW50IHNpemVzIGFsb25nIHR3bwotcGF0aHMgc3RhcnRpbmcgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgZXJyb3IgcG9zaXRpb24uIFRoaXMgY291bnRlciBleGFtcGxlCi1zaW11bGF0ZXMgYW4gZXhlY3V0aW9uIGFuZCBpbGx1c3RyYXRlcyB0aGUgcmVhc29uIGZvciB0aGUgCi1zeW5jaHJvbml6YXRpb24gZXJyb3IuIE5vdGUgdGhhdCBhIHN5bmNocm9uaXphdGlvbiBlcnJvciBvY2N1cnMgaWYgZGlmZmVyZW50IAotTVBJIHRhc2tzIG1lZXQgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIGJhcnJpZXJzLiAgSWYgYSBiYXJyaWVyIGIgaXMgaW4gYSBsb29wLCBhbmQKLWFsbCB0YXNrcyBleGVjdXRlIHRoZSBzYW1lIG51bWJlciBvZiBpdGVyYXRpb25zLCB0aGVuIGJhcnJpZXIgYiBpcyBtYXJrZWQgYnkgCi0iKiIsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHN0YXRpYyBiYXJyaWVyIGluIHRoZSBjb3VudGVyIGV4YW1wbGUgcmVwcmVzZW50cyBhIAotZHluYW1pYyBudW1iZXIgb2YgYmFycmllcnMgYXQgcnVudGltZS4gSWYgYSBzeW5jaHJvbml6YXRpb24gZXJyb3Igb2NjdXJzIAotb24gYSBsb29wIChpLmUuLCBkaWZmZXJlbnQgdGFza3Mgd2lsbCBleGVjdXRlIGEgZGlmZmVyZW50IG51bWJlciBvZiBpdGVyYXRpb25zIAotb2Ygc3VjaCBsb29wKSwgdGhlbiB3ZSBzaG93IHRoZSBjb3VudGVyIGV4YW1wbGUgYXMgdGhlIHNlcXVlbmNlIG9mIGJhcnJpZXJzCi1pbiB0aGUgbG9vcCBib2R5LiAKLTxicj48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL2JhcnJpZXJFcnJvclZpZXcuZ2lmIiwzMDApPC9zY3JpcHQ+Ci08cD5JZiBhIGZpbGVuYW1lIGFuZCBMaW5lTm8gYXJlIHNob3duLCBkb3VibGUtY2xpY2sgb24gdGhhdCBsaW5lIGluCi10aGUgQmFycmllciBFcnJvcnMgdmlldyB0byBsb2NhdGUgdGhhdCBCYXJyaWVyIG9yIGVycm9yLgotVGhlIGluaXRpYWwgRXJyb3IgbGluZSBpbiB0aGUgdmlldyBzaG91bGQgcG9pbnQgdG8gdGhlIHBvaW50IGluIHRoZSBwYXRoIG9mCi1leGVjdXRpb24gdGhhdCBmb3JrcyAoc3VjaCBhcyBhbiBpZiBzdGF0ZW1lbnQpIHN1Y2ggdGhhdCBvbmUgcGF0aCBlbmNvdW50ZXJzIAotYSBiYXJyaWVyIHRoYXQgdGhlIG90aGVyIHBhdGggZG9lcyBub3QuCi08cD4KLVRvIHNob3cgdGhlIHBhdGggb2YgYSBjb3VudGVyZXhhbXBsZSAoZS5nLiBhIHBhdGggd2l0aG91dCBiYXJyaWVycyksCi1kb3VibGUtY2xpY2sgb24gdGhlIFBhdGggbGluZSBpbiB0aGUgdmlldywgYXMgc2hvd24gYmVsb3cuIElmIHRoZXJlCi1pcyBhIHBhdGggYXZhaWxhYmxlIGl0IHNob3VsZCBiZSBzaG93bi4KLTxicj48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL2JhcnJpZXJQYXRoU2VsZWN0aW9uLnBuZyIsMzUwKTwvc2NyaXB0PgotCi0KLTxoMz5TYW1wbGUgcHJvZ3JhbSB0ZXN0TVBJYmFycmllci5jIDwvaDM+Ci08cD4gV2UgdXNlIHRoaXMgc2ltcGxlIHByb2dyYW0gPGEgaHJlZj0ic2FtcGxlcy90ZXN0TVBJYmFycmllci5jIj50ZXN0TVBJYmFycmllci5jPC9hPiAKLXRvIGlsbHVzdHJhdGUgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCi1hbmFseXNpcyBhbmQgdGhyZWUgdmlld3MuIAotVGhlIGNvZGUgaXMgY29uZGVuc2VkIGhlcmU6Ci08cHJlPgotICAgIGlmIChteV9yYW5rICE9MCl7Ci0JCS4uLgotCQlNUElfU2VuZCguLi4pOwotCQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JfQotCWVsc2V7Ci0JCWZvciAoc291cmNlID0gMTsgc291cmNlIDwgcDsgc291cmNlKyspIHsKLQkJCU1QSV9SZWN2KC4uLik7Ci0JCX0KLQkJYmFycmllcigpOwotCX0KLQlpZihteV9yYW5rID09IDApewotCQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JfQotCWVsc2V7Ci0JICAgIHByaW50ZigidGhpcyBwYXRoIGRvZXMgbm90IGNvbnRhaW4gYSBiYXJyaWVyXG4iKTsKLQl9Ci0JCi0JaWYoeCA8IDMpewotCQkuLi4KLQkJTVBJX0JhcnJpZXIoTVBJX0NPTU1fV09STEQpOwotCX0KLQkKLQl3aGlsZSh4IDwgbXlfcmFuayl7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQkJeCArKzsKLQl9Ci08L3ByZT4KLVRoZXJlIGFyZSB0aHJlZSBicmFuY2hlcyBhbmQgb25lIGxvb3AgaW4gdGhlIHByb2dyYW0uCi1UaGUgZmlyc3QgYnJhbmNoICggdGhlIDxjb2RlPmlmKCBteV9yYW5rIT0wKTwvY29kZT4gc3RhdGVtZW50ICkgaXMgZnJlZSBvZiBzeW5jaHJvbml6YXRpb24gCi1lcnJvcnM7IHR3byBiYXJyaWVycyAob25lIGVuY29kZWQgZGlyZWN0bHkgaW4gCi10aGUgbG9vcCwgCi1hbmQgdGhlIG90aGVyIGluIHRoZSBiYXJyaWVyKCkgZnVuY3Rpb24gY2FsbGVkIGluIHRoZSBlbHNlIGNsYXVzZSkgbWF0Y2ggdG8gZWFjaCBvdGhlci4gCi1UaGUgc2Vjb25kIGJyYW5jaCAoPGNvZGU+aWYobXlfcmFuayA9PSAwKTwvY29kZT4pCi1jb250YWlucyBhbiBlcnJvciBiZWNhdXNlIHNvbWUgdGFza3Mgd291bGQgZXhlY3V0ZSB0aGUgYmFycmllciBpbiBpdCwgd2hpbGUgdGhlCi1vdGhlciB0YXNrcyB3b3VsZCBza2lwIGl0LiBUaGUgZWxzZSBjbGF1c2UgaGVyZSBpcyBhZGRlZCBmb3IgZW1waGFzaXMuCi1UaGUgbmV4dCBicmFuY2ggKDxjb2RlPmlmKHg8Myk8L2NvZGU+KSBkb2VzIG5vdCBtYWtlIGEgZGVjaXNpb24gYmFzZWQgb24gcHJvY2Vzc29yCi1yYW5rICh4IGRvZXMgbm90IGRlcGVuZCBvbiByYW5rKSBzbyBwcm9jZXNzZXMgc2hvdWxkIHByb2NlZWQgc2ltaWxhciB0byBlYWNoIG90aGVyLgotVGhlIGxvb3AgKDxjb2RlPndoaWxlKHggPCBteV9yYW5rKTwvY29kZT4pCi1jb250YWlucyBhbiBlcnJvciBhbHNvLCBzaW5jZSBkaWZmZXJlbnQgCi10YXNrcyBtYXkgZXhlY3V0ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgaXRlcmF0aW9ucywgYW5kIHRodXMgZW5jb3VudGVyIGEgZGlmZmVyZW50IG51bWJlciBvZgotYmFycmllcnMuCi0gPCEtLSBzaW5jZSB0aGlzIGNvZGUgaXNuJ3QgaW5jbHVkZWQsIGRvbid0IHJlZmVyIHRvIGl0IGhlcmUgIAotPGgzPiBNUEIgPC9oMz4KLTxwPk1QQiBpcyBhIHNjaWVudGlmaWMgYXBwbGljYXRpb24gd2hpY2ggY29tcHV0ZXMgdGhlIGVsZWN0cm9tYWduZXRpYyBtb2RlbCB1c2luZwotbWF4d2VsbCBlcXVhdGlvbnMuIFdlIHVzZSB0aGlzIGV4YW1wbGUgdG8gc2hvdyB0aGUgZm9sbG93aW5nIHBvaW50czoKLTxwPigxKSBPdXIgYW5hbHlzaXMgaGFzIGludGVyLXByb2NlZHVyYWwgYW5hbHlzaXMuIFRoaXMgbWFrZXMgb3VyIGFuYWx5c2lzIHRvb2wgCi1vdXRwZXJmb3JtIHByZXZpb3VzIGludHJhLXByb2NlZHVyYWwgYW5hbHlzaXMgYWxnb3JpdGhtcy4KLTxwPigyKSBUcnkgdGhpcyB0byBzaG93IHRoZSBuZWNlc3NpdHkgYW5kIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGludGVyLXByb2NlZHVyYWwgCi1hbmFseXNpcy4gSW4gdGhlIG9yaWdpbmFsIGNvZGUsIHRoZXJlIGFyZSB0aHJlZSBiYXJyaWVyczogdHdvIGluIGZ1bmN0aW9uIAotbWF0cml4aW9fY3JlYXRlX3N1YigpLCBhbmQgb25lIGluIG1hdHJpeGlvX2NyZWF0ZV9kYXRhc2V0KCkuIE9idmlvdXNseSB0d28gYmFycmllcnMKLWluIG1hdHJpeGlvX2NyZWF0ZV9zdWIoKSBtYXRjaCB0byBlYWNoIG90aGVyLiBOb3cgY29tbWVudCBvdXQgImJhcnJpZXIgMSIgKHRoZSBvbmUgCi1pbiB0aGUgdGhlbiBjbGF1c2Ugb2YgdGhlIGlmLWJyYW5jaCBpbiBtYXRyaXhpb19jcmVhdGVfc3ViKCkpLCBhZGQgYSBiYXJyaWVyIGluIGZ1bmN0aW9uCi1tcGlfaXNfbWFzdGVyKCksIHJpZ2h0IGFmdGVyIHRoZSBNUElfQ29tbV9yYW5rIGNhbGwsIHRoZW4gcnVuIHRoZSBhbmFseXNpcy4KLU9uZSBtYXkgZXhwZWN0IGEgc3luY2hyb25pemF0aW9uIGVycm9yIGluIHRoaXMgYnJhbmNoLCBob3dldmVyIGl0IGlzIHN0aWxsIGVycm9yIGZyZWUsIAotc2luY2UgdGhlIGZ1bmN0aW9uIG1hdHJpeGlvX3dyaXRlX3N0cmluZ19hdHRyKCkgd2lsbCBjYWxsIG1waV9pc19tYXN0ZXIoKSBzb21ld2hlcmUuCi0obWF0cml4aW9fd3JpdGVfc3RyaW5nX2F0dHIgY2FsbHMgIHdyaXRlX2F0dHIgd2hpY2ggY2FsbHMgbXBpX2lzX21hc3RlcikKLQotPGgzPiBUY2dtc2cgPC9oMz4KLQotVGNnbXNnIGlzIGFuIE1QSSB0b29sa2l0LiBBcyB3aXRoIHRoZSBNUEIgYXBwbGljYXRpb24sIHdlIHVzZSBpdCB0byBkZW1vbnN0cmF0ZSB0aGUgaW50ZXItcHJvY2VkdXJhbAotYW5hbHlzaXMuIFRoZXJlIGFyZSBzb21lIGludGVyZXN0aW5nIHBvaW50cyBpbiB0aGUgZnVuY3Rpb24gdGVzdF9tYWluKCk6Ci0KLSgxKSBBdCB0aGUgYmVnaW5uaW5nIG9mIHRlc3RfbWFpbigpLCB0aGUgbWFzdGVyIHRocmVhZCByZWFkcyBhIHBhcmFtZXRlciAib3B0IgotZnJvbSBzdGRvdXQgKHRoZSBmaXJzdCB3aGlsZSBsb29wKSwgYW5kIGJyb2FkY2FzdHMgaXQgdG8gb3RoZXIgdGhyZWFkcyAKLShieSBCUkRDU1RfKSBzbyB0aGF0IHRoZXkgb2J0YWluIHRoZSBzYW1lICJvcHQiLiBBbGwgdGhyZWFkcyB0aGVuIGNob29zZSAKLXNvbWUgam9iIHRvIGRvIGFjY29yZGluZyB0byB0aGUgdmFsdWUgb2YgIm9wdCIuIE5vIHN5bmNocm9uaXphdGlvbiBvY2N1cnMgaW4gdGhlIG9yaWdpbmFsCi1jb2RlLiBJZiB0aGUgbWFzdGVyIHRocmVhZCBkb2Vzbid0IGJyb2FkY2FzdCB0aGUgIm9wdCIgdmFsdWUsIHRoZW4gZGlmZmVyZW50IHByb2Nlc3NvcnMKLXdpbGwgY2hvb3NlIGRpZmZlcmVudCBqb2JzLCBhbmQgYW4gZXJyb3Igb2NjdXJzIChubyBiYXJyaWVyIGFyZSB1c2VkIGluIGNhc3QgMC00LCB3aGlsZQotc29tZSBiYXJyaWVycyBhcmUgdXNlZCBpbiBjYXNlIDUpLgotCi0oMikgVGhpcyBwcm9ncmFtIGFsc28gaWxsdXN0cmF0ZXMgaG93IGVycm9ycyAoYW5kIGNvdW50ZXIgZXhhbXBsZXMpIGFyZSByZXBvcnRlZCBmb3IKLXRoZSAic3dpdGNoIiBzdGF0ZW1lbnQuIEJyaWVmbHksIHdlIHdpbGwgb25seSBzaG93IHRoZSAiZmlyc3QiIGVycm9yLCBpLmUuLCBpZgotdGhlIHN3aXRjaCBzdGF0ZW1lbnQgY29udGFpbnMgbiBjYXNlcywgd2Ugd2lsbCBhbHdheXMgYmVnaW4gZnJvbSB0aGUgZmlyc3QgdHdvIGNhc2VzLCAKLWFuZCBtb3ZlIHRvIHRoZSBuZXh0IGNhc2UgT05MWSBJRiB0aGUgZmlyc3QgdHdvIGNhc2VzIGFyZSBlcnJvci1mcmVlLiBUbyB0ZXN0IGl0LCBpZgotd2UgYWRkIGEgYmFycmllciBpbiBjYXNlIDAgY2xhdXNlLCB0aGVuIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQsIGFuZCBvbmUgcGF0aAotaW4gdGhlIGNvdW50ZXIgZXhhbXBsZSBjb250YWlucyAxIGJhcnJpZXIgKHRoZSBiYXJyaWVyIHdlJ3ZlIGp1c3QgYWRkZWQgaW4pLCBhbmQgdGhlCi1vdGhlciBwYXRoIGNvbnRhaW5zIG5vIGJhcnJpZXIgKGNhc2UgMSBjbGF1c2UpLgotLS0+Ci0KLTxwPiZuYnNwOwotPHA+Jm5ic3A7Ci08cD4mbmJzcDsKLTxwPiZuYnNwOwotPHA+Jm5ic3A7Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2hlbHAuY3NzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2hlbHAuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjA5ZjkwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9oZWxwLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qIGZvbGxvd2luZyBmb250IGZhY2UgZGVjbGFyYXRpb25zIG5lZWQgdG8gYmUgcmVtb3ZlZCBmb3IgREJDUyAqLw0KLQ0KLQ0KLWJvZHksIGgxLCBoMiwgaDMsIGg0LCBwLCB0YWJsZSwgdGQsIGNhcHRpb24sIHRoLCB1bCwgb2wsIGRsLCBsaSwgZGQsIGR0IHtmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiAjMDAwMDAwfQ0KLXByZQkJCQl7IGZvbnQtZmFtaWx5OiBDb3VyaWVyLCBtb25vc3BhY2V9DQotDQotLyogZW5kIGZvbnQgZmFjZSBkZWNsYXJhdGlvbnMgKi8NCi0NCi0vKiBmb2xsb3dpbmcgZm9udCBzaXplIGRlY2xhcmF0aW9ucyBzaG91bGQgYmUgT0sgZm9yIERCQ1MgKi8NCi1ib2R5LCBoMSwgaDIsIGgzLCBoNCwgcCwgdGFibGUsIHRkLCBjYXB0aW9uLCB0aCwgdWwsIG9sLCBkbCwgbGksIGRkLCBkdCB7Zm9udC1zaXplOiAxMHB0OyB9DQotcHJlCQkJCXsgZm9udC1zaXplOiAxMHB0fQ0KLQ0KLS8qIGVuZCBmb250IHNpemUgZGVjbGFyYXRpb25zICovDQotDQotYm9keQkgICAgIHsgYmFja2dyb3VuZDogI0ZGRkZGRn0NCi1oMSAgICAgICAgICAgeyBmb250LXNpemU6IDE4cHQ7IG1hcmdpbi10b3A6IDU7IG1hcmdpbi1ib3R0b206IDEgfQkNCi1oMiAgICAgICAgICAgeyBmb250LXNpemU6IDE0cHQ7IG1hcmdpbi10b3A6IDI1OyBtYXJnaW4tYm90dG9tOiAzIH0NCi1oMyAgICAgICAgICAgeyBmb250LXNpemU6IDExcHQ7IG1hcmdpbi10b3A6IDIwOyBtYXJnaW4tYm90dG9tOiAzIH0NCi1oNCAgICAgICAgICAgeyBmb250LXNpemU6IDEwcHQ7IG1hcmdpbi10b3A6IDIwOyBtYXJnaW4tYm90dG9tOiAzOyBmb250LXN0eWxlOiBpdGFsaWMgfQ0KLXAgCSAgICAgeyBmb250LXNpemU6IDEwcHQ7IH0NCi1wcmUJICAgICB7IG1hcmdpbi1sZWZ0OiA2OyBmb250LXNpemU6IDlwdCB9DQotDQotYTpsaW5rIHsgY29sb3I6ICMwMDY2OTkgfQ0KLWE6dmlzaXRlZCB7IGNvbG9yOiAjOTk2Njk5IH0NCi1hOmhvdmVyICB7IGNvbG9yOiAjMDA2Njk5IH0NCi0NCi11bAkgICAgIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMTAgfQ0KLWxpCSAgICAgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAwIH0gDQotbGkgcAkgICAgIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMCB9IA0KLW9sCSAgICAgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAxMCB9DQotZGwJICAgICB7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDEwIH0NCi1kdAkgICAgIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC13ZWlnaHQ6IGJvbGQgfQ0KLWRkCSAgICAgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAwIH0NCi1zdHJvbmcJICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkfQ0KLWVtCSAgICAgeyBmb250LXN0eWxlOiBpdGFsaWN9DQotdmFyCSAgICAgeyBmb250LXN0eWxlOiBpdGFsaWN9DQotZGl2LnJldmlzaW9uIHsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOyBib3JkZXItbGVmdC13aWR0aDogdGhpbjsgDQotCQkJCSAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjN0I2OEVFOyBwYWRkaW5nLWxlZnQ6NSB9DQotdGgJICAgICB7IGZvbnQtd2VpZ2h0OiBib2xkIH0NCi0NCi0vKiBNaWtlIEJlaG0ncyBhZGRpdGlvbiB0byB0aGUgc3R5bGUgc2hlZXQgKi8NCi0udXNlcmlucHV0IHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQ0KLS5ndWl0YWIsIC5pbXBvcnRhbnQsIC5ndWlidXR0b24sIC5zZWxlY3RibHVlLCAuZ3VpbWVudSwgLmd1aWxhYmVsLCANCi0ubm90ZXRpdGxlICB7DQotICAgICBjb2xvcjogIzAwMDAwMDsNCi0gICAgIGZvbnQtZmFtaWx5OiBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmOw0KLSAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQotICAgICB9DQotZGl2LmxpbnV4ICB7ZGlzcGxheTpub25lO30NCi0uZmlyc3Rlcm0ge2ZvbnQtc3R5bGU6aXRhbGljO30NCi0NCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJNYXRjaGluZ1NldFZpZXcuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9CYXJyaWVyTWF0Y2hpbmdTZXRWaWV3LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjZDkzNi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJNYXRjaGluZ1NldFZpZXcuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9CYXJyaWVyVmlldy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJWaWV3LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWViMjQwYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL0JhcnJpZXJWaWV3LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYW5hbHl6ZS5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2FuYWx5emUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQ1NDJhLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYW5hbHl6ZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXIuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVhOTc2MC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXIuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyQWN0aW9uQW5uLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllckFjdGlvbkFubi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NTMyMDEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyQWN0aW9uQW5uLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllckVycm9yVmlldy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJFcnJvclZpZXcuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdiOGYwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllckVycm9yVmlldy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJFcnJvcnMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyRXJyb3JzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg0OWMwYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJFcnJvcnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyTWF0Y2hlcy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJNYXRjaGVzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkZTQ2Yy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2JhcnJpZXJNYXRjaGVzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvYmFycmllclBhdGhTZWxlY3Rpb24ucG5nIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyUGF0aFNlbGVjdGlvbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNmQzYzkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9iYXJyaWVyUGF0aFNlbGVjdGlvbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2NsZWFyTWFya2Vycy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2NsZWFyTWFya2Vycy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2NDZjMDkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9jbGVhck1hcmtlcnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9jb250ZW50QXNzaXN0LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvY29udGVudEFzc2lzdC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOWQzZmUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9jb250ZW50QXNzaXN0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEwNWI0OC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2hlbHBDb250U2Vucy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2hlbHBDb250U2Vuc0hpdEYxLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zSGl0RjEuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWNhOWFiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zSGl0RjEuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9oZWxwQ29udFNlbnNIaXRGMWNsaWNrLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaGVscENvbnRTZW5zSGl0RjFjbGljay5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYzc4ZmUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9oZWxwQ29udFNlbnNIaXRGMWNsaWNrLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvaG92ZXIuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9ob3Zlci5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZGUzYzYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9ob3Zlci5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2luY2x1ZGUuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9pbmNsdWRlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5YzNmOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL2luY2x1ZGUuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9saWIuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9saWIuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWYyZmYyLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbGliLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbWVudVNob3dPcGVuTVBhcnRpZmFjdHMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tZW51U2hvd09wZW5NUGFydGlmYWN0cy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YmEwM2IuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tZW51U2hvd09wZW5NUGFydGlmYWN0cy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waUJ1aWxkQ29tbWFuZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waUJ1aWxkQ29tbWFuZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMzMzNDEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlCdWlsZENvbW1hbmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlCdXR0b25zLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpQnV0dG9ucy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YWEwZTUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlCdXR0b25zLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpTWVudS5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waU1lbnUuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDFjYTIxLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpTWVudS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waU5ld1Byb2plY3RXb3JrYmVuY2guZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlOZXdQcm9qZWN0V29ya2JlbmNoLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNmZWZlOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waU5ld1Byb2plY3RXb3JrYmVuY2guZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlQcm9qZWN0U2V0dGluZ3MuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlQcm9qZWN0U2V0dGluZ3MuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjYyNzBiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpUHJvamVjdFNldHRpbmdzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpVmlld0Fubi5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVZpZXdBbm4uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2VlOWQ0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpVmlld0Fubi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVdpemFyZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVdpemFyZC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MjQwM2QuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlXaXphcmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlXaXphcmQyLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpV2l6YXJkMi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MjM2ZGUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9tcGlXaXphcmQyLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpV2l6YXJkMy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL21waVdpemFyZDMuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWVlZjA4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbXBpV2l6YXJkMy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL25ld1Byb2pPcGVuTVAuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9uZXdQcm9qT3Blbk1QLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg3MGZhYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL25ld1Byb2pPcGVuTVAuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9uZXdQcm9qT3Blbk1Qc2V0dGluZ3MuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9uZXdQcm9qT3Blbk1Qc2V0dGluZ3MuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjI2MGI3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbmV3UHJvak9wZW5NUHNldHRpbmdzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbmV3UHJvamVjdFdpemFyZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL25ld1Byb2plY3RXaXphcmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmUxZjE0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvbmV3UHJvamVjdFdpemFyZC5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL29wZW5tcEFydGlmYWN0c2ZvdW5kLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvb3Blbm1wQXJ0aWZhY3RzZm91bmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2FlMzg0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvb3Blbm1wQXJ0aWZhY3RzZm91bmQuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9vcGVubXBQcmVmcy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL29wZW5tcFByZWZzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE5OTliNi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL29wZW5tcFByZWZzLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1tZW51LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1tZW51LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RkNzdiOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHQtbWVudS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHQtcHJlZnMxLnBuZyBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1wcmVmczEucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzhhODI3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcGxkdC1wcmVmczEucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wbGR0SWNvbk1pc3BsYWNlZC5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHRJY29uTWlzcGxhY2VkLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTlhNjU1Yi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3BsZHRJY29uTWlzcGxhY2VkLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHByYWdtYUFubi5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3B0cC1vcGVuTVBwcmFnbWFBbm4uZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWRkMDU3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHByYWdtYUFubi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3B0cC1vcGVuTVBwcm9ibGVtcy5naWYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3B0cC1vcGVuTVBwcm9ibGVtcy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MTdjYWEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1QcHJvYmxlbXMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHNob3dDb25jdXJyZW5jeS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYzAxMzMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvcHRwLW9wZW5NUHNob3dDb25jdXJyZW5jeW1lbnUuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5bWVudS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMTZjODAuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9wdHAtb3Blbk1Qc2hvd0NvbmN1cnJlbmN5bWVudS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3JlbW92ZU1hcmtlcnMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy9yZW1vdmVNYXJrZXJzLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzNTcwMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3JlbW92ZU1hcmtlcnMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy93ZWxjb21lQy1wbGR0LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvd2VsY29tZUMtcGxkdC5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMjdkY2QuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL2ltYWdlcy93ZWxjb21lQy1wbGR0LmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvd2VsY29tZU92ZXJ2aWV3LmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9pbWFnZXMvd2VsY29tZU92ZXJ2aWV3LmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmNzMwOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvaW1hZ2VzL3dlbGNvbWVPdmVydmlldy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvb3Blbk1QZXh0cmEuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9vcGVuTVBleHRyYS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmUyNDRkLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9vcGVuTVBleHRyYS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4KLVJ1bm5pbmcgUFRQIE9wZW5NUCBUb29scyBQbHVnLWluCi08L3RpdGxlPgotCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImhlbHAuY3NzIj4KLQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0aHVtYi5qcyI+IDwvc2NyaXB0PgotCTwvaGVhZD4KLTxib2R5PgotPGgxPiBSdW5uaW5nIFBUUCBPcGVuTVAgVG9vbHMgPC9oMT4KLTxwPkZvciB0aGUgbW9zdCBwYXJ0LCB0aGUgT3Blbk1QIHRvb2xzIGFyZSBzaW1pbGFyIHRvIHRoZSBNUEkKLXRvb2xzLiAgU2VlIHRoZSA8YSBocmVmPSJzZXR1cC5odG1sIj5zZXR1cDwvYT4gYW5kIDxhIGhyZWY9InJ1bi5odG1sIj5ydW48L2E+IGluc3RydWN0aW9ucyBmb3IgdGhlIE1QSSB0b29scyB0bwotc2VlIGhvdyB0byBjb25maWd1cmUgQ0RUIHRvIGZpbmQgdGhlIGhlYWRlciBmaWxlcywgYW5kIGNvbXBpbGUKLWFuZCBydW4uCi08cD5Zb3UgY2FuIGZpbmQgT3Blbk1QIGFydGlmYWN0cywgc29ydCB0aGUgYXJ0aWZhY3RzIGluIHRoZQotT3Blbk1QIGFydGlmYWN0IHZpZXcsIG5hdmlnYXRlIHRvIHNvdXJjZSBjb2RlIGxpbmVzLAotdXNlIGhvdmVyIGhlbHAsIGNvbnRlbnQgYXNzaXN0LCBhbmQgYnJpbmcgdXAgYSBoZWxwIHZpZXcKLW9uIHRoZSBBUElzIGFzIHdlbGwuCi0KLTxwPlRoZSBQVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgZG8gYWRkIGEgZmV3Ci1zcGVjaWZpYyBmdW5jdGlvbnMgdW5pcXVlbHkgZm9yIE9wZW5NUCBkZXZlbG9wbWVudDoKLTx1bD4KLTxsaT48YSBocmVmPSIjcHJhZ21hIj5TaG93ICNwcmFnbWEgcmVnaW9uczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IiNjb25jdXIiPlNob3cgY29uY3VycmVuY3k8L2E+PC9saT4KLTxsaT48YSBocmVmPSIjcHJvYiI+U2hvdyBDb21tb24gT3Blbk1QIHByb2JsZW1zPC9hPjwvbGk+Ci08L3VsPgotCi0KLQotPGgyIGlkPSJwcmFnbWEiPlNob3cgI3ByYWdtYSByZWdpb25zPC9oMj4KLTxwPjxzY3JpcHQ+IHRodW1iKCJpbWFnZXMvcHRwLW9wZW5NUHByYWdtYUFubi5naWYiLDMwMCk8L3NjcmlwdD4KLTwvcD4KLTxwPkluIHRoZSBleGFtcGxlIHNjcmVlbnNob3QgYWJvdmUsIE9wZW5NUCBhbmFseXNpcyBoYXMgYmVlbiBydW4KLW9uIHRoZSBzb3VyY2UgZmlsZSBhbmQgdHdvIGFydGlmYWN0cyB3ZXJlIGZvdW5kLCBvbmUgQVBJIGFuZAotb25lICNwcmFnbWEuICAKLVRoZXkgYXJlIHNob3duIGluIHRoZSAiT3Blbk1QIEFydGlmYWN0IFZpZXciIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLgotSW4gdGhlIE9wZW5NUCBhcnRpZmFjdCB2aWV3LCB1c2UgdGhlIGNvbnRleHQgbWVudSBvbiB0aGUgI3ByYWdtYSBpdGVtCi1hbmQgc2VsZWN0ICJTaG93IHByYWdtYSByZWdpb24iIGFuZCB0aGUgcmVnaW9uIHRoYXQgdGhlICNwcmFnbWEKLWVuY29tcGFzc2VzIGlzIHNlbGVjdGVkIGFuZCBzaG93biBpbiBncmV5IGluIHRoZSBlZGl0b3IuCi0KLQotCi08aDIgaWQ9ImNvbmN1ciI+U2hvdyBjb25jdXJyZW5jeTwvaDI+Ci08cD48aW1nIHNyYz0iaW1hZ2VzL3B0cC1vcGVuTVBzaG93Q29uY3VycmVuY3ltZW51LmdpZiI+IAotPGJyPlNlbGVjdCBhIHN0YXRlbWVudCwgZS5nLiB0aGUgc3RhdGVtZW50IGhpZ2hsaWdodGVkIGluIGdyZXkgYWJvdmUuCi1TZWxlY3QgdGhlIGNvbnRleHQgbWVudSBvbiB0aGUgaGlnaGxpZ2h0ZWQgc3RhdGVtZW50LCBhbmQgY2xpY2sgIlNob3cgQ29uY3VycmVuY3kiCi1hcyBpbmRpY2F0ZWQgYWJvdmUuICBUaGUgcmVzdWx0cyBhcmUgc2hvd24gYmVsb3c6Ci08cD48aW1nIHNyYz0iaW1hZ2VzL3B0cC1vcGVuTVBzaG93Q29uY3VycmVuY3kuZ2lmIj4gCi08cD5BYm92ZSBhcmUgdGhlIHNjcmVlbi1zaG90IHJlc3VsdHMgb2YgYW4gYW5hbHlzaXMsIHBlcmhhcHMgb24gYSBub3Qgc28gcmVhbCwgCi1idXQgYXQgbGVhc3QgaW50ZXJlc3RpbmcgZXhhbXBsZS4gIAotQWZ0ZXIgaW5kaWNhdGluZyB2aWEgdGhlIGNvbnRleHQgbWVudSB0aGUgc3RhdGVtZW50IHVwb24gd2hpY2gKLXRoZSAiU2hvdyBDb25jdXJyZW5jeSIgYWN0aW9uIGlzIHRvIGJlIGV4ZWN1dGVkLAotb3RoZXIgc3RhdGVtZW50cyB3aWxsIGJlIGhpZ2hsaWdodGVkIGluIHllbGxvdy4KLVRoZSBtZWFuaW5nIGlzIHRoZSBmb2xsb3dpbmc6Ci1UaGUgZ3JheSBzZWxlY3RlZCBzdGF0ZW1lbnQgaXMgYW5hbHlzZWQgZm9yIHRoZSBmb2xsb3dpbmc6IHdoaWNoIAotc3RhdGVtZW50cyBjYW4gZXhlY3V0ZSBjb25jdXJyZW50bHkgdG8gaXQuICAKLVRoZSByZXN1bHQgaW5jbHVkZXMgYWxsIGhpZ2hsaWdodGVkIHN0YXRlbWVudHMgYmV0d2VlbiB0aGUgdHdvIGJhcnJpZXJzLiAgQnV0IGJlY2F1c2Ugb2YgdGhlIGNvbmRpdGlvbmFsIGp1bXAgYXJvdW5kIHRoZSBsb3dlciBiYXJyaWVyLCBleGVjdXRpb24gY291bGQgYWxzbyByZWFjaCB0aGUgdG9wIG9mIHRoZSBsb29wIC0gaGl0dGluZyB0aGUgY29uZGl0aW9uIGFuZCB0aGUgbG9vcCBpbmNyZW1lbnQsIGFzIHdlbGwgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgbG9vcCBib2R5LiAgQWxsIG9mIHRob3NlIHN0YXRlbWVudHMgYXJlIGhpZ2hsaWdodGVkIGFzIHdlbGwuIElmIGNvcnJlY3QsIHRoaXMgZXhhbXBsZSB3b3VsZCB1c2VmdWxseSBwb2ludCBvdXQgYSBidWcgIC0gYmVpbmcgdGhhdCB0aGUgc2Vjb25kIGJhcnJpZXIgc2hvdWxkIGJlIG91dHNpZGUgdGhhdCBpZiBzdGF0ZW1lbnQhCi0KLQotPGgyIGlkPSJwcm9iIj5TaG93IENvbW1vbiBPcGVuTVAgUHJvYmxlbXM8L2gyPgotPHA+PHNjcmlwdD4gdGh1bWIoImltYWdlcy9wdHAtb3Blbk1QcHJvYmxlbXMuZ2lmIiwzMDApPC9zY3JpcHQ+Ci08cD5BbG9uZyB3aXRoIHRoZSBhbmFseXNpcyBmb3IgZmluZGluZyBPcGVuTVAgYXJ0aWZhY3RzLAotY29tbW9uIHByb2JsZW1zIGFyZSBhbHNvIGxvY2F0ZWQsIGFuZCBzaG93biBpbiB0aGUgT3Blbk1QIFByb2JsZW1zIHZpZXcuCi08cD5UeXBlcyBvZiBwcm9ibGVtcyByZWNvZ25pemVkIGluY2x1ZGU6Ci08IS0tICBwcm9ibGVtcyBpZGVudGlmaWVkIGluIFBBU1RTZW1hbnRpY0NoZWNrLmphdmEgLS0+Ci08dWw+Ci08bGk+UGFyYWxsZWwgZGlyZWN0aXZlIGR5bmFtaWNhbGx5IGluc2lkZSBhbm90aGVyIHBhcmFsbGVsLCBlc3RhYmxpc2hlcyBzaW5nbGUgdGhyZWFkIGNvbnRleHQ8L2xpPgotPGxpPkZvciBkaXJlY3RpdmUgZW1iZWRkZWQgd2l0aGluIGNyaXRpY2FsLCBvcmRlcmVkLCBvciBtYXN0ZXIgZXh0ZW50czwvbGk+Ci08bGk+Rm9yIGRpcmVjdGl2ZSBlbWJlZGRlZCB3aXRoaW4gYW5vdGhlciBwYXJhbGxlbCBmb3Igb3IgcGFyYWxsZWwgc2VjdGlvbnM8L2xpPgotPGxpPlBhcmFsbGVsIGRpcmVjdGl2ZSBkeW5hbWljYWxseSBpbnNpZGUgYW5vdGhlciBwYXJhbGxlbCwgZXN0YWJsaXNoZXMgc2luZ2xlIHRocmVhZCBjb250ZXh0PC9saT4KLTxsaT5Gb3IgZGlyZWN0aXZlIGVtYmVkZGVkIHdpdGhpbiBhbm90aGVyIGZvciwgc2VjdGlvbnMsIG9yIHNpbmdsZSBkaXJlY3RpdmU8L2xpPgotPGxpPkJhcnJpZXIgZGlyZWN0aXZlIG5vdCBwZXJtaXR0ZWQgaW4gcmVnaW9uIGV4dGVudCBvZiBmb3IsIG9yZGVyZWQsIHNlY3Rpb25zLCBzaW5nbGUsIG1hc3RlciwgYW5kIGNyaXRpY2FsPC9saT4KLTxsaT5NYXN0ZXIgZGlyZWN0aXZlIG5vdCBwZXJtaXR0ZWQgaW4gZHluYW1pYyBleHRlbnQgb2YgZm9yLCBzZWN0aW9ucywgb3Igc2luZ2xlIGRpcmVjdGl2ZXM8L2xpPgotPGxpPk9yZGVyZWQgZGlyZWN0aXZlIG5vdCBwZXJtaXR0ZWQgaW4gZHluYW1pYyBleHRlbnQgb2YgY3JpdGljYWwgcmVnaW9uPC9saT4KLTwvdWw+Ci08cD4mbmJzcDs8cD4mbmJzcDs8cD4mbmJzcDsKLTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiB8IDxhIGhyZWY9InRvYy5odG1sIj5CYWNrIHRvIFRhYmxlIG9mIENvbnRlbnRzPC9hPgotCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3J1bi5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3J1bi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWQ0YTkzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9ydW4uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPgotUnVubmluZyB0aGUgTVBJIFRvb2xzIHdpdGhpbiB0aGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImhlbHAuY3NzIj4KLQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0aHVtYi5qcyI+IDwvc2NyaXB0PgotCTwvaGVhZD4KLTxib2R5PgotPGgxPiBSdW5uaW5nIHRoZSBNUEkgVG9vbHMgd2l0aGluIHRoZSBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29sczwvaDE+Ci08cD5UbyBydW4gdGhlIFBUUCBQTERUIE1QSSBUb29scywgCi1jcmVhdGUgYSBwcm9qZWN0IChlLmcgYSBNYW5hZ2VkIE1ha2UgQyBwcm9qZWN0KSwgYW5kCi1zZXQgdGhlIHByZWZlcmVuY2VzIGFuZCBpbmNsdWRlIHBhdGhzIGFzIGRlc2NyaWJlZCBpbgotPGEgaHJlZj0ic2V0dXAuaHRtbCI+U2V0dXAgZm9yIFBUUCBNUEkgVG9vbHM8L2E+LgotCi08cD5UaGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgaG91bGQgd29yayBvbiBTdGFuZGFyZCBNYWtlIEMgcHJvamVjdHMgYXMgd2VsbCwgYW5kCi1vbiBDKysgcHJvamVjdHMgKFN0YW5kYXJkIE1ha2UgYW5kIE1hbmFnZWQgTWFrZSkuICBUaGUgZGVzY3JpcHRpb24gaGVyZSBpcyBmb3IKLWEgTWFuYWdlZCBNYWtlIEMgUHJvamVjdC4KLQotPHA+Tm90ZTogdGhlIHRlcm1zICJNYW5hZ2VkIE1ha2UiIGFuZCAiU3RhbmRhcmQgTWFrZSIgcHJvamVjdHMgd2VyZSBtb3JlIHZpc2libHkgdXNlZCBpbiBDRFQgMy4xLgotVGhleSBhcmUgc3RpbGwgdGhlcmUgaW4gQ0RUIDQuMCBidXQgdGhlIG5hbWVzIGFyZSB1c3VhbGx5IGhpZGRlbi4gIEJ5IGRlZmF1bHQgYSBwcm9qZWN0ICJOZXcgQyBwcm9qZWN0Igotd2lsbCBjcmVhdGUgYSBtYWtlZmlsZSBmb3IgeW91LCBhbmQgdGh1cyBpcyBhICJNYW5hZ2VkIE1ha2UiIHByb2plY3Q7IGlmIHlvdSBjcmVhdGUgYSAiTWFrZWZpbGUgcHJvamVjdCIKLXRoZW4gdGhhdCBpcyB3aGF0IHdhcyBmb3JtZXJseSBjYWxsZWQgYSAiU3RhbmRhcmQgTWFrZSIgcHJvamVjdC4gIENvbmZ1c2VkIGVub3VnaD8gR29vZC4KLQotCi08b2w+Ci08bGk+V2l0aGluIHRoZSBwcm9qZWN0LCBjcmVhdGUgYSBDIGZpbGUgdGhhdCBpbmNsdWRlcyBNUEkgY29kZS4gQSBzYW1wbGUgaXMgPGEgaHJlZj0ic2FtcGxlcy90ZXN0TVBJLmMiPnRlc3RNUEkuYzwvYT4gCi1JZiB5b3UgdXNlZCB0aGUgUExEVCBuZXcgcHJvamVjdCB3aXphcmQgdG8gY3JlYXRlIGFuIE1QSSBwcm9qZWN0LCB0aGVuIHlvdSBwcm9iYWJseSBhbHJlYWR5IGhhdmUgb25lLgotCi08cD5Ob3RlOiBBIHNhbXBsZSBDKysgZmlsZSB3aXRoIE1QSSBjYWxscyAKLWlzIDxhIGhyZWY9InNhbXBsZXMvdGVzdE1QSWNwcC5jcHAiPnRlc3RNUEljcHAuY3BwPC9hPi4KLTxicj5BIHNhbXBsZSBDKysgZmlsZSB3aXRoIE1QSSBjYWxscyBpbiBvcmRpbmFyeSBDIHN0eWxlIAotaXMgPGEgaHJlZj0ic2FtcGxlcy9oZWxsb01QSV9jX3N0eWxlLmNwcCI+aGVsbG9NUElfY19zdHlsZS5jcHA8L2E+LgotCi0KLTwvdWw+Ci08cD4mbmJzcDsKLQotCi08bGk+U2VsZWN0IHRoZSBzb3VyY2UgZmlsZSB0byBhbmFseXNlLCB0byBmaW5kIHRoZSBNUEkgYXJ0aWZhY3RzLgotQ2xpY2sgb24gdGhlIHNvdXJjZSBmaWxlIGluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIG9uIHRoZSBsZWZ0IHRvIGhpZ2hsaWdodCBpdC4KLTxwPkNsaWNrIHRoZSAiU2hvdyBNUEkgQXJ0aWZhY3RzIiBtZW51IGl0ZW0gaW4gdGhlIFBMRFQgaWNvbiBtZW51ICBpbiB0aGUgdG9vbCBiYXIuCi08YnI+PGltZyBzcmM9ImltYWdlcy9wbGR0LW1lbnUuZ2lmIj4KLTxicj4oTm90ZTogaWYgaXQgY29tcGxhaW5zIHRoYXQgYSBzb3VyY2UgZmlsZSBpcyBub3Qgc2VsZWN0ZWQgdGhlIGZpcnN0IHRpbWUsIHNlbGVjdCBpdCBhZ2FpbiBhbmQgcmV0cnkuKQotPHA+VGhlIHdvcmtiZW5jaCB3aXRoIHRoZSBzZWxlY3Rpb24gYW5kIG1lbnUgaXRlbSBpcyBzaG93biBiZWxvdzoKLQotPHA+PHNjcmlwdD4gdGh1bWIoImltYWdlcy9tcGlCdXR0b25zLmdpZiIsMzAwKTwvc2NyaXB0PgotPGxpPlRoZSBNUEkgQXJ0aWZhY3QgVmlldyBpcyBvcGVuZWQsIGlmIGl0IHdhcyBub3QgcHJlc2VudC4KLUl0IGlzIHBvcHVsYXRlZCB3aXRoIE1QSSBhcnRpZmFjdHMgZm91bmQuCi08cD48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL21waVZpZXdBbm4uZ2lmIiwzMDApPC9zY3JpcHQ+Ci0KLQotPHA+SWYgbm8gYXJ0aWZhY3RzIGFyZSBmb3VuZCwgY2hlY2sgdGhhdDoKLTxvbD4KLTxsaT5UaGUgTVBJIHByZWZlcmVuY2VzIHBhZ2UgbGlzdHMgdGhlIGluY2x1ZGUgZmlsZSBmb3IgdGhlIE1QSSBpbnN0YWxsYXRpb24KLXRoYXQgeW91ciBzb3VyY2UgY29kZSB1c2VzLiAgVGhpcyBsaXN0IGlzIGhvdyB0aGUgYW5hbHlzaXMgZGV0ZXJtaW5lcyB3aGF0IGlzCi1hbiAiTVBJIGFydGlmYWN0LiIgIAotPGxpPllvdXIgcHJvamVjdCBwcm9wZXJ0aWVzIGhhdmUgdGhlIGluY2x1ZGUgcGF0aCAodGhlIHNhbWUgb25lIGxpc3RlZAotaW4gdGhlIE1QSSBwcmVmZXJlbmNlcyBwYWdlKSBsaXN0ZWQuCi1Ob3RlIHRoYXQgdGhlIE1QSSBhbmFseXNpcyBtYXkgcmVxdWlyZSB0aGlzIGV2ZW4gaWYgCi10aGUgYnVpbGQgcHJvY2VkdXJlIC0gc3VjaCBhcyAgYSBidWlsZCBjb21tYW5kIGxpa2UgJ21waWNjJyAtIAotaW1wbGljaXRseSBkb2VzIHRoaXMgaW5jbHVkZSBmb3IgeW91IGR1cmluZyBidWlsZC4KLTwvb2w+Ci08cD4mbmJzcDsKLTxsaT5Eb3VibGUgY2xpY2sgb24gYW55IGxpbmUgaW4gdGhlIE1QSSBBcnRpZmFjdCBWaWV3Ci10byBuYXZpZ2F0ZSB0aGUgZWRpdG9yIHRvIHRoYXQgbGluZSBpbiB0aGUgc291cmNlIGZpbGUuCi08cD4mbmJzcDsKLTxsaT5Ib3ZlciBvdmVyIHRoZSBNUEkgQXJ0aWZhY3QgaWRlbnRpZmllZCBpbiB0aGUgc291cmNlIGZpbGUKLShieSBibHVlIHNxdWlnZ2xlcykgdG8gc2VlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhhdAotZnVuY3Rpb24gY2FsbCwgZm9yIGV4YW1wbGUuIAotPGJyPjxpbWcgc3JjPSJpbWFnZXMvaG92ZXIuZ2lmIiBib3JkZXI9MT4KLTxsaT5Sb3dzIGluIHRoZSBNUEkgQXJ0aWZhY3QgVmlldyBjYW4gYmUgc29ydGVkIGJ5IGFueSBvZiB0aGUgY29sdW1ucy4KLUNsaWNrIG9uIHRoZSBjb2x1bW4gaGVhZGluZyB0byBzb3J0LgotPGxpPkNsaWNrIHRoZSAiQ2xlYXIgTVBJIEFydGlmYWN0cyBNYXJrZXJzIiBidXR0b24gKHJlZCBYKQotaW4gdGhlIHRvb2wgYmFyIDxpPm9mIHRoZSBNUEkgQXJ0aWZhY3QgVmlldzwvaT4gdG8gcmVtb3ZlIGFsbAotdGhlIE1QSSBhcnRpZmFjdHMuCi08YnI+PGltZyBzcmM9ImltYWdlcy9jbGVhck1hcmtlcnMuZ2lmIiBib3JkZXI9MT4gCi08bGk+WW91IGNhbiBydW4gdGhlIGFuYWx5c2lzIG9uIGFub3RoZXIgZmlsZSBhbmQgaXRzIG1hcmtlcnMKLXdpbGwgYmUgYWRkZWQgdG8gdGhlIHZpZXcuCi08bGk+WW91IGNhbiBydW4gdGhlIGFuYWx5c2lzIG9uIG1vcmUgdGhhbiBvbmUgZmlsZSAobXVsdGlwbGUgc2VsZWN0aW9uKQotb3IgYSBjb250YWluZXIgKGZvbGRlciBvciBwcm9qZWN0KSwgdG8gYW5hbHlzZSBtb3JlIHRoYW4gb25lIGZpbGUgYXQgYSB0aW1lLgotQ2xpY2sgb24gYSBwcm9qZWN0IG9yIGEgZm9sZGVyLCB0aGVuIHNlbGVjdCB0aGUKLSJTaG93IE1QSSBBcnRpZmFjdHMiIGFjdGlvbgotIHRvIHJ1biBpdCBvbiBhbGwgQyBzb3VyY2UgZmlsZXMgaW4gdGhhdCBmb2xkZXIuCi08YnI+IDxpbWcgc3JjPSJpbWFnZXMvbXBpTWVudS5naWYiPgotPHA+Ci08bGk+PGI+Q29udGVudCBBc3Npc3Q8L2I+PGJyPgotVHlwZSBhbiBpbmNvbXBsZXRlIE1QSSBmdW5jdGlvbiBuYW1lIGUuZy4gIk1QSV9JbmkiCi1hbmQgaGl0IEN0cmwtU3BhY2UuIFRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHNob3duCi1pcyBwb3B1bGF0ZWQgd2l0aCBDRFQgY29tcGxldGlvbnMgaW5jbHVkaW5nIGFyZ3VtZW50Ci10eXBlcywgYnV0IGluIGFkZGl0aW9uLCB0aGUgUFRQLU1QSSB0b29scyBhbHNvIHByb3ZpZGUKLXNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IGFjdHVhbCBNUEkgY29uc3RhbnQgdmFsdWVzLCBldGMuCi13aGVyZSBhcHByb3ByaWF0ZSwgYW5kIGEgeWVsbG93IHBvcHVwIHdpdGggYWRkaXRpb25hbCAKLXRleHR1YWwgZGVzY3JpcHRpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZ1bmN0aW9uLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvY29udGVudEFzc2lzdC5naWYiIGJvcmRlcj0xPgotPHA+Ci08bGk+PGI+Q29udGVudCBzZW5zaXRpdmUgaGVscDwvYj48YnI+Ci1BbHNvLCBpZiBGMSBpcyBwcmVzc2VkIHdoZW4gdGhlIGN1cnNvciBpcyB3aXRoaW4KLWEgZnVuY3Rpb24gbmFtZSwgYSBoZWxwIHZpZXcgYXBwZWFycyB3aGljaCBzaG93cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgotKEluIExpbnV4IHByZXNzIEN0cmwtRjE7IGluIE1hYyBVc2UgSGVscCBidXR0b24gb3IgdXNlIG1lbnUgSGVscCA+IER5bmFtaWMgSGVscCkKLQotPGJyPjxpbWcgc3JjPSJpbWFnZXMvaGVscENvbnRTZW5zSGl0RjEuZ2lmIiBib3JkZXI9MT4KLTxwPkhlbHAgVmlldyBhcHBlYXJzOgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvaGVscENvbnRTZW5zLmdpZiIgYm9yZGVyPTE+Ci08cD5DbGljayBvbiB0aGUgZnVuY3Rpb24gbmFtZSB0byBzZWUgbW9yZSBpbmZvcm1hdGlvbjoKLTxicj48aW1nIHNyYz0iaW1hZ2VzL2hlbHBDb250U2Vuc0hpdEYxY2xpY2suZ2lmIiBib3JkZXI9MT4KLQotPC9vbD4KLTxwPiZuYnNwOwotPHA+U2VlIGFsc28gdGhlIAotPGEgaHJlZj0iYmFycmllci5odG1sIj5NUEkgQmFycmllciBBbmFseXNpczwvYT4gZXhwbGFuYXRpb24uCi08cD5TZWUgYWxzbyB0aGUgPGEgaHJlZj0ic2V0dXBPTVAuaHRtbCI+T3Blbk1QIHNldHVwIGluZm9ybWF0aW9uPC9hPgotb3IgdGhlIDxhIGhyZWY9InJ1bk9NUC5odG1sIj5PcGVuTVAgcnVuIGluZm9ybWF0aW9uPC9hPi4KLTxwPiZuYnNwOzxwPiZuYnNwOzxwPiZuYnNwOwotPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IHwgPGEgaHJlZj0idG9jLmh0bWwiPkJhY2sgdG8gVGFibGUgb2YgQ29udGVudHM8L2E+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvcnVuT01QLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvcnVuT01QLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDU3M2UuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3J1bk9NUC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4KLVJ1bm5pbmcgUFRQIE9wZW5NUCBUb29scyAKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRodW1iLmpzIj4gPC9zY3JpcHQ+Ci0JPC9oZWFkPgotPGJvZHk+Ci08aDE+IFJ1bm5pbmcgUFRQIE9wZW5NUCBUb29scyBQbHVnLWluPC9oMT4KLQotPHA+VGhlIGJhc2ljIGluc3RydWN0aW9ucyBmb3IgcnVubmluZyB0aGUgT3Blbk1QIHRvb2xzIAotKGZpbmRpbmcgT3Blbk1QIGFydGlmYWN0cywgbmF2aWdhdGluZyB0byBzb3VyY2UgY29kZSwgdXNpbmcgSGVscCkKLWFyZSB0aGUgc2FtZQotYXMgZm9yIDxhIGhyZWY9InJ1bi5odG1sIj5ydW5uaW5nIHRoZSBNUEkgdG9vbHMuPC9hPi4KLTxwPkZpbmRpbmcgT3Blbk1QIGFydGlmYWN0czoKLTxicj48aW1nIHNyYz0iaW1hZ2VzL21lbnVTaG93T3Blbk1QYXJ0aWZhY3RzLmdpZiI+Ci08cD5PcGVuTVAgYXJ0aWZhY3RzIGZvdW5kIGFuZCBzaG93biBpbiB0aGUgT3Blbk1QIEFydGlmYWN0IFZpZXc6Ci08cD48c2NyaXB0PiB0aHVtYigiaW1hZ2VzL29wZW5tcEFydGlmYWN0c2ZvdW5kLmdpZiIsMzAwKTwvc2NyaXB0PgotPHA+Ci1UaGVyZSBhcmUgYSBmZXcgPGEgaHJlZj0ib3Blbk1QZXh0cmEuaHRtbCI+ZXh0cmEgT3Blbk1QIGFuYWx5c2lzIGZ1bmN0aW9uczwvYT4gYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgTVBJLCB0b28uCi0KLQotPHA+Jm5ic3A7PHA+Jm5ic3A7PHA+Jm5ic3A7Ci08cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIFRvcDwvYT4gfCA8YSBocmVmPSJ0b2MuaHRtbCI+QmFjayB0byBUYWJsZSBvZiBDb250ZW50czwvYT4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zYW1wbGVzL2hlbGxvTVBJX2Nfc3R5bGUuY3BwIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvaGVsbG9NUElfY19zdHlsZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNTY5ZGQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvaGVsbG9NUElfY19zdHlsZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jaW5jbHVkZSAibXBpLmgiCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi0vLyBmcm9tIGV3cy9ncmlkbXBpL21waUV4YW1wbGUyL3NyYy9oZWxsb01QSS5jCi0KLWNsYXNzIEhlbGxvV29ybGQgewotCXB1YmxpYzoKLQkJaW50IHNheUhlbGxvKGludCBhcmdjLCBjaGFyKiBhcmd2W10pOwotfTsKLQotaW50IEhlbGxvV29ybGQ6OnNheUhlbGxvKGludCBhcmdjLCBjaGFyKiBhcmd2W10pIHsKLQlpbnQgIG15X3Jhbms7IC8qIHJhbmsgb2YgcHJvY2VzcyAqLwotCWludCAgcDsgICAgICAgLyogbnVtYmVyIG9mIHByb2Nlc3NlcyAqLwotCWludCBzb3VyY2U7ICAgLyogcmFuayBvZiBzZW5kZXIgKi8KLQlpbnQgZGVzdDsgICAgIC8qIHJhbmsgb2YgcmVjZWl2ZXIgKi8KLQlpbnQgdGFnPTA7ICAgIC8qIHRhZyBmb3IgbWVzc2FnZXMgKi8KLQljaGFyIG1lc3NhZ2VbMTAwXTsgICAgICAgIC8qIHN0b3JhZ2UgZm9yIG1lc3NhZ2UgKi8KLQlNUElfU3RhdHVzIHN0YXR1cyA7ICAgLyogcmV0dXJuIHN0YXR1cyBmb3IgcmVjZWl2ZSAqLwotCQotCWNvdXQgPDwgIkhlbGxvIE1QSSBXb3JsZCB0aGUgb3JpZ2luYWwuIiA8PCBlbmRsOwotCQotCS8qIHN0YXJ0IHVwIE1QSSAqLwotCU1QSV9Jbml0KCZhcmdjLCAoY2hhcioqKikoJmFyZ3YpKTsKLQkKLQkvKiBmaW5kIG91dCBwcm9jZXNzIHJhbmsgKi8KLQlNUElfQ29tbV9yYW5rKE1QSV9DT01NX1dPUkxELCAmbXlfcmFuayk7IAotCQotCS8qIGZpbmQgb3V0IG51bWJlciBvZiBwcm9jZXNzZXMgKi8KLQlNUElfQ29tbV9zaXplKE1QSV9DT01NX1dPUkxELCAmcCk7IAotCQotCQotCWlmIChteV9yYW5rICE9MCl7Ci0JCS8qIGNyZWF0ZSBtZXNzYWdlICovCi0JCXNwcmludGYobWVzc2FnZSwgIkdyZWV0aW5ncyBmcm9tIHByb2Nlc3MgJWQhIiwgbXlfcmFuayk7Ci0JCWRlc3QgPSAwOwotCQkvKiB1c2Ugc3RybGVuKzEgc28gdGhhdCAnXDAnIGdldCB0cmFuc21pdHRlZCAqLwotCQlNUElfU2VuZChtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSkrMSwgTVBJX0NIQVIsCi0JCSAgIGRlc3QsIHRhZywgTVBJX0NPTU1fV09STEQpOwotCX0KLQllbHNlewotCQlwcmludGYoIkZyb20gcHJvY2VzcyAwOiBOdW0gcHJvY2Vzc2VzOiAlZFxuIixwKTsKLQkJZm9yIChzb3VyY2UgPSAxOyBzb3VyY2UgPCBwOyBzb3VyY2UrKykgewotCQkJTVBJX1JlY3YobWVzc2FnZSwgMTAwLCBNUElfSU5URUdFUiwgc291cmNlLCB0YWcsCi0JCQkgICAgICBNUElfQ09NTV9XT1JMRCwgJnN0YXR1cyk7Ci0JCQljb3V0IDw8IG1lc3NhZ2UgPDwgZW5kbDsKLQkJfQotCX0KLQkvKiBzaHV0IGRvd24gTVBJICovCi0JTVBJX0ZpbmFsaXplKCk7IAotCQotCXJldHVybiAwOwotfQotCi1pbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewotICBIZWxsb1dvcmxkIGhlbGxvOwotICBoZWxsby5zYXlIZWxsbyhhcmdjLCBhcmd2KTsKLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy9waS5jcHAgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy9waS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3MTZhMjQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvcGkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotI2luY2x1ZGUgPG1hdGguaD4gCi0jaW5jbHVkZSAibXBpLmgiIAotI2luY2x1ZGUgPGlvc3RyZWFtPgotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAKLSAvKiAKLSAgKiBDYWxjdWxhdGlvbiBvZiBQSSBpbiBNUEkgdmlhIEMrKwotICovCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSAKLXsgCi0gICAgaW50IG4sIHJhbmssIHNpemUsIGk7IAotICAgIGRvdWJsZSBQSTI1RFQgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzsgCi0gICAgZG91YmxlIG15cGksIHBpLCBoLCBzdW0sIHg7IAotIAotICAgIE1QSTo6SW5pdChhcmdjLCBhcmd2KTsgCi0gICAgc2l6ZSA9IE1QSTo6Q09NTV9XT1JMRC5HZXRfc2l6ZSgpOyAKLSAgICByYW5rID0gTVBJOjpDT01NX1dPUkxELkdldF9yYW5rKCk7IAotIAotICAgIHdoaWxlICgxKSB7IAotCWlmIChyYW5rID09IDApIHsgCi0JICAgIGNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgb2YgaW50ZXJ2YWxzOiAoMCBxdWl0cykiIAotCQkgPDwgZW5kbDsgCi0JICAgIGNpbiA+PiBuOyAKLQl9IAotIAotCU1QSTo6Q09NTV9XT1JMRC5CY2FzdCgmbiwgMSwgTVBJOjpJTlQsIDApOyAKLQlpZiAobj09MCkgCi0JICAgIGJyZWFrOyAKLQllbHNlIHsgCi0JICAgIGggPSAxLjAgLyAoZG91YmxlKSBuOyAKLQkgICAgc3VtID0gMC4wOyAKLQkgICAgZm9yIChpID0gcmFuayArIDE7IGkgPD0gbjsgaSArPSBzaXplKSB7IAotCQl4ID0gaCAqICgoZG91YmxlKWkgLSAwLjUpOyAKLQkJc3VtICs9ICg0LjAgLyAoMS4wICsgeCp4KSk7IAotCSAgICB9IAotCSAgICBteXBpID0gaCAqIHN1bTsgCi0gCi0JICAgIE1QSTo6Q09NTV9XT1JMRC5SZWR1Y2UoJm15cGksICZwaSwgMSwgTVBJOjpET1VCTEUsIAotCQkJCSAgIE1QSTo6U1VNLCAwKTsgCi0JICAgIGlmIChyYW5rID09IDApIAotCQljb3V0IDw8ICJwaSBpcyBhcHByb3hpbWF0ZWx5ICIgPDwgcGkgCi0JCSAgICAgPDwgIiwgRXJyb3IgaXMgIiA8PCBmYWJzKHBpIC0gUEkyNURUKSAKLQkJICAgICA8PCBlbmRsOyAKLQl9IAotICAgIH0gCi0gICAgTVBJOjpGaW5hbGl6ZSgpOyAKLSAgICByZXR1cm4gMDsgCi19IAotCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJLmMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYmRjZDMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSS5jCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSAibXBpLmgiCi0vLyBTYW1wbGUgTVBJIHByb2dyYW0KLWludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pewotCXByaW50ZigiSGVsbG8gTVBJIFdvcmxkIHRoZSBvcmlnaW5hbC5cbiIpOwkKLQlpbnQgIG15X3Jhbms7IC8qIHJhbmsgb2YgcHJvY2VzcyAqLwotCWludCAgcDsgICAgICAgLyogbnVtYmVyIG9mIHByb2Nlc3NlcyAqLwotCWludCBzb3VyY2U7ICAgLyogcmFuayBvZiBzZW5kZXIgKi8KLQlpbnQgZGVzdDsgICAgIC8qIHJhbmsgb2YgcmVjZWl2ZXIgKi8KLQlpbnQgdGFnPTA7ICAgIC8qIHRhZyBmb3IgbWVzc2FnZXMgKi8KLQljaGFyIG1lc3NhZ2VbMTAwXTsgICAgICAgIC8qIHN0b3JhZ2UgZm9yIG1lc3NhZ2UgKi8KLQlNUElfU3RhdHVzIHN0YXR1cyA7ICAgLyogcmV0dXJuIHN0YXR1cyBmb3IgcmVjZWl2ZSAqLwotCQotCS8qIHN0YXJ0IHVwIE1QSSAqLwotCQotCU1QSV9Jbml0KCZhcmdjLCAmYXJndik7Ci0JCi0JLyogZmluZCBvdXQgcHJvY2VzcyByYW5rICovCi0JTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJm15X3JhbmspOyAKLQkKLQkvKiBmaW5kIG91dCBudW1iZXIgb2YgcHJvY2Vzc2VzICovCi0JTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnApOyAKLQkKLQkKLQlpZiAobXlfcmFuayAhPTApewotCQkvKiBjcmVhdGUgbWVzc2FnZSAqLwotCQlzcHJpbnRmKG1lc3NhZ2UsICJHcmVldGluZ3MgZnJvbSBwcm9jZXNzICVkISIsIG15X3JhbmspOwotCQlkZXN0ID0gMDsKLQkJLyogdXNlIHN0cmxlbisxIHNvIHRoYXQgJ1wwJyBnZXQgdHJhbnNtaXR0ZWQgKi8KLQkJTVBJX1NlbmQobWVzc2FnZSwgc3RybGVuKG1lc3NhZ2UpKzEsIE1QSV9DSEFSLAotCQkgICBkZXN0LCB0YWcsIE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JZWxzZXsKLQkJcHJpbnRmKCJGcm9tIHByb2Nlc3MgMDogTnVtIHByb2Nlc3NlczogJWRcbiIscCk7Ci0JCWZvciAoc291cmNlID0gMTsgc291cmNlIDwgcDsgc291cmNlKyspIHsKLQkJCU1QSV9SZWN2KG1lc3NhZ2UsIDEwMCwgTVBJX0NIQVIsIHNvdXJjZSwgdGFnLAotCQkJICAgICAgTVBJX0NPTU1fV09STEQsICZzdGF0dXMpOwotCQkJcHJpbnRmKCIlc1xuIixtZXNzYWdlKTsKLQkJfQotCX0KLQkvKiBzaHV0IGRvd24gTVBJICovCi0JTVBJX0ZpbmFsaXplKCk7IAotCQotCQotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSWJhcnJpZXIuYyBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zYW1wbGVzL3Rlc3RNUEliYXJyaWVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYWI3ZjIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSWJhcnJpZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgIm1waS5oIgotLy8gU2FtcGxlIE1QSSBwcm9ncmFtCi0KLQotdm9pZCBiYXJyaWVyKCl7Ci0JTVBJX0JhcnJpZXIoTVBJX0NPTU1fV09STEQpOwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKXsJCi0JaW50ICBteV9yYW5rOyAvKiByYW5rIG9mIHByb2Nlc3MgKi8KLQlpbnQgIHA7ICAgICAgIC8qIG51bWJlciBvZiBwcm9jZXNzZXMgKi8KLQlpbnQgc291cmNlOyAgIC8qIHJhbmsgb2Ygc2VuZGVyICovCi0JaW50IGRlc3Q7ICAgICAvKiByYW5rIG9mIHJlY2VpdmVyICovCi0JaW50IHRhZz0wLCB4ID0gMzsgICAgLyogdGFnIGZvciBtZXNzYWdlcyAqLwotCWNoYXIgbWVzc2FnZVsxMDBdOyAgICAgICAgLyogc3RvcmFnZSBmb3IgbWVzc2FnZSAqLwotCU1QSV9TdGF0dXMgc3RhdHVzIDsgICAvKiByZXR1cm4gc3RhdHVzIGZvciByZWNlaXZlICovCi0JIAotCS8qIHN0YXJ0IHVwIE1QSSAqLwotCQotCU1QSV9Jbml0KCZhcmdjLCAmYXJndik7Ci0JCi0JLyogZmluZCBvdXQgcHJvY2VzcyByYW5rICovCi0JTVBJX0NvbW1fcmFuayhNUElfQ09NTV9XT1JMRCwgJm15X3JhbmspOyAKLQkKLQkvKiBmaW5kIG91dCBudW1iZXIgb2YgcHJvY2Vzc2VzICovCi0JTVBJX0NvbW1fc2l6ZShNUElfQ09NTV9XT1JMRCwgJnApOyAKLQkKLQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JCi0JCi0JaWYgKG15X3JhbmsgIT0wKXsKLQkJLyogY3JlYXRlIG1lc3NhZ2UgKi8KLQkJc3ByaW50ZihtZXNzYWdlLCAiR3JlZXRpbmdzIGZyb20gcHJvY2VzcyAlZCEiLCBteV9yYW5rKTsKLQkJZGVzdCA9IDA7Ci0JCS8qIHVzZSBzdHJsZW4rMSBzbyB0aGF0ICdcMCcgZ2V0IHRyYW5zbWl0dGVkICovCi0JCU1QSV9TZW5kKG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSsxLCBNUElfQ0hBUiwKLQkJICAgZGVzdCwgdGFnLCBNUElfQ09NTV9XT1JMRCk7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JZWxzZXsKLQkJcHJpbnRmKCJGcm9tIHByb2Nlc3MgMDogTnVtIHByb2Nlc3NlczogJWRcbiIscCk7Ci0JCWZvciAoc291cmNlID0gMTsgc291cmNlIDwgcDsgc291cmNlKyspIHsKLQkJCU1QSV9SZWN2KG1lc3NhZ2UsIDEwMCwgTVBJX0NIQVIsIHNvdXJjZSwgdGFnLAotCQkJICAgICAgTVBJX0NPTU1fV09STEQsICZzdGF0dXMpOwotCQkJcHJpbnRmKCIlc1xuIixtZXNzYWdlKTsKLQkJfQotCQkvL01QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQkJYmFycmllcigpOwotCX0KLQotCi0JaWYobXlfcmFuayA9PSAwKXsKLQkJcHJpbnRmKCJ0ZXN0IGVycm9yc1xuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JZWxzZXsKLQkJcHJpbnRmKCJ0aGlzIHBhdGggZG9lcyBub3QgY29udGFpbiBhIGJhcnJpZXIiKTsKLQl9Ci0JCi0JaWYoeCA8IDMpewotCQlwcmludGYoIkl0IGlzIG5vdCBhbiBlcnJvclxuIik7Ci0JCU1QSV9CYXJyaWVyKE1QSV9DT01NX1dPUkxEKTsKLQl9Ci0JCi0Jd2hpbGUoeCA8IG15X3JhbmspewotCQlNUElfQmFycmllcihNUElfQ09NTV9XT1JMRCk7Ci0JCXggKys7Ci0JfQotCQotCS8qIHNodXQgZG93biBNUEkgKi8KLQlNUElfRmluYWxpemUoKTsgCi0KLQlyZXR1cm4gMDsKLX0KLQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NhbXBsZXMvdGVzdE1QSWNwcC5jcHAgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJY3BwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVmMThjNC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2FtcGxlcy90ZXN0TVBJY3BwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLSNpbmNsdWRlIDxtYXRoLmg+IAotI2luY2x1ZGUgIm1waS5oIiAKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSAKLXsgCi0gICAgaW50IG4sIHJhbmssIHNpemUsIGk7IAotICAgIGRvdWJsZSBQSTI1RFQgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzsgCi0gICAgZG91YmxlIG15cGksIHBpLCBoLCBzdW0sIHg7IAotIAotICAgIE1QSTo6SW5pdChhcmdjLCBhcmd2KTsgCi0gICAgc2l6ZSA9IE1QSTo6Q09NTV9XT1JMRC5HZXRfc2l6ZSgpOyAKLSAgICByYW5rID0gTVBJOjpDT01NX1dPUkxELkdldF9yYW5rKCk7IAotIAotICAgIHdoaWxlICgxKSB7IAotCWlmIChyYW5rID09IDApIHsgCi0JICAgIGNvdXQgPDwgIkVudGVyIHRoZSBudW1iZXIgb2YgaW50ZXJ2YWxzOiAoMCBxdWl0cykiIAotCQkgPDwgZW5kbDsgCi0JICAgIGNpbiA+PiBuOyAKLQl9IAotIAotCU1QSTo6Q09NTV9XT1JMRC5CY2FzdCgmbiwgMSwgTVBJOjpJTlQsIDApOyAKLQlpZiAobj09MCkgCi0JICAgIGJyZWFrOyAKLQllbHNlIHsgCi0JICAgIGggPSAxLjAgLyAoZG91YmxlKSBuOyAKLQkgICAgc3VtID0gMC4wOyAKLQkgICAgZm9yIChpID0gcmFuayArIDE7IGkgPD0gbjsgaSArPSBzaXplKSB7IAotCQl4ID0gaCAqICgoZG91YmxlKWkgLSAwLjUpOyAKLQkJc3VtICs9ICg0LjAgLyAoMS4wICsgeCp4KSk7IAotCSAgICB9IAotCSAgICBteXBpID0gaCAqIHN1bTsgCi0gCi0JICAgIE1QSTo6Q09NTV9XT1JMRC5SZWR1Y2UoJm15cGksICZwaSwgMSwgTVBJOjpET1VCTEUsIAotCQkJCSAgIE1QSTo6U1VNLCAwKTsgCi0JICAgIGlmIChyYW5rID09IDApIAotCQljb3V0IDw8ICJwaSBpcyBhcHByb3hpbWF0ZWx5ICIgPDwgcGkgCi0JCSAgICAgPDwgIiwgRXJyb3IgaXMgIiA8PCBmYWJzKHBpIC0gUEkyNURUKSAKLQkJICAgICA8PCBlbmRsOyAKLQl9IAotICAgIH0gCi0gICAgTVBJOjpGaW5hbGl6ZSgpOyAKLSAgICByZXR1cm4gMDsgCi19IAotCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvc2V0dXAuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zZXR1cC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTE1MjQ2Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zZXR1cC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+Ci1TZXR1cCBmb3IgTVBJIFRvb2xzIHdpdGhpbiB0aGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRodW1iLmpzIj4gPC9zY3JpcHQ+Ci08Ym9keT4KLTxoMT5TZXR1cCBmb3IgTVBJIFRvb2xzIHdpdGhpbiB0aGUgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHM8L2gxPgotCi08cD5UbyB1c2UgIHRoZSBQVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQKLVRvb2xzIGZlYXR1cmUgZm9yIE1QSSBkZXZlbG9wbWVudCwgeW91IG5lZWQgdG8gCi08b2w+Ci08bGk+PGEgaHJlZj0iI3ByZWZzIj5TcGVjaWZ5IHRoZSBNUEkgaW5jbHVkZSBwYXRoIGluIHByZWZlcmVuY2VzPC9hPiwgYW5kPC9saT4KLTxsaT48YSBocmVmPSIjcHJvamVjdCI+QWRkIHRoZSBNUEkgaW5jbHVkZSBmaWxlcyBldGMuICB0byB0aGUgYnVpbGQgaW5mb3JtYXRpb24gZm9yIGVhY2ggIHByb2plY3QuPC9hPgotPC9vbD4KLQotPGgyIGlkPSJwcmVmcyI+U3BlY2lmeWluZyB0aGUgTVBJIEluY2x1ZGUgcGF0aCBpbiBQcmVmZXJlbmNlczwvaDI+Ci08cD5UbyBzcGVjaWZ5IHRoZSBNUEkgaW5jbHVkZSBwYXRoLCB1c2UgV2luZG93ID4gUHJlZmVyZW5jZXMuIChGb3IgTWFjLCB1c2UgRWNsaXBzZSA+IFByZWZlcmVuY2VzKQotVW5kZXIgUFRQLCBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scywgTVBJLi4uCi0oTm90ZTogSWYgeW91IGRvIG5vdCBoYXZlIGNvcmUgUFRQIGluc3RhbGxlZCwgdGhlICJQYXJhbGxlbCBMYW5ndWFnZSAKLURldmVsb3BtZW50IFRvb2xzIiBzZWN0aW9uIGluIHRoZSBwcmVmZXJlbmNlcyB3aWxsIGJlIGluY2x1ZGVkIHdpdGhvdXQgaXQuKQotCi08cD5BZGQgdGhlIHBhdGggdG8gTVBJIGluY2x1ZGUgcGF0aHMgIC0gdGhpcyB0ZWxscyBQTERUIHdoYXQgc3ltYm9scyB0byBsb29rCi1mb3IgaW4gdGhlIE1QSSBBcnRpZmFjdCB2aWV3LiAgWW91IGNhbiBhbHNvIHNwZWNpZnkgdGhlIGRlZmF1bHQgTVBJIGJ1aWxkIGNvbW1hbmQuCi1UaGVzZSB2YWx1ZXMgd2lsbCBtYWtlIHRoZSBNUEkgTmV3IFByb2plY3QgV2l6YXJkIHBhZ2UgbWFrZSBtb3JlCi1hY2N1cmF0ZSBwcmVkaWN0aW9ucyBvZiBzZXR0aW5ncyBmb3IgbmV3IHByb2plY3RzLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvcGxkdC1wcmVmczEucG5nIj4KLQotCi0KLTxoMiBpZD0icHJvamVjdCI+QWRkIE1QSSBJbmNsdWRlIHBhdGhzIHRvIGVhY2ggcHJvamVjdDwvaDI+Ci08cD5UaGUgTVBJIGluY2x1ZGUgcGF0aHMgbXVzdCBhbHNvIGJlIGFkZGVkIHRvIGVhY2ggcHJvamVjdC4KLVRoZXJlIGFyZSB0d28gd2F5cyB0byBkbyB0aGlzLgotPG9sPgotPGxpPjxhIGhyZWY9IiN3aXphcmQiPlVzZSB0aGUgUExEVCBuZXcgcHJvamVjdCB3aXphcmRzPC9hPiwgb3IKLTwvbGk+Ci08bGk+PGEgaHJlZj0iI21hbnVhbCI+QWRkIHRoZSBidWlsZCBpbmZvcm1hdGlvbiBtYW51YWxseTwvYT4uCi08L29sPgotPGgyIGlkPSJ3aXphcmQiPlVzZSB0aGUgUExEVCBuZXcgcHJvamVjdCB3aXphcmRzPC9oMj4KLTxwPkNyZWF0ZSBhIG5ldyAiQyBwcm9qZWN0IgotPGJyPkZpbGUtPk5ldy0+QyBwcm9qZWN0IChpZiB5b3UgYXJlIGFscmVhZHkgaW4gdGhlIEMvQysrIHBlcnNwZWN0aXZlIHRoaXMgbWF5IGJlIHRoZSBzaW1wbGVzdCkKLTxicj5pcyBvbmUgd2F5OyB0aGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGdldCB0byB0aGlzIHdpemFyZAotRW50ZXIgYSBwcm9qZWN0IG5hbWU7IHVuZGVyIFByb2plY3QgdHlwZXMsIGV4cGFuZCAnZXhlY3V0YWJsZScgYW5kIHNlbGVjdCwgZS5nLiAiTVBJIEhlbGxvIFdvcmxkIEMgcHJvamVjdCIKLTxicj4KLTxpbWcgc3JjPSJpbWFnZXMvbXBpV2l6YXJkLmdpZiI+Ci08YnI+U2VsZWN0IE5leHQuCi08YnI+T24gdGhlIG5leHQgcGFnZSwgZmlsbCBpbiBhbnkgcHJvamVjdCB0ZW1wbGF0ZSB2YWx1ZXMsIGUuZy4geW91ciBuYW1lLgotPGJyPlRoZW4gc2VsZWN0IE5leHQuCi08YnI+PGltZyBzcmM9ImltYWdlcy9tcGlXaXphcmQyLmdpZiI+Ci08cD5PbiB0aGUgbmV4dCBwYWdlLCAiTVBJIFByb2plY3QgU2V0dGluZ3MiIHBhZ2UsICBtYWtlIHN1cmUgdGhlICJBZGQgTVBJIHByb2plY3Qgc2V0dGluZ3MgdG8gdGhpcyBwcm9qZWN0IgotaXMgY2hlY2tlZC4gIElmIHlvdSB3YW50IHRvIGNoYW5nZSBhbnkgb2YgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGlzIHByb2plY3QsIHlvdSBjYW4gZG8gc28KLWhlcmUgYnkgdW5jaGVja2luZyB0aGUgIlVzZSBkZWZhdWx0IGluZm9ybWF0aW9uIiBhbmQgYWx0ZXJpbmcgdGhlIHZhbHVlcy4KLQotPGJyPjxpbWcgc3JjPSJpbWFnZXMvbXBpV2l6YXJkMy5naWYiPgotPHA+U2VsZWN0IEZpbmlzaC4KLTxwPlRoZSBwcm9qZWN0IGlzIGNyZWF0ZWQgYW5kIHNob3VsZCBidWlsZCBhdXRvbWF0aWNhbGx5LgotVGhlIEVjbGlwc2Ugd29ya2JlbmNoIGlzIHNob3duIGJlbG93IGFmdGVyIGNyZWF0aW5nIHRoZSBuZXcgIk1QSSBoZWxsbyB3b3JsZCIgcHJvamVjdC4KLVRoZSBwcm9qZWN0IGV4cGxvcmVyIHZpZXcgb24gdGhlIGxlZnQgc2hvd3MgdGhlIHByb2plY3QgY29udGVudHMuCi1UaGUgc291cmNlIGZpbGUgaXMgdW5kZXIgdGhlICdzcmMnIGRpcmVjdG9yeTsgZXhwYW5kIHRoaXMgdG8gc2VlIGl0LgotRG91YmxlLWNsaWNrIG9uIHRoZSBzb3VyY2UgZmlsZSBuYW1lIHRvIGVkaXQgdGhlIHNvdXJjZSBmaWxlLiAgVGhlIG91dGxpbmUgdmlldyBvbiB0aGUKLXJpZ2h0IHNob3dzIHRoZSBvdXRsaW5lIG9mIHRoZSBmaWxlIGN1cnJlbnRseSBzaG93biBpbiB0aGUgZWRpdG9yLgotVGhlIENvbnNvbGUgdmlldyBhdCB0aGUgYm90dG9tIHNob3dzIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9qZWN0IGJ1aWxkLgotCi08YnI+PGltZyBzcmM9ImltYWdlcy9tcGlOZXdQcm9qZWN0V29ya2JlbmNoLmdpZiI+Ci08cD4KLTxwPjxwPk5vdyBjb250aW51ZSB0byBzZXQgdXAgdG8gPGEgaHJlZj0icnVuLmh0bWwiPnJ1biB0aGUgTVBJIHRvb2xzPC9hPgotPHA+Ci08aDIgaWQ9Im1hbnVhbCI+QWRkIHRoZSBCdWlsZCBJbmZvcm1hdGlvbiBNYW51YWxseTwvaDI+Ci08cD5JZiB0aGUgbmV3IHByb2plY3Qgd2l6YXJkIGlzbid0IHVzZWQgYXMgZGVzY3JpYmVkIAotYWJvdmUgdG8gc2V0IHRoZSBNUEkgaW5mb3JtYXRpb24gZm9yIGEgcHJvamVjdCwKLXRoZSBNUEkgaW5mb3JtYXRpb24gY2FuIGJlIGFkZGVkIHRvIHRoZSBwcm9qZWN0IG1hbnVhbGx5IGFzIGZvbGxvd3MuCi08b2w+Ci08bGk+Q3JlYXRlIGEgQ0RUIHByb2plY3QgKGUuZy4gTWFuYWdlZCBNYWtlIEMgUHJvamVjdCkKLQotPGxpPlNldCB1cCB0aGUgaW5jbHVkZSBwYXRocyBldGM6Ci08YnI+UHJvamVjdCBQcm9wZXJ0aWVzLCBDL0MrKyBCdWlsZCwgQ29uZmlndXJhdGlvbiBTZXR0aW5ncywKLVRvb2wgU2V0dGluZ3MgdGFiLCBEaXJlY3RvcmllcwotPGJyPi0tPiBBZGQgaW5jbHVkZSBwYXRoIGZvciBtcGkgaGVhZGVyIGZpbGVzIGV0Yy4gLSBwYXRoIHRvIHRoZSAnaW5jbHVkZScgZGlyCi08YnI+PGltZyBzcmM9ImltYWdlcy9pbmNsdWRlLmdpZiI+Ci08cD4KLVByb2plY3QgUHJvcGVydGllcywgQy9DKysgQnVpbGQsIENvbmZpZ3VyYXRpb24gU2V0dGluZ3MsCi1Ub29sIFNldHRpbmdzIHRhYiwgR0NDIEMgTGlua2VyLCBMaWJyYXJpZXMKLTxvbD4KLTxsaT5VbmRlciAiTGlicmFyaWVzICgtbCkiICBhZGQgdGhlIHN5bWJvbCAibXBpIiAgCi08bGk+IFVuZGVyICJMaWJyYXJ5IHNlYXJjaCBwYXRoICgtTCkiIGFkZCB0aGUgcGF0aCB0byB0aGUgJ2xpYicgZGlyIGluIE1QSSBkaXIuCi08YnI+PGltZyBzcmM9ImltYWdlcy9saWIuZ2lmIj4KLTxsaT48Yj5NUEkgQnVpbGQgQ29tbWFuZDo8L2I+IE5vdGU6IElmIHlvdSBoYXZlIGFuIE1QSSBpbnN0YWxsZWQgdGhhdCByZXF1aXJlcyBhIGRpZmZlcmVudAotYnVpbGQgY29tbWFuZCwgc3VjaCBhcyAnbXBpY2MnIGluc3RlYWQgb2YgJ2djYycsIHNwZWNpZnkgaXQgaGVyZSBhcyB3ZWxsLgotU2VsZWN0IHRoZSBjb21waWxlciB0b29sIG9uIHRoZSBsZWZ0IGFuZCBtb2RpZnkgdGhlICdDb21tYW5kOicgdmFsdWUuCi1Zb3UgcHJvYmFibHkgYWxzbyBuZWVkIHRvIGRvIHRoZSBzYW1lIGZvciB0aGUgbGlua2VyIHRvb2wuCi08YnI+PGltZyBzcmM9ImltYWdlcy9tcGlCdWlsZENvbW1hbmQuZ2lmIj4KLTwvb2w+Ci08cD4KLQotPC9vbD4KLQotPHA+Tm93IGNvbnRpbnVlIHRvIHNldCB1cCB0byA8YSBocmVmPSJydW4uaHRtbCI+cnVuIHRoZSBNUEkgdG9vbHM8L2E+Ci0KLTxwPiZuYnNwOwotPHA+Jm5ic3A7PHA+Jm5ic3A7PHA+Jm5ic3A7Ci08cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIFRvcDwvYT4gfCA8YSBocmVmPSJ0b2MuaHRtbCI+QmFjayB0byBUYWJsZSBvZiBDb250ZW50czwvYT4KLQotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC9zZXR1cE9NUC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NldHVwT01QLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNTNmNGUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3NldHVwT01QLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPgotU2V0dXAgZm9yIFBUUCBQTERUIE9wZW5NUCBUb29scwotPC90aXRsZT4KLTwvaGVhZD4KLQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJoZWxwLmNzcyI+Ci0JPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGh1bWIuanMiPiA8L3NjcmlwdD4KLTxib2R5PgotCi08aDE+IFNldHVwIGZvciBQVFAgT3Blbk1QIFRvb2xzIDwvaDE+Ci0KLTxwPlRoZSBiYXNpYyBzZXR1cCBmb3IgdGhlIE9wZW5NUCB0b29scyBpcyB0aGUgc2FtZQotYXMgZm9yIHRoZSA8YSBocmVmPSJzZXR1cC5odG1sIj5NUEkgdG9vbHMgc2V0dXA8L2E+LgotRXNzZW50aWFsbHksIHBvaW50IENEVCBhdCB0aGUgaGVhZGVyIGZpbGVzIGFuZCBhdCB0aGUgY29tbWFuZAotdG8gY2FsbCB5b3VyIGNvbXBpbGVyIHdpdGggdGhlIE9wZW5NUCBpbmZvcm1hdGlvbi4KLTxwPlRoZSBPcGVuTVAgcHJlZmVyZW5jZXMgc2hvdWxkIGJlIHNldCB0byBwb2ludCB0byB5b3VyIE9wZW5NUCBoZWFkZXIgZmlsZQotPGJyPjxpbWcgc3JjPSJpbWFnZXMvb3Blbm1wUHJlZnMuZ2lmIj4KLTxwPlRoZSBQTERUIG5ldyBwcm9qZWN0IHdpemFyZHMgbm93IGNvbnRhaW4gd2l6YXJkcyBmb3IgY3JlYXRpbmcgT3Blbk1QIHByb2plY3RzIGFzIHdlbGwuCi08YnI+PGltZyBzcmM9ImltYWdlcy9uZXdQcm9qT3Blbk1QLmdpZiI+Ci08cD5CZSBzdXJlIG9uIHRoZSBwcm9qZWN0IHNldHRpbmdzIHBhZ2UgdGhhdCBldmVyeXRoaW5nIGlzIGZpbGxlZCBpbiwgaW5jbHVkaW5nIHRoZSBidWlsZCBjb21tYW5kLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvbmV3UHJvak9wZW5NUHNldHRpbmdzLmdpZiI+Ci0KLQotCi08YnI+WW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IGFsdGVyIHRoZSBwcm9qZWN0IGJ1aWxkIHByb3BlcnRpZXMgKGluIHRoZSBwcm9qZWN0IHByb3BlcnRpZXMpIHRvIGFkZCBjb21waWxlciBmbGFncwotc3BlY2lmaWMgdG8gT3Blbk1QIHRvIHlvdXIgcHJvamVjdC4KLTxwPk5vdGUgdGhlIGhlYWRlciBmaWxlIG5hbWUgaW4geW91ciBzeXN0ZW0sIGUuZy4gPGNvZGU+b3Blbm1wLmg8L2NvZGU+IHZzIDxjb2RlPm9tcC5oPC9jb2RlPjsgeW91IG1heSBuZWVkIHRvIGFkanVzdCB0aGUgaW5jbHVkZSBmaWxlCi1saW5lIGluIHRoZSBzYW1wbGUgc291cmNlIGZpbGUgdG8gbWF0Y2ggeW91ciBzeXN0ZW0uCi08cD5Ob3cgc2V0IHVwIHRvIDxhIGhyZWY9InJ1bk9NUC5odG1sIj5ydW4gdGhlIE9wZW5NUCBmZWF0dXJlczwvYT4uCi08cD4mbmJzcDsKLTxwPiZuYnNwOzxwPiZuYnNwOzxwPiZuYnNwOwotPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byBUb3A8L2E+IHwgPGEgaHJlZj0idG9jLmh0bWwiPkJhY2sgdG8gVGFibGUgb2YgQ29udGVudHM8L2E+Ci0KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdGh1bWIuanMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdGh1bWIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzI3ZWMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3RodW1iLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0vLyBKYXZhc2NyaXB0IHRvIHByb3ZpZGUgYSBjb252ZW5pZW50IHdheSB0byBzaG93IGEgdGh1bWJuYWlsIG9mIGFuIGltYWdlLCB3aXRoIGEgbGluayB0byB0aGUgZnVsbC1zaXplIGltYWdlCi0vLyBEZWZhdWx0IGhlaWdodCBpcyAxMjAgaWYgdGhlIHNlY29uZCBhcmcgaXMgb21pdHRlZAotLy9Ob3RlIHRoYXQgSUUgdXNlcyB0aGUgYWx0IHRhZyBmb3IgaG92ZXIgYnV0IEZpcmVmb3ggbW9yZSBjb3JyZWN0bHkgdXNlcyB0aGUgdGl0bGUgdGFnIGZvciBob3ZlciB0ZXh0LgotLy9Vc2FnZTogPHNjcmlwdD4gdGh1bWIoImltYWdlcy9mb28uZ2lmIik8L3NjcmlwdD4KLWZ1bmN0aW9uIHRodW1iKHVybCxoZWlnaHQpewotICAgaWYgKCFoZWlnaHQpIHtoZWlnaHQ9MTIwO30KLSAgIGRvY3VtZW50LndyaXRlICgiPGEgaHJlZj0nIit1cmwrIic+PGltZyBzcmM9JyIrdXJsKyInIGhlaWdodD0iK2hlaWdodCsiIHRpdGxlPSdDbGljayBmb3IgYSBmdWxsLXNpemUgaW1hZ2UnIGFsdD0nQ2xpY2sgZm9yIGEgZnVsbC1zaXplIGltYWdlJz48L2E+Iik7Ci19Ci0vLyBzaW1wbGUgaW1iZWRkaW5nIG9mIGltYWdlLCBpbiBkZWZhdWx0IGZ1bGwgc2l6ZSwgd2l0aCBicmVhayBwcmVjZWVkaW5nCi0vLyAoZWFzeSB0byByZXBsYWNlIHRoZSBhYm92ZSB3aXRoIHRoaXMgb25lKQotLy9Vc2FnZTogPHNjcmlwdD4gZnVsbCgiaW1hZ2VzL2Zvby5naWYiKTwvc2NyaXB0PgotZnVuY3Rpb24gZnVsbCh1cmwpewotICAgZG9jdW1lbnQud3JpdGUgKCI8aW1nIHNyYz0nIit1cmwrIic+Iik7Ci19Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90b2MuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90b2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVkODE2OS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4KLVBUUCBQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyAKLTwvdGl0bGU+Ci0JPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iaGVscC5jc3MiPgotCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRodW1iLmpzIj4gPC9zY3JpcHQ+Ci0JPC9oZWFkPgotPGJvZHk+Ci08aDEgaWQ9InRvcCI+IDxpbWcgc3JjPSJpbWFnZXMvYW5hbHl6ZS5naWYiPiBQVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgPC9oMT4KLTxwPlJlbGVhc2UgMi4wCi08cD5UaGUgUFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIChQTERUKSBwcm92aWRlCi10b29scyB0byBhaWQgaW4gTVBJIFByb2dyYW1taW5nIGFuZCBvdGhlciBwYXJhbGxlbCBsYW5ndWFnZXMgYW5kIHRvb2xzLgotPGJyPkZlYXR1cmVzIG9mIHRoZSBQTERUIGluY2x1ZGU6Ci08dWw+Ci08bGk+QW5hbHlzaXMgb2YgQyBhbmQgQysrIGNvZGUgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbiBvZiBNUEkgYW5kIE9wZW5NUCBBcnRpZmFjdHMKLTxsaT4iQXJ0aWZhY3QgVmlldyIgaW5kaWNhdGVzIGxvY2F0aW9ucyBvZiBBcnRpZmFjdHMgZm91bmQKLWluIHNvdXJjZSBjb2RlCi08bGk+TmF2aWdhdGlvbiB0byBzb3VyY2UgY29kZSBsb2NhdGlvbiBvZiBhcnRpZmFjdHMKLTxsaT5Db250ZW50IGFzc2lzdCB2aWEgQ250bC1TcGFjZSBjb21wbGV0ZXMgQVBJIG5hbWVzCi13aGlsZSB0eXBpbmcsIGFuZCBmaWxscyBpbiBhcmd1bWVudHMgdG9vLgotPGxpPkhvdmVyIGhlbHAgc2hvd3MgQVBJIG5hbWVzLCBhcmd1bWVudHMsIGFuZCBkZXNjcmlwdGlvbnMuCi08bGk+UmVmZXJlbmNlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBNUEkgYW5kIE9wZW5NUCBjYWxscyB2aWEgRjEgKENudGwtRjEgb24gTGludXg7IEhlbHAga2V5IG9uIE1hYykKLQotPGxpPk9wZW5NUCBwcm9ibGVtcyB2aWV3IG9mIGNvbW1vbiBlcnJvcnMsIE9wZW5NUCAic2hvdyAjcHJhZ21hIHJlZ2lvbiIgYWN0aW9uLAotT3Blbk1QICJTaG93IENvbmN1cnJlbmN5IiBhY3Rpb24uCi08bGk+Q0RUICJOZXcgQyBQcm9qZWN0IiB3aXphcmQgaW5jbHVkZXMgYSAgd2l6YXJkIHBhZ2UgdGhhdCBjYW4gCi1hdXRvbWF0aWNhbGx5IGFkZCBpbiB0aGUgaW5jbHVkZSBwYXRocyBldGMuIGZvciBNUEkgcHJvamVjdHMuCi0KLTxwPlRoZSBuZXdlc3QgZmVhdHVyZXMgKDIuMCkgaW5jbHVkZToKLTxsaT5NUEkgQmFycmllciBBbmFseXNpcyBkZXRlY3RzIHBvdGVudGlhbCBkZWFkbG9ja3MgaW4gTVBJIGFwcGxpY2F0aW9ucywKLWFuZCBzaG93cyBiYXJyaWVyIG1hdGNoZXMsIGJhcnJpZXIgZXJyb3JzLCBhbmQgcGF0aHMgb2YgYWxsIGJhcnJpZXIKLW1hdGNoaW5nIHNldHMuICBJbmNsdWRlcyBkZXRlY3Rpb25zIGFjcm9zcyBtdWx0aXBsZSBmdW5jdGlvbnMgYW5kIHNvdXJjZSBmaWxlcy4KLTxsaT5OZXcgcHJvamVjdCB3aXphcmQgY2FuIGluY2x1ZGUgc2FtcGxlIE1QSSBhbmQgT3Blbk1QIHNvdXJjZSBmaWxlcyAKLWFuZCBzZXQgdXAgdGhlIHByb2plY3RzIHRvIHNhdmUgdGltZS4KLTxsaT5OZXcgd2VsY29tZSBwYWdlcyBpbnRyb2R1Y2UgbmV3IEVjbGlwc2UgdXNlcnMgdG8gUExEVC4KLTxsaT5OZXcgc2luZ2xlLW1lbnUgVUkgZm9yIFBMRFQgYW5hbHlzaXMgZmVhdHVyZXMgc2ltcGxpZmllcyB0aGUgZWRpdG9yIHRvb2xiYXIuCi08YnI+PGltZyBzcmM9ImltYWdlcy9wbGR0LW1lbnUuZ2lmIj4KLTwvdWw+Ci1Gb3IgbW9yZSBkZXRhaWxzLCBzZWUgPGEgaHJlZj0id2hhdHNuZXcuaHRtbCI+V2hhdCdzIG5ldzwvYT4KLTxoMj4KLVByZS1yZXF1aXNpdGVzOgotPC9oMj4KLTxwPlBMRFQgMi4wIHJlcXVpcmVzIHRoZSBiYXNlIEVjbGlwc2UgcGxhdGZvcm0sIHRoZSBDRFQsIGFuZCBNUEkgYW5kL29yIE9wZW5NUC4KLTx1bD4KLTxsaT48Yj5FY2xpcHNlPC9iPiBwbGF0Zm9ybTogVmVyc2lvbiAgMy4zIG9yIGxhdGVyCi08bGk+PGI+Q0RUOjwvYj4KLVZlcnNpb24gNC4wLjIgb3IgbGF0ZXIgZm9yIEMvQysrIGZpbGVzLiAgKFdoZXJldmVyIENEVCBpcyBtZW50aW9uZWQsIFBob3RyYW4gcHJvamVjdHMgYW5kIGZpbGVzLAotZm9yIEMvQysrLCBpZiBiYXNlZCBvbiBFY2xpcHNlIDMuMy9DRFQgNC4wLngsIHNob3VsZCBhbHNvIHdvcmssIGJ1dCBub3QgbXVjaCB0ZXN0aW5nIGhhcyB5ZXQgYmVlbiBkb25lLikKLQotPGxpPjxiPk1QSTo8L2I+Ci1HZXQgTVBJIGFuZCBpdHMgaGVhZGVyIGZpbGUsIGEgdmVyc2lvbiB0aGF0IHJ1bnMgb24KLXlvdXIgc3lzdGVtIChlLmcuIE9wZW5NUEkgZm9yIExpbnV4L01hYzsgTVBJQ0gyIGZvciB3aW4zMikKLTx1bD4KLTxsaT5NYWtlIHN1cmUgaXQncyBpbiB5b3VyIHBhdGggCi08bGk+WW91IG1heSBuZWVkIHRvIGluc3RhbGwgaXQgaW4gYSBkaXJlY3Rvcnkgc3VjaCB0aGF0IHRoZXJlIGFyZSBubyBzcGFjZXMgaW4gdGhlIHBhdGgKLSh0aGF0IGlzLCBub3QgaW4gJ1Byb2dyYW0gRmlsZXMnIGV0Yy4pCi08L3VsPgotPGxpPjxiPk9wZW5NUDo8L2I+Ci1UaGUgUFRQIFBMRFQgT3Blbk1QIHRvb2xzIGFsc28gIG5lZWQgdGhlIE9wZW5NUCBoZWFkZXIgZmlsZSwgc2ltaWxhciB0byB0aGUgTVBJCi1wcmUtcmVxdWlzaXRlcyBhYm92ZS4KLQotPC91bD4KLTxwPk5vdGUgdGhhdCA8aT5ydW5uaW5nPC9pPiBNUEkgb3IgT3Blbk1QIGlzIG5vdCByZWFsbHkgcmVxdWlyZWQgZm9yIHRoZSBQTERUCi10byBmdW5jdGlvbiBhbmQgcHJvdmlkZSBhbmFseXNpcyBhbmQgaGVscCB3aXRoIE1QSSBhbmQgT3Blbk1QIGRldmVsb3BtZW50LgotSnVzdCB0aGUgaGVhZGVyIGZpbGVzIGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBrbm93IHdoaWNoICJhcnRpZmFjdHMiIHNob3VsZAotYmUgbG9jYXRlZC4KLTxwPlRvIHJ1biB0aGUgY29yZSBwYXJ0IG9mIFBUUCAoUGFyYWxsZWwgVG9vbHMgUGxhdGZvcm0sIDxhIGhyZWY9Imh0dHA6Ly9lY2xpcHNlLm9yZy9wdHAiPmh0dHA6Ly9lY2xpcHNlLm9yZy9wdHA8L2E+LAotdG8gcnVuIGFuZCBkZWJ1ZyBwYXJhbGxlbCBwcm9ncmFtcyBvbiB0aGUgbG9jYWwgbWFjaGluZSksIHlvdSBuZWVkIHdoYXRldmVyIHJ1bnRpbWUgaXQgcmVxdWlyZXMuICBDdXJyZW50bHkgCi0oMi4wLCBKYW51YXJ5IDIwMDgpIHRoaXMgaXMgT3Blbk1QSSwgd2hpY2ggaXMgYXZhaWxhYmxlIGZvciBMaW51eCBhbmQgTWFjIE9ubHkuICAKLUJ1dCBmb3IgUExEVCwgdGhpcyBpcyBub3QgcmVxdWlyZWQsIGFuZCBQTERUIHdpbGwgd29yawotb24gV2luZG93cyBhcyB3ZWxsLgotCi0KLTxoMj5IZWxwIFRvcGljczwvaDI+Ci08cD48YSBocmVmPSJodHRwOi8vd2lraS5lY2xpcHNlLm9yZy9QVFAvcmVsZWFzZV9ub3Rlcy8yLjAiPkJhc2ljIGluc3RydWN0aW9ucyBvbiBpbnN0YWxsaW5nIEVjbGlwc2UsIENEVCwgUFRQLCBhbmQgUExEVDwvYT4KLWZyb20gdGhlIEVjbGlwc2UgUFRQIHdlYiBzaXRlLgotPHA+VGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbnMgZGVzY3JpYmUgc2V0dXAgYW5kIHJ1biBpbmZvcm1hdGlvbi4KLTxoMz5NUEk8L2gzPgotPHVsPjxsaT4KLTxhIGhyZWY9InNldHVwLmh0bWwiPlNldHVwIGZvciBidWlsZGluZyBhbmQgcnVubmluZyBQVFAgTVBJIFRvb2xzPC9hPgotPC9saT4KLTxsaT4KLTxhIGhyZWY9InJ1bi5odG1sIj5SdW5uaW5nIFBUUCBNUEkgVG9vbHM8L2E+PC9saT4KLTxsaT4KLTxhIGhyZWY9ImJhcnJpZXIuaHRtbCI+TVBJIEJhcnJpZXIgQW5hbHlzaXM8L2E+PC9saT4KLTwvdWw+Ci08cD4KLTxoMz5PcGVuTVA8L2gzPgotPHVsPjxsaT4KLTxhIGhyZWY9InNldHVwT01QLmh0bWwiPlNldHVwIGZvciBidWlsZGluZyBhbmQgcnVubmluZyBQVFAgT3Blbk1QIFRvb2xzPC9hPgotPC9saT4KLTxsaT4KLTxhIGhyZWY9InJ1bk9NUC5odG1sIj5SdW5uaW5nIFBUUCBPcGVuTVAgVG9vbHM8L2E+PC9saT4KLTxsaT4KLTxhIGhyZWY9Im9wZW5NUGV4dHJhLmh0bWwiPkFkZGl0aW9uYWwgT3Blbk1QIFRvb2xzIDwvYT4KLTwvbGk+Ci08L3VsPgotPGEgaHJlZj0id2hhdHNuZXcuaHRtbCI+TmV3IGFuZCBOb3Rld29ydGh5IDwvYT48L2xpPiAtIHdoYXQncyBuZXcgaW4gUExEVCAyLjAKLTxoMz5NaXNwbGFjZWQgaWNvbj88L2gzPgotPHA+Tm90ZTogaWYsIGFmdGVyIGluc3RhbGxpbmcgUExEVCwgdGhlIFBMRFQgbWVudSBpY29uIGlzIG1pc3BsYWNlZCBvdmVyIG9uIHRoZSBsZWZ0IHNpZGUKLW9mIHRoZSBFY2xpcHNlIHRvb2xiYXI6Ci08YnI+PGltZyBzcmM9ImltYWdlcy9wbGR0SWNvbk1pc3BsYWNlZC5naWYiPgotPGJyPllvdSBjYW4gcHV0IGl0IGluIGl0cyBwcm9wZXIgcGxhY2UgYnkgc2VsZWN0aW5nIFdpbmRvdyA+IFJlc2V0IFBlcnNwZWN0aXZlLgotPHA+Jm5ic3A7Ci08cD4mbmJzcDsKLTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gVG9wPC9hPiB8IDxhIGhyZWY9InRvYy5odG1sIj5CYWNrIHRvIFRhYmxlIG9mIENvbnRlbnRzPC9hPgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90cmFjaW5nLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvdHJhY2luZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjg2MWQ4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaHRtbC90cmFjaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPgotUFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIC0gVHJhY2luZwotPC90aXRsZT4KLQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJoZWxwLmNzcyI+Ci0JPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idGh1bWIuanMiPiA8L3NjcmlwdD4KLQk8L2hlYWQ+Ci08Ym9keT4KLTxoMT4gPGltZyBzcmM9ImltYWdlcy9hbmFseXplLmdpZiI+IFBMRFQgVHJhY2luZzwvaDE+Ci0KLTxsaT5UcmFjaW5nIGlzIGVuYWJsZWQgaW4gUExEVC4gIFRvIHVzZSB0aGlzOgotPHA+Ci1DcmVhdGUgYSBmaWxlICIub3B0aW9ucyIgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHlvdXIgZWNsaXBzZSBleGVjdXRhYmxlLgotUHV0IHRoaXMgaW4gdGhlIGZpbGU6Ci08cHJlPgotICAgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uL2RlYnVnID0gdHJ1ZQotICAgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uL2RlYnVnL3BsZHRUcmFjZSA9IHRydWUKLTwvcHJlPgotVGhlbiBsYXVuY2ggZWNsaXBzZSBpbiBkZWJ1ZyBtb2RlIHVzaW5nIHRoZSAtZGVidWcgb3B0aW9uLCBhbmQgbWlycm9yIHRoZQotQ29uc29sZSB2aWV3IG91dHB1dAotdG8gdGhlIGNvbW1hbmQgbGluZSBjb25zb2xlIHVzaW5nIHRoZSAtY29uc29sZUxvZyBvcHRpb24uICAoTWF5YmUgTGludXggYWxyZWFkeQotc3BpdHMgb3V0IHRoZSBjb25zb2xlLCBub3Qgc3VyZS4pCi08cHJlPgotICAgZWNsaXBzZSAtZGVidWcgLWNvbnNvbGVMb2cKLTwvcHJlPgotV2hlbiB5b3UgcnVuIHdpdGggdGhpcyB0cmFjaW5nIGVuYWJsZWQsICBpdCB3aWxsIHByaW50IG91dCBhIGJ1bmNoIG9mCi10cmFjZSBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZS4gIEF0IGxlYXN0IE1QSSBhcnRpZmFjdCBhbmFseXNpcwotaGFzIGJlZW4gZW5hYmxlZCBmb3IgdXNlci1kaXJlY3RlZCB0cmFjaW5nLgotCi0gCi08cD5CYWNrIHRvIDxhIGhyZWY9IndoYXRzbmV3Lmh0bWwiPldoYXQncyBOZXc8L2E+IHBhZ2UuCi08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9odG1sL3doYXRzbmV3Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvd2hhdHNuZXcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFhNTI1YS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2h0bWwvd2hhdHNuZXcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+Ci1QVFAgUGFyYWxsZWwgTGFuZ3VhZ2UgRGV2ZWxvcG1lbnQgVG9vbHMgCi08L3RpdGxlPgotCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImhlbHAuY3NzIj4KLQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0aHVtYi5qcyI+IDwvc2NyaXB0PgotCTwvaGVhZD4KLTxib2R5PgotPGgxPiA8aW1nIHNyYz0iaW1hZ2VzL2FuYWx5emUuZ2lmIj4gUExEVCAtIE5ldyBhbmQgTm90ZXdvcnRoeSA8L2gxPgotPHA+V2hhdCdzIG5ldyBpbiAyLjEKLTx1bD4KLTxsaT5NUEkgQ29kZSBUZW1wbGF0ZXMKLTxsaT5VUEMgYXNzaXN0YW5jZSB0b29scwotPGxpPkR5bmFtaWMgdG9vbCBleGFtcGxlIG9mIFBlcmZvcm1hbmNlIFRvb2xzIGZyYW1ld29yayBbdGJkXS4uLgotPC91bD4KLQotPHA+V2hhdCdzIG5ldyBpbiAyLjAKLTx1bD4KLTxsaT5OZXcgc2luZ2xlLW1lbnUgVUkgZm9yIFBMRFQgYW5hbHlzaXMgZmVhdHVyZXMgc2ltcGxpZmllcyB0aGUgZWRpdG9yIHRvb2xiYXIuCi08YnI+PHNjcmlwdD4gZnVsbCgiaW1hZ2VzL3BsZHQtbWVudS5naWYiKTwvc2NyaXB0PgotPGJyPiZuYnNwOwotPGxpPk1QSSBCYXJyaWVyIEFuYWx5c2lzIGRldGVjdHMgcG90ZW50aWFsIGRlYWRsb2NrcyBpbiBNUEkgYXBwbGljYXRpb25zLAotYW5kIHNob3dzIGJhcnJpZXIgbWF0Y2hlcywgYmFycmllciBlcnJvcnMsIGFuZCBwYXRocyBvZiBhbGwgYmFycmllcgotbWF0Y2hpbmcgc2V0cy4gIEluY2x1ZGVzIGRldGVjdGlvbnMgYWNyb3NzIG11bHRpcGxlIGZ1bmN0aW9ucyBhbmQgc291cmNlIGZpbGVzLgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvYmFycmllck1hdGNoZXMuZ2lmIj4KLTxicj4mbmJzcDsKLTxicj48aW1nIHNyYz0iaW1hZ2VzL2JhcnJpZXJFcnJvcnMuZ2lmIj4KLTxicj4mbmJzcDsKLTxicj5Gb3IgZGV0YWlscywgc2VlIDxhIGhyZWY9ImJhcnJpZXIuaHRtbCI+TVBJIEJhcnJpZXIgQW5hbHlzaXM8L2E+LgotPGJyPiZuYnNwOwotPGxpPk5ldyBwcm9qZWN0IHRlbXBsYXRlcyBhbGxvdyBlYXN5IGNyZWF0aW9uIG9mIE1QSSA8aT5hbmQgT3Blbk1QPC9pPiBwcm9qZWN0cy4KLVNhbXBsZSBzb3VyY2UgZmlsZXMgY2FuIGJlIGFkZGVkIGR1cmluZyBwcm9qZWN0IGNyZWF0aW9uIGFzIHdlbGwuCi08YnI+PGltZyBzcmM9ImltYWdlcy9uZXdQcm9qZWN0V2l6YXJkLmdpZiI+Ci08YnI+Jm5ic3A7Ci08bGk+TVBJIHByb2plY3Qgc2V0dGluZ3MgcGFnZSBjYW4gYWRkIGluY2x1ZGUgZmlsZXMsIGJ1aWxkIGNvbW1hbmQsIGV0Yy4gdG8gbmV3IE1QSSBwcm9qZWN0cwotPGJyPjxpbWcgc3JjPSJpbWFnZXMvbXBpUHJvamVjdFNldHRpbmdzLmdpZiI+Ci08YnI+Jm5ic3A7Ci08bGk+SWYgQ0RUIHZlcnNpb24gaXMgaW5jb3JyZWN0ICghPSA0LngpIGFuIGVycm9yIGRpYWxvZyBjb21wbGFpbnMuCi08bGk+V2VsY29tZSBwYWdlIGluY2x1ZGVzIHBvaW50ZXJzIHRvIGluZm9ybWF0aW9uIGZvciBQTERULgotPGJyPjxpbWcgc3JjPSJpbWFnZXMvd2VsY29tZU92ZXJ2aWV3LmdpZiI+Ci08YnI+PGltZyBzcmM9ImltYWdlcy93ZWxjb21lQy1wbGR0LmdpZiI+Ci08YnI+Jm5ic3A7Ci08bGk+QXJ0aWZhY3QgbWFya2VycyBjYW4gYmUgcmVtb3ZlZCBkaXJlY3RseSBmcm9tIHRoZSBhcnRpZmFjdHMgdmlldy4KLTxicj48aW1nIHNyYz0iaW1hZ2VzL3JlbW92ZU1hcmtlcnMuZ2lmIj4KLTxicj4mbmJzcDsKLTxsaT5UcmFjaW5nIGlzIGVuYWJsZWQuICA8YSBocmVmPSJ0cmFjaW5nLmh0bWwiPlNlZSB0cmFjaW5nIGluc3RydWN0aW9ucyBmb3IgaG93IHRvIHR1cm4gdGhpcyBvbi48L2E+Ci0KLQotCi08L3VsPgotPHA+Jm5ic3A7Ci08cD48YSBocmVmPSJ0b2MuaHRtbCI+QmFjayB0byBUYWJsZSBvZiBDb250ZW50czwvYT4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy8uY3ZzaWdub3JlIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3MvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1ZThiYS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGh1bWJzLmRiCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy9jZHRfaWNvbl9jcmVhdGVfY3Byb2plY3QucG5nIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3MvY2R0X2ljb25fY3JlYXRlX2Nwcm9qZWN0LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1MTJkNy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9ncmFwaGljcy9jZHRfaWNvbl9jcmVhdGVfY3Byb2plY3QucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlLmdpZiBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaW50cm8vY3NzL2dyYXBoaWNzL3NhbXBsZS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZjFmZmMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaW50cm8vY3NzL2dyYXBoaWNzL3NhbXBsZV9ob3YuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlX2hvdi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NzQxNjQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3MvZ3JhcGhpY3Mvc2FtcGxlX2hvdi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9zYW1wbGUuY3NzIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9jc3Mvc2FtcGxlLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EyYTg0My4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL2Nzcy9zYW1wbGUuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLWEjb3JnZWNsaXBzZXB0cHBsZHR3ZWxjb21lLWludHJvTGluayBpbWcgeyBiYWNrZ3JvdW5kLWltYWdlIDogdXJsKGdyYXBoaWNzL3NhbXBsZS5naWYpOyB9Ci1hI29yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0xpbms6aG92ZXIgaW1nIHsgYmFja2dyb3VuZC1pbWFnZSA6IHVybChncmFwaGljcy9zYW1wbGVfaG92LmdpZik7IH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRPdmVydmlldy54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRPdmVydmlldy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNmNmOWMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0T3ZlcnZpZXcueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+Ci08aW50cm9Db250ZW50PgotICAJPGV4dGVuc2lvbkNvbnRlbnQgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0V4dGVuc2lvbiIgc3R5bGU9ImNzcy9zYW1wbGUuY3NzIiAKLSAgCW5hbWU9IlBMRFQgV2VsY29tZSBFeHRlbnNpb24iIHBhdGg9Im92ZXJ2aWV3L0AiPgotCQk8Z3JvdXAgc3R5bGUtaWQ9ImNvbnRlbnQtZ3JvdXAiIGlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9MaW5rLWdyb3VwIj4KLQkJCTxsaW5rIGxhYmVsPSJQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyIgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0xpbmsiIHN0eWxlLWlkPSJjb250ZW50LWxpbmsiCi0gICAgICAgCQkgICB1cmw9Imh0dHA6Ly9vcmcuZWNsaXBzZS51aS5pbnRyby9zaG93SGVscFRvcGljP2lkPS9vcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwL2h0bWwvdG9jLmh0bWwiID4KLSAgICAgICAJCTx0ZXh0PkxlYXJuIG1vcmUgYWJvdXQgUExEVCwgdG8gaGVscCBpbiBkZXZlbG9waW5nIE1QSSBhbmQgT3Blbk1QIHByb2dyYW1zLjwvdGV4dD4KLSAgICAgICAgICAJPC9saW5rPgotICAgICAgIAk8L2dyb3VwPgotICAJPC9leHRlbnNpb25Db250ZW50PgotPC9pbnRyb0NvbnRlbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0VHV0b3JpYWwueG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0VHV0b3JpYWwueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDBjNjQzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvaW50cm8vcGxkdFR1dG9yaWFsLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/PgotPGludHJvQ29udGVudD4KLSAgCTxleHRlbnNpb25Db250ZW50IGlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9FeHRlbnNpb24iIHN0eWxlPSJjc3Mvc2FtcGxlLmNzcyIgbmFtZT0iU2FtcGxlIEV4dGVuc2lvbiIgcGF0aD0idHV0b3JpYWxzL0AiPgotCQk8Z3JvdXAgc3R5bGUtaWQ9ImNvbnRlbnQtZ3JvdXAiIGlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9MaW5rLWdyb3VwIj4KLSAgICAgICAJCTxsaW5rIGxhYmVsPSJQYXJhbGxlbCBMYW5ndWFnZSBEZXZlbG9wbWVudCBUb29scyIgCi0gICAgICAgCQl1cmw9Imh0dHA6Ly9vcmcuZWNsaXBzZS51aS5pbnRyby9zaG93SGVscFRvcGljP2lkPS9vcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwL2h0bWwvc2V0dXAuaHRtbCIgCi0gICAgICAgCQlpZD0ib3JnZWNsaXBzZXB0cHBsZHR3ZWxjb21lLWludHJvTGluayIgc3R5bGUtaWQ9ImNvbnRlbnQtbGluayI+Ci0gICAgICAgICAgCQk8dGV4dD5MZWFybiBob3cgdG8gdXNlIHRoZSBkZXZlbG9wbWVudCB0b29scyBmb3IgcGFyYWxsZWwgcHJvZ3JhbW1pbmcgaW4gUExEVC48L3RleHQ+Ci0gICAgICAgCQk8L2xpbms+Ci0gICAgICAgCTwvZ3JvdXA+Ci0gIAk8L2V4dGVuc2lvbkNvbnRlbnQ+Ci08L2ludHJvQ29udGVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRXaGF0c25ldy54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL2ludHJvL3BsZHRXaGF0c25ldy54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkODk0ZWYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9pbnRyby9wbGR0V2hhdHNuZXcueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+Ci08aW50cm9Db250ZW50PgotICAJPGV4dGVuc2lvbkNvbnRlbnQgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0V4dGVuc2lvbiIgc3R5bGU9ImNzcy9zYW1wbGUuY3NzIiAKLSAgCW5hbWU9IlBMRFQgd2hhdHMgbmV3IEV4dGVuc2lvbiIgcGF0aD0id2hhdHNuZXcvQCI+Ci0JCTxncm91cCBzdHlsZS1pZD0iY29udGVudC1ncm91cCIgaWQ9Im9yZ2VjbGlwc2VwdHBwbGR0d2VsY29tZS1pbnRyb0xpbmstZ3JvdXAiPgotICAgICAgIAkJPGxpbmsgbGFiZWw9IlBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIiAKLSAgICAgICAJCXVybD0iaHR0cDovL29yZy5lY2xpcHNlLnVpLmludHJvL3Nob3dIZWxwVG9waWM/aWQ9L29yZy5lY2xpcHNlLnB0cC5wbGR0LmhlbHAvaHRtbC93aGF0c25ldy5odG1sIiAKLSAgICAgICAJCWlkPSJvcmdlY2xpcHNlcHRwcGxkdHdlbGNvbWUtaW50cm9MaW5rIiBzdHlsZS1pZD0iY29udGVudC1saW5rIj4KLSAgICAgICAgICAJCTx0ZXh0PkZpbmQgb3V0IHRoZSBuZXcgZmVhdHVyZXMgaW4gUExEVCAyLjAuPC90ZXh0PgotICAgICAgIAkJPC9saW5rPgotICAgICAgIAk8L2dyb3VwPgotICAJPC9leHRlbnNpb25Db250ZW50PgotPC9pbnRyb0NvbnRlbnQ+Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvcGx1Z2luLnhtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvcGx1Z2luLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJiZDQxNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotCi0KLQotPHBsdWdpbj4KLQotICAgICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuaGVscC50b2MiPgotICAgICAgPHRvYwotICAgICAgICAgICAgZmlsZT0idG9jLnhtbCIKLSAgICAgICAgICAgIHByaW1hcnk9InRydWUiLz4KLSAgICAgIDxpbmRleCBwYXRoPSJvcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwLmluZGV4MSIvPgotICAgPC9leHRlbnNpb24+Ci0KLSAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmludHJvLmNvbmZpZ0V4dGVuc2lvbiI+Ci0gICAgICA8Y29uZmlnRXh0ZW5zaW9uCi0gICAgICAgICAgICBjb250ZW50PSJpbnRyby9wbGR0T3ZlcnZpZXcueG1sIgotICAgICAgICAgICAgY29uZmlnSWQ9Im9yZy5lY2xpcHNlLnVpLmludHJvLnVuaXZlcnNhbENvbmZpZyI+Ci0gICAgICA8L2NvbmZpZ0V4dGVuc2lvbj4KLSAgIAotICAgICAgPGNvbmZpZ0V4dGVuc2lvbgotICAgICAgICAgICAgY29uZmlnSWQ9Im9yZy5lY2xpcHNlLnVpLmludHJvLnVuaXZlcnNhbENvbmZpZyIKLSAgICAgICAgICAgIGNvbnRlbnQ9ImludHJvL3BsZHRXaGF0c25ldy54bWwiPgotICAgICAgPC9jb25maWdFeHRlbnNpb24+Ci0gIAotICAgICAgPGNvbmZpZ0V4dGVuc2lvbgotICAgICAgICAgICAgY29uZmlnSWQ9Im9yZy5lY2xpcHNlLnVpLmludHJvLnVuaXZlcnNhbENvbmZpZyIKLSAgICAgICAgICAgIGNvbnRlbnQ9ImludHJvL3BsZHRUdXRvcmlhbC54bWwiPgotICAgICAgPC9jb25maWdFeHRlbnNpb24+Ci0gICA8L2V4dGVuc2lvbj4KLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC5kb2MudXNlci9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvaGVscC9IZWxwUGx1Z2luLmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9oZWxwL0hlbHBQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkZDEwNC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9oZWxwL0hlbHBQbHVnaW4uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA1IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQuaGVscDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi4qOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsKLWltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsKLWltcG9ydCBqYXZhLnV0aWwuKjsKLQotLyoqCi0gKiBUaGUgbWFpbiBwbHVnaW4gY2xhc3MgdG8gYmUgdXNlZCBpbiB0aGUgZGVza3RvcC4KLSAqLwotcHVibGljIGNsYXNzIEhlbHBQbHVnaW4gZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luCi17Ci0gICAgLyoqIFRoZSBzaGFyZWQgaW5zdGFuY2UuICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgSGVscFBsdWdpbiBwbHVnaW47Ci0gICAgLyoqIFJlc291cmNlIGJ1bmRsZSAqLwotICAgIHByaXZhdGUgUmVzb3VyY2VCdW5kbGUgICAgcmVzb3VyY2VCdW5kbGU7Ci0gICAgLyoqIHRoZSBwbHVnLWluIElEICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEPSJvcmcuZWNsaXBzZS5wdHAucGxkdC5oZWxwIjsKLQotICAgIC8qKgotICAgICAqIFRoZSBjb25zdHJ1Y3Rvci4KLSAgICAgKi8KLSAgICBwdWJsaWMgSGVscFBsdWdpbigpCi0gICAgewotICAgICAgICBzdXBlcigpOwotICAgICAgICBwbHVnaW4gPSB0aGlzOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB1cG9uIHBsdWctaW4gYWN0aXZhdGlvbgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbgotICAgIHsKLSAgICAgICAgc3VwZXIuc3RhcnQoY29udGV4dCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHBsdWctaW4gaXMgc3RvcHBlZAotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uCi0gICAgewotICAgICAgICBzdXBlci5zdG9wKGNvbnRleHQpOwotICAgICAgICBwbHVnaW4gPSBudWxsOwotICAgICAgICByZXNvdXJjZUJ1bmRsZSA9IG51bGw7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgSGVscFBsdWdpbiBnZXREZWZhdWx0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbHVnaW47Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgc3RyaW5nIGZyb20gdGhlIHBsdWdpbidzIHJlc291cmNlIGJ1bmRsZSwgb3IgJ2tleScgaWYgbm90IGZvdW5kLgotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFJlc291cmNlU3RyaW5nKFN0cmluZyBrZXkpCi0gICAgewotICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBIZWxwUGx1Z2luLmdldERlZmF1bHQoKS5nZXRSZXNvdXJjZUJ1bmRsZSgpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIChidW5kbGUgIT0gbnVsbCkgPyBidW5kbGUuZ2V0U3RyaW5nKGtleSkgOiBrZXk7Ci0gICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgcGx1Z2luJ3MgcmVzb3VyY2UgYnVuZGxlLAotICAgICAqLwotICAgIHB1YmxpYyBSZXNvdXJjZUJ1bmRsZSBnZXRSZXNvdXJjZUJ1bmRsZSgpCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKHJlc291cmNlQnVuZGxlID09IG51bGwpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VCdW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoIm9yZy5lY2xpcHNlLnB0cC5wbGR0LmhlbHAuSGVscFBsdWdpblJlc291cmNlcyIpOwotICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24geCkgewotICAgICAgICAgICAgcmVzb3VyY2VCdW5kbGUgPSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXNvdXJjZUJ1bmRsZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBpbWFnZSBmaWxlIGF0IHRoZSBnaXZlbiBwbHVnLWluIHJlbGF0aXZlIHBhdGguCi0gICAgICogCi0gICAgICogQHBhcmFtIHBhdGggdGhlIHBhdGgKLSAgICAgKiBAcmV0dXJuIHRoZSBpbWFnZSBkZXNjcmlwdG9yCi0gICAgICovCi0gICAgcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBwYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEFic3RyYWN0VUlQbHVnaW4uaW1hZ2VEZXNjcmlwdG9yRnJvbVBsdWdpbihQTFVHSU5fSUQsIHBhdGgpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvdG9jLnhtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQuZG9jLnVzZXIvdG9jLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkzZmNiZC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LmRvYy51c2VyL3RvYy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9OTFMgVFlQRT0ib3JnLmVjbGlwc2UuaGVscC50b2MiPz4KLQotPHRvYyBsYWJlbD0iUFRQIFBhcmFsbGVsIExhbmd1YWdlIERldmVsb3BtZW50IFRvb2xzIiB0b3BpYz0iaHRtbC90b2MuaHRtbCI+Ci0KLSAgICAgIDx0b3BpYyBsYWJlbD0iU2V0dXAgZm9yIFBUUCBNUEkgdG9vbHMiICBocmVmPSJodG1sL3NldHVwLmh0bWwiLz4gCi0gICAgICA8dG9waWMgbGFiZWw9IlJ1bm5pbmcgUFRQIE1QSSB0b29scyIgIGhyZWY9Imh0bWwvcnVuLmh0bWwiLz4gCi0gICAgICAgICAgIDx0b3BpYyBsYWJlbD0iU2V0dXAgZm9yIFBUUCBPcGVuTVAgdG9vbHMiICBocmVmPSJodG1sL3NldHVwT01QLmh0bWwiLz4gCi0gICAgICA8dG9waWMgbGFiZWw9IlJ1bm5pbmcgUFRQIE9wZW5NUCB0b29scyIgIGhyZWY9Imh0bWwvcnVuT01QLmh0bWwiLz4gCi0gICA8dG9waWMgbGFiZWw9Ik1QSSBCYXJyaWVyIEFuYWx5c2lzIiAgaHJlZj0iaHRtbC9iYXJyaWVyLmh0bWwiLz4gCi0gICA8dG9waWMgbGFiZWw9Ik5ldyBhbmQgTm90ZXdvcnRoeSIgIGhyZWY9Imh0bWwvd2hhdHNuZXcuaHRtbCIvPgotPC90b2M+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy8uY2xhc3NwYXRoIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLmNsYXNzcGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxYzhmMi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy8uY2xhc3NwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGNsYXNzcGF0aD4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4KLQk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4KLTwvY2xhc3NwYXRoPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLmN2c2lnbm9yZSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5jdnNpZ25vcmUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYzhkZDEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLmN2c2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYmluCi1pY29ucy1vbGQKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLy5wcm9qZWN0IGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLnByb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNDkzNjcuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucGxkdC51cGM8L25hbWU+Ci0JPGNvbW1lbnQ+PC9jb21tZW50PgotCTxwcm9qZWN0cz4KLQk8L3Byb2plY3RzPgotCTxidWlsZFNwZWM+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KLQkJCTxhcmd1bWVudHM+Ci0JCQk8L2FyZ3VtZW50cz4KLQkJPC9idWlsZENvbW1hbmQ+Ci0JCTxidWlsZENvbW1hbmQ+Ci0JCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQk8L2J1aWxkU3BlYz4KLQk8bmF0dXJlcz4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+Ci0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgotCTwvbmF0dXJlcz4KLTwvcHJvamVjdERlc2NyaXB0aW9uPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM0NGEwOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9NRVRBLUlORi9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU1hbmlmZXN0LVZlcnNpb246IDEuMAotQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMgotQnVuZGxlLU5hbWU6IFVQQyBzdXBwb3J0IGZvciBQTERUCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGM7c2luZ2xldG9uOj10cnVlCi1CdW5kbGUtVmVyc2lvbjogMi4xLjAucXVhbGlmaWVyCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuVVBDUGx1Z2luCi1CdW5kbGUtVmVuZG9yOiBJQk0gUmVzZWFyY2gKLUJ1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbgotUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLnVpLAotIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcywKLSBvcmcuZWNsaXBzZS5jZHQuY29yZSwKLSBvcmcuZWNsaXBzZS5jZHQudWksCi0gb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLAotIG9yZy5lY2xpcHNlLmhlbHAsCi0gb3JnLmVjbGlwc2UuY2R0LmRvYy51c2VyLAotIG9yZy5lY2xpcHNlLmNkdC5jb3JlLnBhcnNlci51cGM7YnVuZGxlLXZlcnNpb249IjUuMC4wIgotRWNsaXBzZS1BdXRvU3RhcnQ6IHRydWUKLUJ1bmRsZS1DbGFzc1BhdGg6IC4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2J1aWxkLnByb3BlcnRpZXMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9idWlsZC5wcm9wZXJ0aWVzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2MyYzY1Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2J1aWxkLnByb3BlcnRpZXMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXNvdXJjZS4uID0gc3JjLwotb3V0cHV0Li4gPSBiaW4vCi1iaW4uaW5jbHVkZXMgPSBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgLixcCi0gICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwKLSAgICAgICAgICAgICAgIGljb25zLyxcCi0gICAgICAgICAgICAgICBodG1sLyxcCi0gICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9NWVRIUkVBRC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9NWVRIUkVBRC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjcyMjFjLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvaWRfTVlUSFJFQUQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLTxoMj48Y29kZT5NWVRIUkVBRDwvY29kZT4ga2V5d29yZDwvaDI+Ci0KLQotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotPGNvZGU+TVlUSFJFQUQ8L2NvZGU+ICBpcyBhbiBleHByZXNzaW9uIHdpdGggYSB2YWx1ZSBvZiB0eXBlIGludDsgaXQgc3BlY2lmaWVzIHRoZSB1bmlxdWUKLXRocmVhZCBpbmRleC4gCi08YnI+VGhlIHJhbmdlIG9mIHBvc3NpYmxlIHZhbHVlcyBpcyA8Y29kZT4wLi5USFJFQURTLTE2PC9jb2RlPi4KLTxoND5FeGFtcGxlPC9oND4KLTxwPlRoZSBmb2xsb3dpbmcgcHJvZ3JhbSBwcmludHMgdGhlIG51bWJlcnMgMAotdGhyb3VnaCA8Y29kZT5USFJFQURTLTE8L2NvZGU+LCBpbiBzb21lIG9yZGVyLgotPHByZT4KLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgbWFpbigpeyAKLSAgICAgIHByaW50ZigiJWQgIixNWVRIUkVBRCk7IAotICAgIH0KLTwvcHJlPgotPHA+U2VlIGFsc28gPGEgaHJlZj0iaWRfVEhSRUFEUy5odG1sIj48Y29kZT5USFJFQURTPC9jb2RlPjwvYT4sCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9USFJFQURTLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2lkX1RIUkVBRFMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwMDM4My4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2lkX1RIUkVBRFMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTxoMj48Y29kZT48Y29kZT5USFJFQURTPC9jb2RlPjwvY29kZT4ga2V5d29yZDwvaDI+Ci0KLQotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotPGNvZGU+VEhSRUFEUzwvY29kZT4gaXMgYW4gZXhwcmVzc2lvbiB3aXRoIGEgdmFsdWUgb2YgdHlwZSA8Y29kZT5pbnQ8L2NvZGU+OyBpdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgotdGhyZWFkcyBhbmQgaGFzIHRoZSBzYW1lIHZhbHVlIG9uIGV2ZXJ5IHRocmVhZC4gVW5kZXIgdGhlIHN0YXRpYyA8Y29kZT5USFJFQURTPC9jb2RlPgotdHJhbnNsYXRpb24gZW52aXJvbm1lbnQsIDxjb2RlPlRIUkVBRFM8L2NvZGU+IGlzIGFuIDxjb2RlPmludDwvY29kZT5lZ2VyIGNvbnN0YW50IHN1aXRhYmxlIGZvciB1c2UgaW4KLSNpZiBwcmVwcm9jZXNzaW5nIGRpcmVjdGl2ZXMuCi0KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2lkX1VQQ19NQVhfQkxPQ0tfU0laRS5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pZF9VUENfTUFYX0JMT0NLX1NJWkUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUxZjU5Yy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2lkX1VQQ19NQVhfQkxPQ0tfU0laRS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotPGgyPjxjb2RlPlVQQ19NQVhfQkxPQ0tfU0laRTwvY29kZT4gaWRlbnRpZmllcjwvaDI+Ci0KLQotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotPGNvZGU+VVBDX01BWF9CTE9DS19TSVpFPC9jb2RlPiAgaXMgYSBwcmVkZWZpbmVkIGludGVnZXIgY29uc3RhbnQgdmFsdWUuIEl0IGluZGljYXRlcyB0aGUKLW1heGltdW0gdmFsdWUgYWxsb3dlZCBpbiBhIGxheW91dCBxdWFsaWZpZXIgZm9yIHNoYXJlZCBkYXRhLiBJdCBzaGFsbCBiZQotc3VpdGFibGUgZm9yIHVzZSBpbiA8Y29kZT4jaWY8L2NvZGU+IHByZXByb2Nlc3NpbmcgZGlyZWN0aXZlcy4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2luZGV4Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2luZGV4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYmI0NzYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9pbmRleC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPGgyIGlkPSJ0b3AiPlVQQyBTdGF0ZW1lbnRzPC9oMj4KLTx1bD4KLTxsaT48YSBocmVmPSJrZXl3b3Jkcy5odG1sIj5LZXl3b3Jkcy9JZGVudGlmaWVyczwvYT4KLTxsaT48YSBocmVmPSJrZXl3b3Jkcy5odG1sIj5LZXl3b3JkczwvYT4KLQotPC91bD4KLTxoMiBpZD0idG9wIj5VUEMgZnVuY3Rpb25zPC9oMj4KLTxwPlRlcm1pbmF0aW9uIG9mIGFsbCB0aHJlYWRzCi08dWw+Ci08bGk+PGEgaHJlZj0idXBjX2dsb2JhbF9leGl0Lmh0bWwiPiA8Y29kZT51cGNfZ2xvYmFsX2V4aXQ8L2NvZGU+IDwvYT4KLTwvdWw+Ci08cD5TaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zCi08dWw+Ci08bGk+PGEgaHJlZj0idXBjX2dsb2JhbF9hbGxvYy5odG1sIj4gPGNvZGU+dXBjX2dsb2JhbF9hbGxvYzwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19hbGxfYWxsb2MuaHRtbCI+IDxjb2RlPnVwY19hbGxfYWxsb2M8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsb2MuaHRtbCI+IDxjb2RlPnVwY19hbGxvYzwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19sb2NhbF9hbGxvYy5odG1sIj4gPGNvZGU+dXBjX2xvY2FsX2FsbG9jPC9jb2RlPiA8L2E+ICA8aT5kZXByZWNhdGVkPC9pPgotPGxpPjxhIGhyZWY9InVwY19mcmVlLmh0bWwiPiA8Y29kZT51cGNfZnJlZTwvY29kZT4gPC9hPgotPC91bD4KLQotPHA+UG9pbnRlci10by1zaGFyZWQgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucwotPHVsPgotPGxpPjxhIGhyZWY9InVwY190aHJlYWRvZi5odG1sIj4gPGNvZGU+dXBjX3RocmVhZG9mPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX3BoYXNlb2YuaHRtbCI+IDxjb2RlPnVwY19waGFzZW9mPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX3Jlc2V0cGhhc2UuaHRtbCI+IDxjb2RlPnVwY19yZXNldHBoYXNlPC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FkZHJmaWVsZC5odG1sIj4gPGNvZGU+dXBjX2FkZHJmaWVsZDwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19hZmZpbml0eXNpemUuaHRtbCI+IDxjb2RlPnVwY19hZmZpbml0eXNpemU8L2NvZGU+IDwvYT4KLTwvdWw+Ci0KLTxwPkxvY2sgZnVuY3Rpb25zCi08dWw+Ci08bGk+PGEgaHJlZj0idXBjX2xvY2tfdC5odG1sIj4gPGNvZGU+dXBjX2xvY2tfdDwvY29kZT4gPC9hPiAmbmJzcDsgdHlwZSAKLTxsaT48YSBocmVmPSJ1cGNfZ2xvYmFsX2xvY2tfYWxsb2MuaHRtbCI+IDxjb2RlPnVwY19nbG9iYWxfbG9ja19hbGxvYzwvY29kZT4gIDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsX2xvY2tfYWxsb2MuaHRtbCI+IDxjb2RlPnVwY19hbGxfbG9ja19hbGxvYzwvY29kZT4gIDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfbG9ja19mcmVlLmh0bWwiPiA8Y29kZT51cGNfbG9ja19mcmVlPC9jb2RlPiAgPC9hPgotPGxpPjxhIGhyZWY9InVwY19sb2NrLmh0bWwiPiA8Y29kZT51cGNfbG9jazwvY29kZT4gIDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfbG9ja19hdHRlbXB0Lmh0bWwiPiA8Y29kZT51cGNfbG9ja19hdHRlbXB0PC9jb2RlPiAgPC9hPgotPGxpPjxhIGhyZWY9InVwY191bmxvY2suaHRtbCI+IDxjb2RlPnVwY191bmxvY2s8L2NvZGU+ICA8L2E+Ci08L3VsPgotCi08cD5TaGFyZWQgc3RyaW5nIGhhbmRsaW5nIGZ1bmN0aW9ucwotPHVsPgotPGxpPjxhIGhyZWY9InVwY19tZW1jcHkuaHRtbCI+IDxjb2RlPnVwY19tZW1jcHk8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfbWVtZ2V0Lmh0bWwiPiA8Y29kZT51cGNfbWVtZ2V0PC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX21lbWNweS5odG1sIj4gPGNvZGU+dXBjX21lbWNweTwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19tZW1zZXQuaHRtbCI+IDxjb2RlPnVwY19tZW1zZXQ8L2NvZGU+IDwvYT4KLTwvdWw+Ci0KLTxwPkNvbGxlY3RpdmUgVXRpbGl0aWVzCi08dWw+Ci08bGk+PGEgaHJlZj0idXBjX2FsbF9icm9hZGNhc3QuaHRtbCI+IDxjb2RlPnVwY19hbGxfYnJvYWRjYXN0PC9jb2RlPiA8L2E+Ci08bGk+PGEgaHJlZj0idXBjX2FsbF9zY2F0dGVyLmh0bWwiPiA8Y29kZT51cGNfYWxsX3NjYXR0ZXI8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsX2dhdGhlci5odG1sIj4gPGNvZGU+dXBjX2FsbF9nYXRoZXI8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsX2dhdGhlcl9hbGwuaHRtbCI+IDxjb2RlPnVwY19hbGxfZ2F0aGVyX2FsbDwvY29kZT4gPC9hPgotPGxpPjxhIGhyZWY9InVwY19hbGxfZXhjaGFuZ2UuaHRtbCI+IDxjb2RlPnVwY19hbGxfZXhjaGFuZ2U8L2NvZGU+IDwvYT4KLTxsaT48YSBocmVmPSJ1cGNfYWxsX3Blcm11dGUuaHRtbCI+IDxjb2RlPnVwY19hbGxfcGVybXV0ZTwvY29kZT4gPC9hPgotCi08L3VsPgotPHA+Ci1TZWUgYWxzbyA8YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPgotPHA+Ci08YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2tleXdvcmRzLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL2tleXdvcmRzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMjFhYzMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9rZXl3b3Jkcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotPGgyPlVQQyBLZXl3b3Jkcy9JZGVudGlmaWVyczwvaDI+Ci08Y29kZT4KLTx1bD4gICAgCi08bGk+PGEgaHJlZj0iaWRfTVlUSFJFQUQuaHRtbCI+TVlUSFJFQUQgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfcmVsYXhlZC5odG1sIj5yZWxheGVkICAgICAgIDwvYT4KLTxsaT48YSBocmVmPSJpZF9zaGFyZWQuaHRtbCI+c2hhcmVkICAgICAgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfc3RyaWN0Lmh0bWwiPnN0cmljdCAgICAgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfVEhSRUFEUy5odG1sIj5USFJFQURTICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19iYXJyaWVyLmh0bWwiPnVwY19iYXJyaWVyICAgICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19ibG9ja3NpemVvZi5odG1sIj51cGNfYmxvY2tzaXplb2YgICAgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfdXBjX2VsZW1zaXplb2YuaHRtbCI+dXBjX2VsZW1zaXplb2YgICAgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfdXBjX2ZlbmNlLmh0bWwiPnVwY19mZW5jZSAgICAgICAgICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19sb2NhbHNpemVvZi5odG1sIj51cGNfbG9jYWxzaXplb2YgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfVVBDX01BWF9CTE9DS1NJWkUuaHRtbCI+VVBDX01BWF9CTE9DS1NJWkUgICA8L2E+Ci08bGk+PGEgaHJlZj0iaWRfdXBjX25vdGlmeS5odG1sIj51cGNfbm90aWZ5ICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY193YWl0Lmh0bWwiPnVwY193YWl0ICAgPC9hPgotPGxpPjxhIGhyZWY9ImlkX3VwY19mb3JhbGwuaHRtbCI+dXBjX2ZvcmFsbCAgICAgICAgPC9hPiAgICAgCi08L3VsPgotPC9jb2RlPgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9zaGFyZWQuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvc2hhcmVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZmUzOGQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC9zaGFyZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTxoMj48Y29kZT48Y29kZT5zaGFyZWQ8L2NvZGU+PC9jb2RlPiBrZXl3b3JkPC9oMj4KLQotCi08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci08Y29kZT5zaGFyZWQ8L2NvZGU+IGluZGljYXRlcyBhIHZhcmlhYmxlIGlzIHNoYXJlZCBiZXR3ZWVuIHRocmVhZHMuCi08cD4KLTxwcmU+Ci1zaGFyZWQgaW50IGk7Ci1zaGFyZWQgWzJdIGludCBhWzIwMF07Ci1zdHJpY3Qgc2hhcmVkIGludCBpOwotPC9wcmU+Ci0KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3Rlcm1zLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3Rlcm1zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmEyNTAuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC90ZXJtcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotPGg0IGlkPSJ0b3AiPlVQQyBUZXJtcywgZGVmaW5pdGlvbnMgYW5kIHN5bWJvbHM8L2g0PgotPHA+Ci1Gb3IgdGhlIHB1cnBvc2Ugb2YgdGhlc2Ugc3BlY2lmaWNhdGlvbnMgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcHBseS4KLQotPGRsPgotPGR0PjxzdHJvbmc+PHN0cm9uZz50aHJlYWQ8L3N0cm9uZz48L3N0cm9uZz48L2R0PgotPGRkPgotYW4gaW5zdGFuY2Ugb2YgZXhlY3V0aW9uIGluaXRpYXRlZCBieSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IGF0IHByb2dyYW0KLXN0YXJ0dXAuPC9kZD4KLQotPGR0PjxzdHJvbmc+IDwvc3Ryb25nPjwvZHQ+Ci08ZGQ+IDwvZGQ+Ci0KLTxkdD48c3Ryb25nPm9iamVjdDwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1yZWdpb24gb2YgZGF0YSBzdG9yYWdlIGluIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgd2hpY2ggY2FuIHJlcHJlc2VudAotdmFsdWVzLjwvZGQ+Ci0KLTxkdD48c3Ryb25nPnNoYXJlZCBvYmplY3QgPC9zdHJvbmc+PC9kdD4KLTxkZD4KLWFuIG9iamVjdCBhbGxvY2F0ZWQgdXNpbmcgYSBzaGFyZWQtcXVhbGlmaWVkIGRlY2xhcmF0b3Igb3IgYnkgYSBsaWJyYXJ5IGZ1bmN0aW9uCi1kZWZpbmVkIHRvIGNyZWF0ZSBzaGFyZWQgb2JqZWN0cy4gCi08cD5Ob3RlOiAKLUFsbCB0aHJlYWRzIG1heSBhY2Nlc3Mgc2hhcmVkIG9iamVjdHMuPC9kZD4KLQotPGR0PjxzdHJvbmc+cHJpdmF0ZSBvYmplY3Q8L3N0cm9uZz48L2R0PgotPGRkPgotYW55IG9iamVjdCB3aGljaCBpcyBub3QgYSBzaGFyZWQgb2JqZWN0LgotPHA+Tm90ZTogRWFjaCB0aHJlYWQgZGVjbGFyZXMgYW5kIGNyZWF0ZXMgaXRzIG93biBwcml2YXRlIG9iamVjdHMgd2hpY2ggbm8KLW90aGVyIHRocmVhZCBjYW4gYWNjZXNzLjwvZGQ+Ci08ZHQ+PHN0cm9uZz4gc2hhcmVkIGFycmF5PC9zdHJvbmc+PC9kdD4KLTxkZD4KLWFuIGFycmF5IHdpdGggZWxlbWVudHMgdGhhdCBoYXZlIHNoYXJlZCBxdWFsaWZpZWQgdHlwZS4KLTwvZGQ+Ci08ZHQ+PHN0cm9uZz5hZmZpbml0eTwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1sb2dpY2FsIGFzc29jaWF0aW9uIGJldHdlZW4gc2hhcmVkIG9iamVjdHMgYW5kIHRocmVhZHMuIEVhY2ggZWxlbWVudCBvZiBkYXRhCi1zdG9yYWdlIHRoYXQgY29udGFpbnMgc2hhcmVkIG9iamVjdHMgaGFzIGFmZmluaXR5IHRvIGV4YWN0bHkgb25lIHRocmVhZC4KLTwvZGQ+Ci08ZHQ+PHN0cm9uZz5wb2ludGVyLXRvLXNoYXJlZDwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hIHBvaW50ZXIgd2hvc2UgcmVmZXJlbmNlZCB0eXBlIGlzIHNoYXJlZC1xdWFsaWZpZWQuCi08L2RkPgotPGR0PjxzdHJvbmc+IHBvaW50ZXItdG8tbG9jYWw8L3N0cm9uZz48L2R0PgotPGRkPgotYSBwb2ludGVyIHdob3NlIHJlZmVyZW5jZWQgdHlwZSBpcyBub3Qgc2hhcmVkLXF1YWxpZmllZC4KLTwvZGQ+Ci08ZHQ+PHN0cm9uZz5hY2Nlc3M8L3N0cm9uZz48L2R0PgotPGRkPgotJmx0O2V4ZWN1dGlvbi10aW1lIGFjdGlvbiZndDsgdG8gcmVhZCBvciBtb2RpZnkgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBieSBhIHRocmVhZC4KLTxwPlRoZSBmaWxlIHNjb3BlIGRlY2xhcmF0aW9uIGludCB5OyBjcmVhdGVzIGEgc2VwYXJhdGUgb2JqZWN0IGZvciBlYWNoIHRocmVhZCB0byBhY2Nlc3MuCi08L2RkPgotPGR0PjxzdHJvbmc+c2hhcmVkIGFjY2Vzczwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hbiBhY2Nlc3MgdXNpbmcgYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGlzIHNoYXJlZC1xdWFsaWZpZWQuPC9kZD4KLTxkdD48c3Ryb25nPiBzdHJpY3Qgc2hhcmVkIHJlYWQ8L3N0cm9uZz48L2R0PgotPGRkPgotYSBzaGFyZWQgcmVhZCBhY2Nlc3Mgd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSBzdHJpY3QuPC9kZD4KLTxkdD48c3Ryb25nPnN0cmljdCBzaGFyZWQgd3JpdGU8L3N0cm9uZz48L2R0PgotPGRkPgotYSBzaGFyZWQgbW9kaWZ5IGFjY2VzcyB3aGljaCBpcyBkZXRlcm1pbmVkIHRvIGJlIHN0cmljdCA8L2RkPgotPGR0PjxzdHJvbmc+cmVsYXhlZCBzaGFyZWQgcmVhZDwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hIHNoYXJlZCByZWFkIGFjY2VzcyB3aGljaCBpcyBkZXRlcm1pbmVkIHRvIGJlIHJlbGF4ZWQ8L2RkPgotPGR0PjxzdHJvbmc+cmVsYXhlZCBzaGFyZWQgd3JpdGU8L3N0cm9uZz48L2R0PgotPGRkPgotYSBzaGFyZWQgbW9kaWZ5IGFjY2VzcyB3aGljaCBpcyBkZXRlcm1pbmVkIHRvIGJlIHJlbGF4ZWQgPC9kZD4KLTxkdD48c3Ryb25nPmxvY2FsIGFjY2Vzczwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hbiBhY2Nlc3MgdXNpbmcgYW4gZXhwcmVzc2lvbiB3aG9zZSB0eXBlIGlzIG5vdCBzaGFyZWQtcXVhbGlmaWVkLgotPC9kZD4KLTxkdD48c3Ryb25nPmNvbGxlY3RpdmU8L3N0cm9uZz48L2R0PgotPGRkPgotYSBjb25zdHJhaW50IHBsYWNlZCBvbiBzb21lIGxhbmd1YWdlIG9wZXJhdGlvbnMgd2hpY2ggcmVxdWlyZXMgZXZhbHVhdGlvbgotb2Ygc3VjaCBvcGVyYXRpb25zIHRvIGJlIG1hdGNoZWQgYWNyb3NzIGFsbCB0aHJlYWRzLiBUaGUgYmVoYXZpb3Igb2YgY29sbGVjdGl2ZQotb3BlcmF0aW9ucyBpcyB1bmRlZmluZWQgdW5sZXNzIGFsbCB0aHJlYWRzIGV4ZWN1dGUgdGhlIHNhbWUgc2VxdWVuY2Ugb2YKLWNvbGxlY3RpdmUgb3BlcmF0aW9ucy48L2RkPgotPGR0PjxzdHJvbmc+c2luZ2xlLXZhbHVlZDwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hbiBvcGVyYW5kIHRvIGEgY29sbGVjdGl2ZSBvcGVyYXRpb24sIHdoaWNoIGhhcyB0aGUgc2FtZSB2YWx1ZSBvbiBldmVyeQotdGhyZWFkLiBUaGUgYmVoYXZpb3Igb2YgdGhlIG9wZXJhdGlvbiBpcyBvdGhlcndpc2UgdW5kZWZpbmVkLjwvZGQ+Ci08ZHQ+PHN0cm9uZz5waGFzZTwvc3Ryb25nPjwvZHQ+Ci08ZGQ+Ci1hbiB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIHBvaW50ZXItdG8tc2hhcmVkIHdoaWNoIGluZGljYXRlcwotdGhlIGVsZW1lbnQtb2Zmc2V0IHdpdGhpbiBhbiBhZmZpbml0eSBibG9jazsgdXNlZCBpbiBwb2ludGVyLXRvLXNoYXJlZAotYXJpdGhtZXRpYyB0byBkZXRlcm1pbmUgYWZmaW5pdHkgYm91bmRhcmllczwvZGQ+Ci08L2RsPgotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvICB0b3A8L2E+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FkZHJmaWVsZC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWRkcmZpZWxkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MTMzZTY4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FkZHJmaWVsZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfYWRkcmZpZWxkPC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgc2l6ZV90IHVwY19hZGRyZmllbGQoc2hhcmVkIHZvaWQgKnB0cik7ICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgPGNvZGU+dXBjX2FkZHJmaWVsZCA8L2NvZGU+ICBmdW5jdGlvbiByZXR1cm5zIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUgcmVmbGVjdGluZwotdGhlIDxxPmxvY2FsIGFkZHJlc3M8L3E+b2YgdGhlIG9iamVjdCBwb2ludGVkIHRvIGJ5IHRoZSBwb2ludGVyLXRvLXNoYXJlZAotYXJndW1lbnQuCi0KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hZmZpbml0eXNpemUuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FmZmluaXR5c2l6ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTZiODFmLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FmZmluaXR5c2l6ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfYWZmaW5pdHlzaXplPC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgc2l6ZV90IHVwY19hZmZpbml0eXNpemUoc2l6ZV90IHRvdGFsc2l6ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdGhyZWFkaWQpOyAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgPGNvZGU+dXBjX2FmZmluaXR5c2l6ZSA8L2NvZGU+ICBmdW5jdGlvbiBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgdGhlIGV4YWN0IHNpemUKLW9mIHRoZSBsb2NhbCBwb3J0aW9uIG9mIHRoZSBkYXRhIGluIGEgc2hhcmVkIG9iamVjdCB3aXRoIGFmZmluaXR5IHRvIDxjb2RlPnRocmVhZGlkPC9jb2RlPi4KLTxwPkluIHRoZSBjYXNlIG9mIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHNoYXJlZCBvYmplY3QsIHRoZSA8Y29kZT50b3RhbHNpemU8L2NvZGU+IGFyZ3VtZW50Ci1zaGFsbCBiZSA8Y29kZT5uYnl0ZXMqbmJsb2NrczwvY29kZT4gYW5kIHRoZSA8Y29kZT5uYnl0ZXM8L2NvZGU+IGFyZ3VtZW50IHNoYWxsIGJlIDxjb2RlPm5ieXRlczwvY29kZT4sCi13aGVyZSA8Y29kZT5uYmxvY2tzPC9jb2RlPiBhbmQgPGNvZGU+bmJ5dGVzPC9jb2RlPiBhcmUgZXhhY3RseSBhcyBwYXNzZWQgdG8gPGNvZGU+dXBjX2dsb2JhbF9hbGxvYzwvY29kZT4gb3IKLTxjb2RlPnVwY19hbGxfYWxsb2M8L2NvZGU+IHdoZW4gdGhlIG9iamVjdCB3YXMgYWxsb2NhdGVkLgotPHA+SW4gdGhlIGNhc2Ugb2YgYSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBzaGFyZWQgb2JqZWN0IHdpdGggZGVjbGFyYXRpb246Ci08cHJlPgotICAgc2hhcmVkIFtiXSB0IGRbc107Ci0gICA8L3ByZT4KLXRoZSA8Y29kZT50b3RhbHNpemU8L2NvZGU+IGFyZ3VtZW50IHNoYWxsIGJlIDxjb2RlPnMgKiBzaXplb2YodCk8L2NvZGU+IGFuZCB0aGUgPGNvZGU+bmJ5dGVzPC9jb2RlPiBhcmd1bWVudAotc2hhbGwgYmUgPGNvZGU+YiAqIHNpemVvZih0KTwvY29kZT4uIElmIHRoZSBibG9jayBzaXplIGlzIGluZGVmaW5pdGUsIDxjb2RlPm5ieXRlczwvY29kZT4gc2hhbGwgYmUgMC4KLTxwPjxjb2RlPnRocmVhZGlkPC9jb2RlPiBzaGFsbCBiZSBhIHZhbHVlIGluIDxjb2RlPjAuLihUSFJFQURTLTEpPC9jb2RlPi4KLQotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9hbGxvYy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2FsbG9jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYjA5NDMuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2FsbG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfYWxsX2FsbG9jPC9jb2RlPiAgICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICBzaGFyZWQgdm9pZCAqdXBjX2FsbF9hbGxvYyhzaXplX3QgbmJsb2NrcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcyk7ICAgCi08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2FsbF9hbGxvYyAgIDwvY29kZT4gZnVuY3Rpb24gYWxsb2NhdGVzIHNoYXJlZCBzcGFjZSBjb21wYXRpYmxlIHdpdGggdGhlIGZvbGxvd2luZwotZGVjbGFyYXRpb246Ci08cD48Y29kZT4KLXNoYXJlZCBbbmJ5dGVzXSBjaGFyW25ibG9ja3MgKiBuYnl0ZXNdLgotPC9jb2RlPjwvcD4KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfYWxsb2MgICA8L2NvZGU+IGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgcG9pbnRlciB2YWx1ZSBvbiBhbGwgdGhyZWFkcy4KLUlmIG5ibG9ja3MqbmJ5dGVzIGlzIHplcm8sIHRoZSByZXN1bHQgaXMgYSBudWxsIHBvaW50ZXItdG8tc2hhcmVkLgotPHA+VGhlIGR5bmFtaWMgbGlmZXRpbWUgb2YgYW4gYWxsb2NhdGVkIG9iamVjdCBleHRlbmRzIGZyb20gdGhlIHRpbWUgYW55IHRocmVhZAotY29tcGxldGVzIHRoZSBjYWxsIHRvIDxjb2RlPnVwY19hbGxfYWxsb2MgICA8L2NvZGU+IHVudGlsIGFueSB0aHJlYWQgaGFzIGRlYWxsb2NhdGVkIHRoZQotb2JqZWN0LgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9icm9hZGNhc3QuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9icm9hZGNhc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0OTAzYy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfYnJvYWRjYXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi08aDI+VGhlIDxjb2RlPnVwY19hbGxfYnJvYWRjYXN0PC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci08aDQ+UHVycG9zZTwvaDQ+Ci08cD5Db3BpZXMgYSBibG9jayBvZiBtZW1vcnkKLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfYWxsX2Jyb2FkY2FzdChzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIHNpemVfdCBuYnl0ZXMsIHVwY19mbGFnX3QgZmxhZ3MpOyAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgPGNvZGU+dXBjX2FsbF9icm9hZGNhc3QgPC9jb2RlPiAgZnVuY3Rpb24gIAotY29waWVzIGEgYmxvY2sgb2YgbWVtb3J5IHdpdGggYWZmaW5pdHkgdG8KLWEgc2luZ2xlIHRocmVhZCB0byBhIGJsb2NrIG9mIHNoYXJlZCBtZW1vcnkgb24gZWFjaCB0aHJlYWQuIFRoZSBudW1iZXIgb2YKLWJ5dGVzIGluIGVhY2ggYmxvY2sgaXMgPGNvZGU+bmJ5dGVzPC9jb2RlPi4KLTxwPjxjb2RlPm5ieXRlczwvY29kZT4gbXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4KLTxwPjxjb2RlPnVwY19hbGxfYnJvYWRjYXN0IDwvY29kZT4gZnVuY3Rpb24gdHJlYXRzIHRoZSA8Y29kZT5zcmM8L2NvZGU+IHBvaW50ZXIgYXMgaWYgaXQgcG9pbnRlZCB0byBhCi1zaGFyZWQgbWVtb3J5IGFyZWEgd2l0aCB0aGUgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtdIGNoYXJbbmJ5dGVzXQotICAgIDwvcHJlPgotPHA+VGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIGNvcHlpbmcgdGhlIGVudGlyZSBhcnJheSBwb2ludGVkIHRvIGJ5IDxjb2RlPnNyYzwvY29kZT4gdG8gZWFjaAotYmxvY2sgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBvZiBhIHNoYXJlZCBhcnJheSA8Y29kZT5kc3Q8L2NvZGU+IHdpdGggdGhlIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbbmJ5dGVzXSBjaGFyW25ieXRlcyAqIFRIUkVBRFNdCi08L3ByZT4KLTxwPlRoZSB0YXJnZXQgb2YgdGhlIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlciBtdXN0IGhhdmUgYWZmaW5pdHkgdG8gdGhyZWFkIDAuCi08cD5UaGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyIGlzIHRyZWF0ZWQgYXMgaWYgaXQgaGFzIHBoYXNlIDAuCi0KLTx1bD4KLTxsaT5FWEFNUExFIDEgc2hvd3MgdXBjX2FsbF9icm9hZGNhc3QKLQotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0Owotc2hhcmVkIGludCBBW1RIUkVBRFNdOwotc2hhcmVkIGludCBCW1RIUkVBRFNdOwotLy8gSW5pdGlhbGl6ZSBBLgotdXBjX2JhcnJpZXI7Ci11cGNfYWxsX2Jyb2FkY2FzdCggQiwgJkFbMV0sIHNpemVvZihpbnQpLAotICAgICAgICAgICAgICAgICAgIFVQQ19JTl9OT1NZTkMgfCBVUENfT1VUX05PU1lOQyApOwotdXBjX2JhcnJpZXI7Ci08L3ByZT4KLQotPGxpPkVYQU1QTEUgMjoKLQotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbXSBpbnQgQVtORUxFTVNdOwotc2hhcmVkIFtORUxFTVNdIGludCBCW05FTEVNUypUSFJFQURTXTsKLS8vIEluaXRpYWxpemUgQS4KLXVwY19hbGxfYnJvYWRjYXN0KCBCLCBBLCBzaXplb2YoaW50KSpORUxFTVMsCi0gICAgICAgICAgICAgICAgICAgVVBDX0lOX0FMTFNZTkMgfCBVUENfT1VUX0FMTFNZTkMgKTsKLTwvcHJlPgotPGxpPkVYQU1QTEUgMyBzaG93cyA8Y29kZT4oQVszXSxBWzRdKTwvY29kZT4gaXMgYnJvYWRjYXN0IHRvIDxjb2RlPihCWzBdLEJbMV0pLCAoQlsxMF0sQlsxMV0pLAotKEJbMjBdLEJbMjFdKSwgLi4uLCAoQltORUxFTVMqKFRIUkVBRFMtMSldLEJbTkVMRU1TKihUSFJFQURTLTEpKzFdKS48L2NvZGU+Ci0KLTxwcmU+Ci0jaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSNkZWZpbmUgTkVMRU1TIDEwCi1zaGFyZWQgW05FTEVNU10gaW50IEFbTkVMRU1TKlRIUkVBRFNdOwotc2hhcmVkIFtORUxFTVNdIGludCBCW05FTEVNUypUSFJFQURTXTsKLS8vIEluaXRpYWxpemUgQS4KLXVwY19iYXJyaWVyOwotdXBjX2FsbF9icm9hZGNhc3QoIEIsICZBWzNdLCBzaXplb2YoaW50KSoyLAotICAgICAgICAgICAgICAgICAgIFVQQ19JTl9OT1NZTkMgfCBVUENfT1VUX05PU1lOQyApOwotdXBjX2JhcnJpZXI7Ci08L3ByZT4KLTwvdWw+Ci08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9leGNoYW5nZS5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2V4Y2hhbmdlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNTAzMzguLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2V4Y2hhbmdlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi08aDI+VGhlIDxjb2RlPnVwY19hbGxfZXhjaGFuZ2U8L2NvZGU+IGZ1bmN0aW9uICAgICA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgICNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotICAgIHZvaWQgdXBjX2FsbF9leGNoYW5nZShzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyk7ICAKLSAgICA8L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2FsbF9leGNoYW5nZSAgIDwvY29kZT4gZnVuY3Rpb24gICBjb3BpZXMgdGhlIGl0aCBibG9jayBvZiBtZW1vcnkgZnJvbSBhIHNoYXJlZAotbWVtb3J5IGFyZWEgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGogdG8gdGhlIGp0aCBibG9jayBvZiBhIHNoYXJlZCBtZW1vcnkKLWFyZWEgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGkuIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBibG9jayBpcwotPGNvZGU+bmJ5dGVzPC9jb2RlPi4KLTxwPjxjb2RlPm5ieXRlczwvY29kZT4gbXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4KLTxwPgotPHA+VGhlIDxjb2RlPnVwY19hbGxfZXhjaGFuZ2UgICA8L2NvZGU+IGZ1bmN0aW9uIHRyZWF0cyB0aGUgPGNvZGU+c3JjPC9jb2RlPiBwb2ludGVyIGFuZCB0aGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyCi1hcyBpZiBlYWNoIHBvaW50ZWQgdG8gYSBzaGFyZWQgbWVtb3J5IGFyZWEgb2YgPGNvZGU+bmJ5dGVzICogVEhSRUFEUzwvY29kZT4DIGJ5dGVzIG9uIGVhY2gKLXRocmVhZCBhbmQgdGhlcmVmb3JlIGhhZCB0eXBlOgotPHByZT4KLSAgICBzaGFyZWQgW25ieXRlcyAqIFRIUkVBRFNdIGNoYXJbbmJ5dGVzICogVEhSRUFEUyAqIFRIUkVBRFNdCi08L3ByZT4KLTxwPlRoZSB0YXJnZXRzIG9mIHRoZSA8Y29kZT5zcmM8L2NvZGU+IGFuZCA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXJzIG11c3QgaGF2ZSBhZmZpbml0eSB0byB0aHJlYWQgMC4KLTxwPlRoZSA8Y29kZT5zcmM8L2NvZGU+IGFuZCA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXJzIGFyZSB0cmVhdGVkIGFzIGlmIHRoZXkgaGF2ZSBwaGFzZSAwLgotPHA+Rm9yIGVhY2ggcGFpciBvZiB0aHJlYWRzIGkgYW5kIGosIHRoZSBlZmZlY3QgaXMgZXF1aXZhbGVudCB0byBjb3B5aW5nIHRoZSBpdGgKLWJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGogcG9pbnRlZCB0byBieSA8Y29kZT5zcmM8L2NvZGU+IHRvIHRoZQotanRoIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGkgcG9pbnRlZCB0byBieSA8Y29kZT5kc3Q8L2NvZGU+LgotPHVsPgotPGxpPkVYQU1QTEUgMSA8Y29kZT51cGNfYWxsX2V4Y2hhbmdlICAgPC9jb2RlPiBmb3IgdGhlIHN0YXRpYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbTkVMRU1TKlRIUkVBRFNdIGludCBBW1RIUkVBRFNdW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBbTkVMRU1TKlRIUkVBRFNdIGludCBCW1RIUkVBRFNdW05FTEVNUypUSFJFQURTXTsKLS8vIEluaXRpYWxpemUgQS4KLXVwY19iYXJyaWVyOwotdXBjX2FsbF9leGNoYW5nZSggQiwgQSwgTkVMRU1TKnNpemVvZihpbnQpLAotVVBDX0lOX05PU1lOQyB8IFVQQ19PVVRfTk9TWU5DICk7Ci11cGNfYmFycmllcjsKLTwvcHJlPgotCi08bGk+RVhBTVBMRSAyIDxjb2RlPnVwY19hbGxfZXhjaGFuZ2UgICA8L2NvZGU+IGZvciB0aGUgZHluYW1pYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBpbnQgKkFkYXRhLCAqQmRhdGE7Ci1zaGFyZWQgW10gaW50ICpteUEsICpteUI7Ci1pbnQgaTsKLQotQWRhdGEgPSB1cGNfYWxsX2FsbG9jKFRIUkVBRFMqVEhSRUFEUywgTkVMRU1TKnNpemVvZihpbnQpKTsKLW15QSA9IChzaGFyZWQgW10gaW50ICopJkFkYXRhW01ZVEhSRUFEXTsKLUJkYXRhID0gdXBjX2FsbF9hbGxvYyhUSFJFQURTKlRIUkVBRFMsIE5FTEVNUypzaXplb2YoaW50KSk7Ci1teUIgPSAoc2hhcmVkIFtdIGludCAqKSZCZGF0YVtNWVRIUkVBRF07Ci0vLyBBZGF0YSBhbmQgQmRhdGEgY29udGFpbiBUSFJFQURTKlRIUkVBRFMqTkVMRU1TIGVsZW1lbnRzLgotLy8gbXlBIGFuZCBteUIgYXJlIE1ZVEhSRUFEJ3Mgcm93cyBvZiBBZGF0YSBhbmQgQmRhdGEsIHJlc3AuCi0vLyBJbml0aWFsaXplIE1ZVEhSRUFEJ3Mgcm93IG9mIEEuIEZvciBleGFtcGxlLAotZm9yIChpPTA7IGkmbHQ7TkVMRU1TKlRIUkVBRFM7IGkrKykKLW15QVtpXSA9IE1ZVEhSRUFEKjEwICsgaTsKLXVwY19hbGxfZXhjaGFuZ2UoIEJkYXRhLCBBZGF0YSwgTkVMRU1TKnNpemVvZihpbnQpLAotICAgICAgICAgICAgICAgICAgVVBDX0lOX0FMTFNZTkMgfCBVUENfT1VUX0FMTFNZTkMgKTsKLTwvcHJlPgotPC91bD4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2dhdGhlci5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2dhdGhlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNWU1NWNhLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9nYXRoZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2FsbF9nYXRoZXI8L2NvZGU+IGZ1bmN0aW9uPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+ICAgIAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICAjaW5jbHVkZSAmbHQ7dXBjX2NvbGxlY3RpdmUuaCZndDsKLSAgICB2b2lkIHVwY19hbGxfZ2F0aGVyKHNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMsIAotICAgICAgICAgICAgICAgICAgICAgICAgdXBjX2ZsYWdfdCBmbGFncyk7IAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLVRoZSA8Y29kZT51cGNfYWxsX2dhdGhlciA8L2NvZGU+ICBmdW5jdGlvbiAKLWNvcGllcyBhIGJsb2NrIG9mIHNoYXJlZCBtZW1vcnkgdGhhdCBoYXMKLWFmZmluaXR5IHRvIHRoZSBpdGggdGhyZWFkIHRvIHRoZSBpdGggYmxvY2sgb2YgYSBzaGFyZWQgbWVtb3J5IGFyZWEgdGhhdCBoYXMKLWFmZmluaXR5IHRvIGEgc2luZ2xlIHRocmVhZC4gVGhlIG51bWJlciBvZiBieXRlcyBpbiBlYWNoIGJsb2NrIGlzIDxjb2RlPm5ieXRlczwvY29kZT4uCi08cD48Y29kZT5uYnl0ZXM8L2NvZGU+IG11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuCi08cD5UaGUgdXBjIGFsbCBnYXRoZXIgZnVuY3Rpb24gdHJlYXRzIHRoZSA8Y29kZT5zcmM8L2NvZGU+IHBvaW50ZXIgYXMgaWYgaXQgcG9pbnRlZCB0byBhCi1zaGFyZWQgbWVtb3J5IGFyZWEgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBvbiBlYWNoIHRocmVhZCBhbmQgdGhlcmVmb3JlIGhhZCB0eXBlOgotPHByZT4KLSAgICBzaGFyZWQgW25ieXRlc10gY2hhcltuYnl0ZXMgKiBUSFJFQURTXQotPC9wcmU+Ci08cD5hbmQgaXQgdHJlYXRzIHRoZSA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXIgYXMgaWYgaXQgcG9pbnRlZCB0byBhIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoCi10aGUgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtdIGNoYXJbbmJ5dGVzICogVEhSRUFEU10KLSAgICA8L3ByZT4KLTxwPlRoZSB0YXJnZXQgb2YgdGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBtdXN0IGhhdmUgYWZmaW5pdHkgdG8gdGhyZWFkIDAuCi08cD5UaGUgPGNvZGU+c3JjPC9jb2RlPiBwb2ludGVyIGlzIHRyZWF0ZWQgYXMgaWYgaXQgaGFzIHBoYXNlIDAuCi08cD5Gb3IgZWFjaCB0aHJlYWQgaSwgdGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIGNvcHlpbmcgdGhlIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMKLXBvaW50ZWQgdG8gYnkgPGNvZGU+c3JjPC9jb2RlPiB0aGF0IGhhcyBhZmZpbml0eSB0byB0aHJlYWQgaSB0byB0aGUgaXRoIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4KLWJ5dGVzIHBvaW50ZWQgdG8gYnkgPGNvZGU+ZHN0PC9jb2RlPi4KLTxwPgotPHVsPgotPGxpPkVYQU1QTEUgMSA8Y29kZT51cGNfYWxsX2dhdGhlciA8L2NvZGU+IGZvciB0aGUgc3RhdGljIFRIUkVBRFMgdHJhbnNsYXRpb24gZW52aXJvbm1lbnQuCi08cHJlPgotI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0jZGVmaW5lIE5FTEVNUyAxMAotc2hhcmVkIFtORUxFTVNdIGludCBBW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBbXSBpbnQgQltORUxFTVMqVEhSRUFEU107Ci0vLyBJbml0aWFsaXplIEEuCi11cGNfYWxsX2dhdGhlciggQiwgQSwgc2l6ZW9mKGludCkqTkVMRU1TLAotVVBDX0lOX0FMTFNZTkMgfCBVUENfT1VUX0FMTFNZTkMgKTsKLTwvcHJlPgotPGxpPkVYQU1QTEUgMiA8Y29kZT51cGNfYWxsX2dhdGhlciA8L2NvZGU+IGZvciB0aGUgZHluYW1pYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQVtORUxFTVMqVEhSRUFEU107Ci1zaGFyZWQgW10gaW50ICpCOwotQiA9IChzaGFyZWQgW10gaW50ICopIHVwY19hbGxfYWxsb2MoMSxORUxFTVMqVEhSRUFEUypzaXplb2YoaW50KSk7Ci0vLyBJbml0aWFsaXplIEEuCi11cGNfYmFycmllcjsKLXVwY19hbGxfZ2F0aGVyKCBCLCBBLCBzaXplb2YoaW50KSpORUxFTVMsCi1VUENfSU5fTk9TWU5DIHwgVVBDX09VVF9OT1NZTkMgKTsKLXVwY19iYXJyaWVyOwotPC9wcmU+Ci08bGk+Ci08bGk+Ci08L3VsPgotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj48cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2dhdGhlcl9hbGwuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9nYXRoZXJfYWxsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMzE5OWUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2dhdGhlcl9hbGwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2FsbF9nYXRoZXJfYWxsPC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfYWxsX2dhdGhlcl9hbGwoc2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBjX2ZsYWdfdCBmbGFncyk7Ci08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfZ2F0aGVyX2FsbCA8L2NvZGU+ICBmdW5jdGlvbiAKLWNvcGllcyBhIGJsb2NrIG9mIG1lbW9yeSBmcm9tIG9uZSBzaGFyZWQKLW1lbW9yeSBhcmVhIHdpdGggYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQgdG8gdGhlIGl0aCBibG9jayBvZiBhIHNoYXJlZAotbWVtb3J5IGFyZWEgb24gZWFjaCB0aHJlYWQuIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBibG9jayBpcyA8Y29kZT5uYnl0ZXM8L2NvZGU+LgotPHA+PGNvZGU+bmJ5dGVzPC9jb2RlPiBtdXN0IGJlIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAwLgotPHA+VGhlIHVwY19hbGxfZ2F0aGVyX2FsbCBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBhcyBpZiBpdCBwb2ludGVkIHRvIGEKLXNoYXJlZCBtZW1vcnkgYXJlYSBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIG9uIGVhY2ggdGhyZWFkIGFuZCB0aGVyZWZvcmUgaGFkIHR5cGU6Ci08cHJlPgotc2hhcmVkIFtuYnl0ZXNdIGNoYXJbbmJ5dGVzICogVEhSRUFEU10KLTwvcHJlPgotPHA+YW5kIGl0IHRyZWF0cyB0aGUgPGNvZGU+ZHN0PC9jb2RlPiAgcG9pbnRlciBhcyBpZiBpdCBwb2ludGVkIHRvIGEgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGgKLXRoZSB0eXBlOgotc2hhcmVkIFtuYnl0ZXMgKiBUSFJFQURTXSBjaGFyW25ieXRlcyAqIFRIUkVBRFMgKiBUSFJFQURTXQotPHA+VGhlIHRhcmdldHMgb2YgdGhlIDxjb2RlPnNyYzwvY29kZT4gYW5kIDxjb2RlPmRzdDwvY29kZT4gcG9pbnRlcnMgbXVzdCBoYXZlIGFmZmluaXR5IHRvIHRocmVhZCAwLgotPHA+VGhlIDxjb2RlPnNyYzwvY29kZT4gYW5kIDxjb2RlPmRzdDwvY29kZT4gIHBvaW50ZXJzIGFyZSB0cmVhdGVkIGFzIGlmIHRoZXkgaGF2ZSBwaGFzZSAwLgotPHA+VGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIGNvcHlpbmcgdGhlIGl0aCBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIHBvaW50ZWQgdG8KLWJ5IDxjb2RlPnNyYzwvY29kZT4gdG8gdGhlIGl0aCBibG9jayBvZiA8Y29kZT5uYnl0ZXM8L2NvZGU+IGJ5dGVzIHBvaW50ZWQgdG8gYnkgPGNvZGU+ZHN0PC9jb2RlPiB0aGF0IGhhcyBhZmZpbml0eQotdG8gZWFjaCB0aHJlYWQuCi0KLQotCi08cD4KLTx1bD4KLTxsaT4gRVhBTVBMRSAxIDxjb2RlPnVwY19hbGxfZ2F0aGVyX2FsbCA8L2NvZGU+IGZvciB0aGUgc3RhdGljIFRIUkVBRFMgdHJhbnNsYXRpb24gZW52aXJvbm1lbnQuCi08cHJlPgotI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0jZGVmaW5lIE5FTEVNUyAxMAotc2hhcmVkIFtORUxFTVNdIGludCBBW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBbTkVMRU1TKlRIUkVBRFNdIGludCBCW1RIUkVBRFNdW05FTEVNUypUSFJFQURTXTsKLS8vIEluaXRpYWxpemUgQS4KLXVwY19iYXJyaWVyOwotdXBjX2FsbF9nYXRoZXJfYWxsKCBCLCBBLCBzaXplb2YoaW50KSpORUxFTVMsCi1VUENfSU5fTk9TWU5DIHwgVVBDX09VVF9OT1NZTkMgKTsKLXVwY19iYXJyaWVyOwotPC9wcmU+Ci08bGk+RVhBTVBMRSAyIDxjb2RlPnVwY19hbGxfZ2F0aGVyX2FsbCA8L2NvZGU+IGFsbCBmb3IgdGhlIGR5bmFtaWMgVEhSRUFEUyB0cmFuc2xhdGlvbgotZW52aXJvbm1lbnQuCi08cHJlPgotI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0jZGVmaW5lIE5FTEVNUyAxMAotc2hhcmVkIFtORUxFTVNdIGludCBBW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBpbnQgKkJkYXRhOwotc2hhcmVkIFtdIGludCAqbXlCOwotQmRhdGEgPSB1cGNfYWxsX2FsbG9jKFRIUkVBRFMqVEhSRUFEUywgTkVMRU1TKnNpemVvZihpbnQpKTsKLW15QiA9IChzaGFyZWQgW10gaW50ICopJkJkYXRhW01ZVEhSRUFEXTsKLS8vIEJkYXRhIGNvbnRhaW5zIFRIUkVBRFMqVEhSRUFEUypORUxFTVMgZWxlbWVudHMuCi0vLyBteUIgaXMgTVlUSFJFQUTVcyByb3cgb2YgQmRhdGEuCi0vLyBJbml0aWFsaXplIEEuCi11cGNfYWxsX2dhdGhlcl9hbGwoIEJkYXRhLCBBLCBORUxFTVMqc2l6ZW9mKGludCksCi1VUENfSU5fQUxMU1lOQyB8IFVQQ19PVVRfQUxMU1lOQyApOwotPC9wcmU+Ci08bGk+Ci08bGk+Ci08L3VsPgotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfbG9ja19hbGxvYy5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX2xvY2tfYWxsb2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI2MjkxMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxfbG9ja19hbGxvYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2FsbF9sb2NrX2FsbG9jPC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdXBjX2xvY2tfdCAqdXBjX2FsbF9sb2NrX2FsbG9jKHZvaWQpOyAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2FsbF9sb2NrX2FsbG9jPC9jb2RlPiAgICBmdW5jdGlvbiBkeW5hbWljYWxseSBhbGxvY2F0ZXMgYSBsb2NrIGFuZCByZXR1cm5zCi1hIHBvaW50ZXIgdG8gaXQuIFRoZSBsb2NrIGlzIGNyZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuCi08cD5UaGUgPGNvZGU+dXBjX2FsbF9sb2NrX2FsbG9jPC9jb2RlPiAgZnVuY3Rpb24gaXMgIGEgPGk+Y29sbGVjdGl2ZTwvaT4gZnVuY3Rpb24uIAotVGhlIHJldHVybiB2YWx1ZSBvbiBldmVyeQotdGhyZWFkIHBvaW50cyB0byB0aGUgc2FtZSBsb2NrIG9iamVjdC4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX3Blcm11dGUuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9wZXJtdXRlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YjkzYjQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX3Blcm11dGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2FsbF9wZXJtdXRlPC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfYWxsX3Blcm11dGUoc2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsCi0gICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLAotICAgICAgICBzaGFyZWQgY29uc3QgaW50ICogcmVzdHJpY3QgcGVybSwKLSAgICAgICAgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyk7Ci08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxfcGVybXV0ZSA8L2NvZGU+ICBmdW5jdGlvbiAKLWNvcGllcyBhIGJsb2NrIG9mIG1lbW9yeSBmcm9tIGEgc2hhcmVkIG1lbW9yeQotYXJlYSB0aGF0IGhhcyBhZmZpbml0eSB0byB0aGUgaXRoIHRocmVhZCB0byBhIGJsb2NrIG9mIGEgc2hhcmVkIG1lbW9yeQotdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhyZWFkIHBlcm1baV0uIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBibG9jayBpcwotPGNvZGU+bmJ5dGVzPC9jb2RlPi4KLTxwPjxjb2RlPm5ieXRlczwvY29kZT4gbXVzdCBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4KLTxwPjxjb2RlPnBlcm1bMC4uVEhSRUFEUy0xXTwvY29kZT4gbXVzdCBjb250YWluIDxjb2RlPlRIUkVBRFM8L2NvZGU+Ci1kaXN0aW5jdCB2YWx1ZXM6IAotPGNvZGU+MCwgMSwgLi4uLCBUSFJFQURTLTEuPC9jb2RlPgotPHA+VGhlIDxjb2RlPnVwY19hbGxfcGVybXV0ZSA8L2NvZGU+IGZ1bmN0aW9uIHRyZWF0cyB0aGUgPGNvZGU+c3JjPC9jb2RlPiBwb2ludGVyIGFuZCB0aGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyCi1hcyBpZiBlYWNoIHBvaW50ZWQgdG8gYSBzaGFyZWQgbWVtb3J5IGFyZWEgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBvbiBlYWNoIHRocmVhZAotYW5kIHRoZXJlZm9yZSBoYWQgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFs8Y29kZT5uYnl0ZXM8L2NvZGU+XSBjaGFyWzxjb2RlPm5ieXRlczwvY29kZT4gKiBUSFJFQURTXQotICAgIDwvcHJlPgotPHA+VGhlIHRhcmdldHMgb2YgdGhlIDxjb2RlPnNyYzwvY29kZT4sIHBlcm0sIGFuZCA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXJzIG11c3QgaGF2ZSBhZmZpbml0eSB0byB0aHJlYWQgMC4KLTxwPlRoZSA8Y29kZT5zcmM8L2NvZGU+IGFuZCA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXJzIGFyZSB0cmVhdGVkIGFzIGlmIHRoZXkgaGF2ZSBwaGFzZSAwLgotPHA+VGhlIGVmZmVjdCBpcyBlcXVpdmFsZW50IHRvIGNvcHlpbmcgdGhlIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgdGhhdCBoYXMgYWZmaW5pdHkKLXRvIHRocmVhZCBpIHBvaW50ZWQgdG8gYnkgPGNvZGU+c3JjPC9jb2RlPiB0byB0aGUgYmxvY2sgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyB0aGF0IGhhcyBhZmZpbml0eQotdG8gdGhyZWFkIHBlcm1baV0gcG9pbnRlZCB0byBieSA8Y29kZT5kc3Q8L2NvZGU+LgotPHVsPgotPGxpPkVYQU1QTEUgMTogPGNvZGU+dXBjX2FsbF9wZXJtdXRlPC9jb2RlPgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBORUxFTVMgMTAKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQVtORUxFTVMqVEhSRUFEU10sIEJbTkVMRU1TKlRIUkVBRFNdOwotc2hhcmVkIGludCBQW1RIUkVBRFNdOwotLy8gSW5pdGlhbGl6ZSBBIGFuZCBQLgotdXBjX2JhcnJpZXI7Ci11cGNfYWxsX3Blcm11dGUoIEIsIEEsIFAsIHNpemVvZihpbnQpKk5FTEVNUywKLVVQQ19JTl9OT1NZTkMgfCBVUENfT1VUX05PU1lOQyApOwotdXBjX2JhcnJpZXI7Ci08L3ByZT4KLQotPC91bD4KLQotIAotPC91bD4KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX3NjYXR0ZXIuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbF9zY2F0dGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMjFlOTIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfYWxsX3NjYXR0ZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLTxoMj5UaGUgPGNvZGU+dXBjX2FsbF9zY2F0dGVyPC9jb2RlPiBmdW5jdGlvbjwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAgICAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfYWxsX3NjYXR0ZXIoc2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICB1cGNfZmxhZ190IGZsYWdzKTsKLSAgICAgICAgICAgICAgIAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLVRoZSA8Y29kZT51cGNfYWxsX3NjYXR0ZXIgPC9jb2RlPiAgZnVuY3Rpb24gCi1jb3BpZXMgdGhlIGl0aCBibG9jayBvZiBhbiBhcmVhIG9mIHNoYXJlZAotbWVtb3J5IHdpdGggYWZmaW5pdHkgdG8gYSBzaW5nbGUgdGhyZWFkIHRvIGEgYmxvY2sgb2Ygc2hhcmVkIG1lbW9yeSB3aXRoCi1hZmZpbml0eSB0byB0aGUgaXRoIHRocmVhZC4gVGhlIG51bWJlciBvZiBieXRlcyBpbiBlYWNoIGJsb2NrIGlzIDxjb2RlPm5ieXRlczwvY29kZT4uCi08cD48Y29kZT5uYnl0ZXM8L2NvZGU+IG11c3QgYmUgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDAuCi08cD5UaGUgPGNvZGU+dXBjX2FsbF9zY2F0dGVyIDwvY29kZT4gIGZ1bmN0aW9uIHRyZWF0cyB0aGUgPGNvZGU+c3JjPC9jb2RlPiBwb2ludGVyIGFzIGlmIGl0IHBvaW50ZWQgdG8gYQotc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggdGhlIHR5cGU6Ci08cHJlPgotICAgIHNoYXJlZCBbXSBjaGFyW25ieXRlcyAqIFRIUkVBRFNdCi0gPC9wcmU+Ci08cD5hbmQgaXQgdHJlYXRzIHRoZSA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXIgYXMgaWYgaXQgcG9pbnRlZCB0byBhIHNoYXJlZCBtZW1vcnkgYXJlYSB3aXRoCi10aGUgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtuYnl0ZXNdIGNoYXJbbmJ5dGVzICogVEhSRUFEU10KLTwvcHJlPgotPHA+VGhlIHRhcmdldCBvZiB0aGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyIG11c3QgaGF2ZSBhZmZpbml0eSB0byB0aHJlYWQgMC4KLTxwPlRoZSA8Y29kZT5kc3Q8L2NvZGU+IHBvaW50ZXIgaXMgdHJlYXRlZCBhcyBpZiBpdCBoYXMgcGhhc2UgMC4KLTxwPkZvciBlYWNoIHRocmVhZCBpLCB0aGUgZWZmZWN0IGlzIGVxdWl2YWxlbnQgdG8gY29weWluZyB0aGUgaXRoIGJsb2NrIG9mIDxjb2RlPm5ieXRlczwvY29kZT4KLWJ5dGVzIHBvaW50ZWQgdG8gYnkgPGNvZGU+c3JjPC9jb2RlPiB0byB0aGUgYmxvY2sgb2YgPGNvZGU+bmJ5dGVzPC9jb2RlPiBieXRlcyBwb2ludGVkIHRvIGJ5IAotPGNvZGU+ZHN0PC9jb2RlPiB0aGF0Ci1oYXMgYWZmaW5pdHkgdG8gdGhyZWFkIGkuCi08dWw+Ci08bGk+RVhBTVBMRSAxOiA8Y29kZT51cGNfYWxsX3NjYXR0ZXI8L2NvZGU+IGZvciB0aGUgZHluYW1pYyBUSFJFQURTIHRyYW5zbGF0aW9uIGVudmlyb25tZW50LgotPHByZT4KLSNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSNpbmNsdWRlICZsdDt1cGNfY29sbGVjdGl2ZS5oJmd0OwotI2RlZmluZSBOVU1FTEVNUyAxMAotI2RlZmluZSBTUkNfVEhSRUFEIDEKLXNoYXJlZCBpbnQgKkE7Ci1zaGFyZWQgW10gaW50ICpteUEsICpzcmNBOwotc2hhcmVkIFtOVU1FTEVNU10gaW50IEJbTlVNRUxFTVMqVEhSRUFEU107Ci0vLyBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhbiBhcnJheSBkaXN0cmlidXRlZCBhY3Jvc3MgYWxsIHRocmVhZHMKLUEgPSB1cGNfYWxsX2FsbG9jKFRIUkVBRFMsIFRIUkVBRFMqTlVNRUxFTVMqc2l6ZW9mKGludCkpOwotbXlBID0gKHNoYXJlZCBbXSBpbnQgKikgJkFbTVlUSFJFQURdOwotZm9yIChpPTA7IGk8TlVNRUxFTVMqVEhSRUFEUzsgaSsrKQotbXlBW2ldID0gaSArIE5VTUVMRU1TKlRIUkVBRFMqTVlUSFJFQUQ7IC8vIChmb3IgZXhhbXBsZSkKLS8vIHNjYXR0ZXIgdGhlIFNSQ19USFJFQUTVcyByb3cgb2YgdGhlIGFycmF5Ci1zcmNBID0gKHNoYXJlZCBbXSBpbnQgKikgJkFbU1JDX1RIUkVBRF07Ci11cGNfYmFycmllcjsKLXVwY19hbGxfc2NhdHRlciggQiwgc3JjQSwgc2l6ZW9mKGludCkqTlVNRUxFTVMsCi1VUENfSU5fTk9TWU5DIHwgVVBDX09VVF9OT1NZTkMpOwotdXBjX2JhcnJpZXI7Ci08L3ByZT4KLTxsaT5FWEFNUExFIDI6IDxjb2RlPnVwY19hbGxfc2NhdHRlcjwvY29kZT4gIGZvciB0aGUgc3RhdGljIFRIUkVBRFMgdHJhbnNsYXRpb24gZW52aXJvbm1lbnQuCi08cHJlPgotI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotI2luY2x1ZGUgJmx0O3VwY19jb2xsZWN0aXZlLmgmZ3Q7Ci0jZGVmaW5lIE5FTEVNUyAxMAotc2hhcmVkIFtdIGludCBBW05FTEVNUypUSFJFQURTXTsKLXNoYXJlZCBbTkVMRU1TXSBpbnQgQltORUxFTVMqVEhSRUFEU107Ci0gCi0vLyBJbml0aWFsaXplIEEuCi11cGNfYWxsX3NjYXR0ZXIoIEIsIEEsIHNpemVvZihpbnQpKk5FTEVNUywKLVVQQ19JTl9BTExTWU5DIHwgVVBDX09VVF9BTExTWU5DICk7Ci08L3ByZT4KLSAKLTwvdWw+Ci08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbG9jLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19hbGxvYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Zjk0YmIwLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2FsbG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfYWxsb2M8L2NvZGU+IGZ1bmN0aW9uICAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgc2hhcmVkIHZvaWQgKnVwY19hbGxvYyhzaXplX3QgbmJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19hbGxvYyAgPC9jb2RlPiBhbGxvY2F0ZXMgc2hhcmVkIHNwYWNlIG9mIGF0IGxlYXN0IDxjb2RlPm5ieXRlczwvY29kZT4gYnl0ZXMgd2l0aAotYWZmaW5pdHkgdG8gdGhlIGNhbGxpbmcgdGhyZWFkLgotPHA+Ci08Y29kZT51cGNfYWxsb2M8L2NvZGU+IGlzIHNpbWlsYXIgdG8gbWFsbG9jKCkgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIHBvaW50ZXItdG8tc2hhcmVkCi12YWx1ZS4gSXQgaXMgbm90IGEgPGk+Y29sbGVjdGl2ZTwvaT4gZnVuY3Rpb24uIElmIDxjb2RlPm5ieXRlczwvY29kZT4gaXMgemVybywgdGhlIHJlc3VsdCBpcyBhIG51bGwKLXBvaW50ZXItdG8tc2hhcmVkLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2ZyZWUuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2ZyZWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRiZjY3OS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19mcmVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfZnJlZTwvY29kZT4gZnVuY3Rpb24gICA8L2gyPgotPGg0PlN5bm9wc2lzPC9oND4KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICB2b2lkIHVwY19mcmVlKHNoYXJlZCB2b2lkICpwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfZnJlZSA8L2NvZGU+ICAgZnVuY3Rpb24gZnJlZXMgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzaGFyZWQgc3RvcmFnZSBwb2ludGVkCi10byBieSA8Y29kZT5wdHI8L2NvZGU+LiBJZiA8Y29kZT5wdHI8L2NvZGU+IGlzIGEgbnVsbCBwb2ludGVyLCBubyBhY3Rpb24gb2NjdXJzLiBPdGhlcndpc2UsIGlmIHRoZQotYXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYSBwb2ludGVyIGVhcmxpZXIgcmV0dXJuZWQgYnkgdGhlIAotPGEgaHJlZj0idXBjX2FsbG9jLmh0bWwiPjxjb2RlPnVwY19hbGxvYzwvY29kZT48L2E+LAotPGEgaHJlZj0idXBjX2dsb2JhbF9hbGxvYy5odG1sIj48Y29kZT51cGNfZ2xvYmFsX2FsbG9jPC9jb2RlPjwvYT4sCi08YSBocmVmPSJ1cGNfYWxsX2FsbG9jLmh0bWwiPjxjb2RlPnVwY19hbGxfYWxsb2M8L2NvZGU+PC9hPiwgb3IgCi08YSBocmVmPSJ1cGNfbG9jYWxfYWxsb2MuaHRtbCI+PGNvZGU+dXBjX2xvY2FsX2FsbG9jPC9jb2RlPjwvYT4KLWZ1bmN0aW9uLCBvciBpZiB0aGUKLXNwYWNlIGhhcyBiZWVuIGRlYWxsb2NhdGVkIGJ5IGEgcHJldmlvdXMgY2FsbCwgYnkgYW55IHRocmVhZCAKLShpLmUuLCBvbmx5IG9uZSB0aHJlYWQgbWF5IGNhbGwgPGNvZGU+dXBjX2ZyZWUgPC9jb2RlPiBmb3IgZWFjaCBhbGxvY2F0aW9uKSwKLXRvIDxjb2RlPnVwY19mcmVlPC9jb2RlPiwKLXRoZSBiZWhhdmlvciBpcyB1bmRlZmluZWQuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfZ2xvYmFsX2FsbG9jLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfYWxsb2MuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM3MzUyNS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfYWxsb2MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTxoMiA+dXBjX2dsb2JhbF9hbGxvYzwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLTxwcmU+Ci0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNoYXJlZCB2b2lkICp1cGNfZ2xvYmFsX2FsbG9jKHNpemVfdCBuYmxvY2tzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzKTsKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfZ2xvYmFsX2FsbG9jPC9jb2RlPiBhbGxvY2F0ZXMgc2hhcmVkIHNwYWNlIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVjbGFyYXRpb246Ci08cD4KLTxjb2RlPgotc2hhcmVkIFtuYnl0ZXNdIGNoYXJbbmJsb2NrcyAqIG5ieXRlc108L2NvZGU+Ci08cD4KLTxjb2RlPnVwY19nbG9iYWxfYWxsb2M8L2NvZGU+IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbGxlY3RpdmUgZnVuY3Rpb24uIElmIGNhbGxlZCBieQotbXVsdGlwbGUgdGhyZWFkcywgYWxsIHRocmVhZHMgd2hpY2ggbWFrZSB0aGUgY2FsbCBnZXQgZGlmZmVyZW50IGFsbG9jYXRpb25zLiBJZgotPGNvZGU+bmJsb2NrcypuYnl0ZXM8L2NvZGU+IGlzIHplcm8sIHRoZSByZXN1bHQgaXMgYSBudWxsIHBvaW50ZXItdG8tc2hhcmVkLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2dsb2JhbF9leGl0Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfZXhpdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjJmOTk4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2dsb2JhbF9leGl0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfZ2xvYmFsX2V4aXQ8L2NvZGU+IGZ1bmN0aW9uIDwvaDI+Ci08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4KLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfZ2xvYmFsX2V4aXQoaW50IHN0YXR1cyk7Ci08L3ByZT4KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLTxwPgotPGNvZGU+dXBjX2dsb2JhbF9leGl0KCkgPC9jb2RlPgotZmx1c2hlcyBhbGwgSS9PLCByZWxlYXNlcyBhbGwgc3RvcmFnZSwgYW5kIHRlcm1pbmF0ZXMgdGhlCi1leGVjdXRpb24gZm9yIGFsbCBhY3RpdmUgdGhyZWFkcy4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+Ci0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2dsb2JhbF9sb2NrX2FsbG9jLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19nbG9iYWxfbG9ja19hbGxvYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGUzNWZmLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2dsb2JhbF9sb2NrX2FsbG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfZ2xvYmFsX2xvY2tfYWxsb2M8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHVwY19sb2NrX3QgKnVwY19nbG9iYWxfbG9ja19hbGxvYyh2b2lkKTsgICAgICAgICAgICAgICAgICAgICAgCi08L3ByZT4KLQotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfZ2xvYmFsX2xvY2tfYWxsb2MgPC9jb2RlPiAgIGZ1bmN0aW9uIGR5bmFtaWNhbGx5IGFsbG9jYXRlcyBhIGxvY2sgYW5kIHJldHVybnMKLWEgcG9pbnRlciB0byBpdC4gVGhlIGxvY2sgaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0ZS4KLTxwPlRoZSA8Y29kZT51cGNfZ2xvYmFsX2xvY2tfYWxsb2MgPC9jb2RlPiBmdW5jdGlvbiBpcyBub3QgYSA8aT5jb2xsZWN0aXZlPC9pPiBmdW5jdGlvbi4gIElmIGNhbGxlZAotYnkgbXVsdGlwbGUgdGhyZWFkcywgYWxsIHRocmVhZHMgd2hpY2ggbWFrZSB0aGUgY2FsbCBnZXQgZGlmZmVyZW50IGFsbG9jYXRpb25zLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2FsX2FsbG9jLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NhbF9hbGxvYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjQ3YTFhLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2FsX2FsbG9jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfbG9jYWxfYWxsb2M8L2NvZGU+IGZ1bmN0aW9uICZuYnNwOyZuYnNwOyA8aT5kZXByZWNhdGVkPC9pPiA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgc2hhcmVkIHZvaWQgKnVwY19sb2NhbF9hbGxvYyhzaXplX3QgbmJsb2NrcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19sb2NhbF9hbGxvYyA8L2NvZGU+IGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gVVBDCi1wcm9ncmFtcyBzaG91bGQgdXNlIHRoZSA8Y29kZT51cGNfYWxsb2MgPC9jb2RlPiBmdW5jdGlvbiBpbnN0ZWFkLiBTdXBwb3J0IG1heSBiZSByZW1vdmVkCi1pbiBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLgotPHA+Ci1UaGUgPGNvZGU+dXBjX2xvY2FsX2FsbG9jIDwvY29kZT4gZnVuY3Rpb24gYWxsb2NhdGVzIHNoYXJlZCBzcGFjZSBvZiBhdCBsZWFzdCAKLTxjb2RlPm5ibG9ja3MgKiBuYnl0ZXMgPC9jb2RlPiBieXRlcyB3aXRoIGFmZmluaXR5IHRvIHRoZSBjYWxsaW5nIHRocmVhZC4gSWYgCi08Y29kZT5uYmxvY2tzICogbmJ5dGVzIDwvY29kZT4gIGlzIHplcm8sCi10aGUgcmVzdWx0IGlzIGEgbnVsbCBwb2ludGVyLXRvLXNoYXJlZC4KLTxwPgotPGNvZGU+dXBjX2xvY2FsX2FsbG9jIDwvY29kZT4gaXMgc2ltaWxhciB0byBtYWxsb2MoKSBleGNlcHQgdGhhdCBpdCByZXR1cm5zIGEgcG9pbnRlci10by1zaGFyZWQKLXZhbHVlLiBJdCBpcyBub3QgYSA8aT5jb2xsZWN0aXZlPC9pPiBmdW5jdGlvbi4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMDkxOWUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9jay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2xvY2s8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPgotCi08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfbG9jayh1cGNfbG9ja190ICpwdHIpOyAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX2xvY2s8L2NvZGU+ICAgIGZ1bmN0aW9uICBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgbG9jayBwb2ludGVkIHRvIGJ5IDxjb2RlPnB0cjwvY29kZT4gdG8gbG9ja2VkLgotPHA+SWYgdGhlIGxvY2sgaXMgYWxyZWFkeSBpbiBsb2NrZWQgc3RhdGUgZHVlIHRvIHRoZSBjYWxsaW5nIHRocmVhZCBzZXR0aW5nIGl0IHRvCi1sb2NrZWQgc3RhdGUsIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgotPHA+SWYgdGhlIGxvY2sgaXMgYWxyZWFkeSBpbiBsb2NrZWQgc3RhdGUsIHRoZW4gdGhlIGNhbGxpbmcgdGhyZWFkIHdhaXRzIGZvciBzb21lCi1vdGhlciB0aHJlYWQgdG8gc2V0IHRoZSBzdGF0ZSB0byB1bmxvY2tlZC4gCi08cD5PbmNlIHRoZSBsb2NrIGlzIGluIHN0YXRlIHVubG9ja2VkLCBhIHNpbmdsZSBjYWxsaW5nIHRocmVhZCBzZXRzIHRoZSBzdGF0ZSB0bwotbG9ja2VkIGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucy4KLTxwPkEgbnVsbCBzdHJpY3QgYWNjZXNzIGlzIGltcGxpZWQgYWZ0ZXIgYSBjYWxsIHRvIHVwY19sb2NrKCkuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbG9ja19hdHRlbXB0Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX2F0dGVtcHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y5MmE5Yi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX2F0dGVtcHQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY19sb2NrX2F0dGVtcHQ8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPgotCi08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgaW50IHVwY19sb2NrX2F0dGVtcHQodXBjX2xvY2tfdCAqcHRyKTsgICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19sb2NrX2F0dGVtcHQ8L2NvZGU+ICAgIGZ1bmN0aW9uICBhdHRlbXB0cyB0byBzZXQgdGhlIHN0YXRlIG9mIHRoZSBsb2NrIHBvaW50ZWQKLXRvIGJ5IDxjb2RlPnB0cjwvY29kZT4gdG8gbG9ja2VkLgotPHA+SWYgdGhlIGxvY2sgaXMgYWxyZWFkeSBpbiBsb2NrZWQgc3RhdGUgZHVlIHRvIHRoZSBjYWxsaW5nIHRocmVhZCBzZXR0aW5nIGl0IHRvCi1sb2NrZWQgc3RhdGUsIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgotPHA+SWYgdGhlIGxvY2sgaXMgYWxyZWFkeSBpbiBsb2NrZWQgc3RhdGUgdGhlIGZ1bmN0aW9uIHJldHVybnMgMC4KLTxwPklmIHRoZSBsb2NrIGlzIGluIHN0YXRlIHVubG9ja2VkLCBhIHNpbmdsZSBjYWxsaW5nIHRocmVhZCBzZXRzIHRoZSBzdGF0ZSB0byBsb2NrZWQKLWFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucyAxLgotPHA+QSBudWxsIHN0cmljdCBhY2Nlc3MgaXMgaW1wbGllZCBhZnRlciBhIGNhbGwgdG8gdXBjX2xvY2tfYXR0ZW1wdCgpIHRoYXQgcmV0dXJucwotMS4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX2ZyZWUuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2tfZnJlZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTZkM2YzLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2tfZnJlZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotPGgyID5UaGUgPGNvZGU+dXBjX2xvY2tfZnJlZTwvY29kZT4gZnVuY3Rpb24gICA8L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHA+Ci0KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICB1cGNfbG9ja190ICp1cGNfbG9ja19mcmVlKHVwY19sb2NrX3QgKnB0cik7ICAgICAgICAgICAgICAgICAgICAgCi08L3ByZT4KLQotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfbG9ja19mcmVlPC9jb2RlPiAgICBmdW5jdGlvbiAgZnJlZXMgYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGR5bmFtaWNhbGx5Ci1hbGxvY2F0ZWQgPGNvZGU+dXBjX2xvY2tfdDwvY29kZT4gcG9pbnRlZCB0byBieSA8Y29kZT5wdHI8L2NvZGU+LiAKLUlmIDxjb2RlPnB0cjwvY29kZT4gaXMgYSBudWxsIHBvaW50ZXIsIG5vCi1hY3Rpb24gb2NjdXJzLiAKLU90aGVyd2lzZSwgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGEgcG9pbnRlciBlYXJsaWVyCi1yZXR1cm5lZCBieSB0aGUgPGNvZGU+dXBjX2dsb2JhbF9sb2NrX2FsbG9jPC9jb2RlPiBvciAKLTxjb2RlPnVwY19hbGxfbG9ja19hbGxvYzwvY29kZT4gZnVuY3Rpb24sCi1vciBpZiB0aGUgbG9jayBoYXMgYmVlbiBkZWFsbG9jYXRlZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gPGNvZGU+dXBjX2xvY2tfZnJlZTwvY29kZT4sCi10aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkLgotPHA+Ci08Y29kZT51cGNfbG9ja19mcmVlPC9jb2RlPiBzdWNjZWVkcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHJlZmVyZW5jZWQgbG9jayBpcyBjdXJyZW50bHkKLXVubG9ja2VkIG9yIGN1cnJlbnRseSBsb2NrZWQgKGJ5IGFueSB0aHJlYWQpLgotPHA+QW55IHN1YnNlcXVlbnQgY2FsbHMgdG8gbG9ja2luZyBmdW5jdGlvbnMgZnJvbSBhbnkgdGhyZWFkIHVzaW5nIDxjb2RlPnB0cjwvY29kZT4gaGF2ZQotdW5kZWZpbmVkIGVmZmVjdHMuIFRoaXMgYWxzbyBhcHBsaWVzIHRvIGFueSB0aHJlYWQgY3VycmVudGx5IGNhbGxpbmcgPGNvZGU+dXBjX2xvY2s8L2NvZGU+LgotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19sb2NrX3QuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2tfdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmFhNTk2Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX2xvY2tfdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfbG9ja190PC9jb2RlPiB0eXBlPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPlRoZSB0eXBlIGRlY2xhcmVkIGlzCi08cHJlPiAgIAotICAgIHVwY19sb2NrX3QgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotPHA+Ci1UaGUgdHlwZSA8Y29kZT51cGNfbG9ja190IDwvY29kZT4gIGlzIGFuIG9wYXF1ZSBVUEMgdHlwZS4gPGNvZGU+dXBjX2xvY2tfdCA8L2NvZGU+IGlzIGEgc2hhcmVkCi1kYXRhdHlwZSB3aXRoIGluY29tcGxldGUgdHlwZSAoYXMgZGVmaW5lZCBpbiBbSVNPL0lFQzAwIFNlYyA2LjIuNV0pLiAKLU9iamVjdHMKLW9mIHR5cGUgPGNvZGU+dXBjX2xvY2tfdCA8L2NvZGU+IG1heSB0aGVyZWZvcmUgb25seSBiZSBtYW5pcHVsYXRlZCB0aHJvdWdoIHBvaW50ZXJzLgotU3VjaCBvYmplY3RzIGhhdmUgdHdvIHN0YXRlcyBjYWxsZWQgbG9ja2VkIGFuZCB1bmxvY2tlZC4KLTxwPlR3byBwb2ludGVycyB0byB0aGF0IHJlZmVyZW5jZSB0aGUgc2FtZSBsb2NrIG9iamVjdCB3aWxsIGNvbXBhcmUgYXMgZXF1YWwuCi1UaGUgcmVzdWx0cyBvZiBhcHBseWluZyB1cGNfcGhhc2VvZigpLCB1cGNfdGhyZWFkb2YoKSwgYW5kIHVwY19hZGRyZmllbGQoKQotdG8gc3VjaCBwb2ludGVycyBhcmUgdW5kZWZpbmVkLgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtY3B5Lmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19tZW1jcHkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzVlNGFmNi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19tZW1jcHkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY19tZW1jcHk8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPgotCi08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfbWVtY3B5KHNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCAKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbik7Ci0gICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX21lbWNweTwvY29kZT4gICAgZnVuY3Rpb24gIGNvcGllcyBuIGNoYXJhY3RlcnMgZnJvbSBhIHNoYXJlZCBvYmplY3QgaGF2aW5nCi1hZmZpbml0eSB3aXRoIG9uZSB0aHJlYWQgdG8gYSBzaGFyZWQgb2JqZWN0IGhhdmluZyBhZmZpbml0eSB3aXRoIHRoZSBzYW1lIG9yCi1hbm90aGVyIHRocmVhZC4KLTxwPlRoZSA8Y29kZT51cGNfbWVtY3B5PC9jb2RlPiBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPmRzdDwvY29kZT4gYW5kIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlcnMgYXMgaWYgCi10aGV5IGhhZCB0eXBlOgotPHByZT4KLSAgICBzaGFyZWQgW10gY2hhcltuXQotPC9wcmU+Ci1UaGUgZWZmZWN0IGlzIGVxdWl2YWxlbnQgdG8gY29weWluZyB0aGUgZW50aXJlIGNvbnRlbnRzIGZyb20gb25lIHNoYXJlZCBhcnJheQotb2JqZWN0IHdpdGggdGhpcyB0eXBlICh0aGUgPGNvZGU+c3JjPC9jb2RlPiBhcnJheSkgdG8gYW5vdGhlciBzaGFyZWQgYXJyYXkgb2JqZWN0IHdpdGgKLXRoaXMgdHlwZSAodGhlIDxjb2RlPmRzdDwvY29kZT4gYXJyYXkpLgotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbWdldC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtZ2V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYmM0NDQuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtZ2V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfbWVtZ2V0PC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHZvaWQgdXBjX21lbWdldCh2b2lkICogcmVzdHJpY3QgZHN0LCAKLSAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbik7Ci0gICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX21lbWdldDwvY29kZT4gICAgZnVuY3Rpb24gIGNvcGllcyBuIGNoYXJhY3RlcnMgZnJvbSBhIHNoYXJlZCBvYmplY3Qgd2l0aCBhZmZpbml0eQotdG8gYW55IHNpbmdsZSB0aHJlYWQgdG8gYW4gb2JqZWN0IG9uIHRoZSBjYWxsaW5nIHRocmVhZC4KLTxwPlRoZSA8Y29kZT51cGNfbWVtZ2V0PC9jb2RlPiBmdW5jdGlvbiB0cmVhdHMgdGhlIDxjb2RlPnNyYzwvY29kZT4gcG9pbnRlciBhcyBpZiBpdCBoYWQgdHlwZToKLTxwcmU+Ci0gICAgc2hhcmVkIFtdIGNoYXJbbl0KLSAgICA8L3ByZT4KLVRoZSBlZmZlY3QgaXMgZXF1aXZhbGVudCB0byBjb3B5aW5nIHRoZSBlbnRpcmUgY29udGVudHMgZnJvbSBvbmUgc2hhcmVkIGFycmF5Ci1vYmplY3Qgd2l0aCB0aGlzIHR5cGUgKHRoZSA8Y29kZT5zcmM8L2NvZGU+IGFycmF5KSB0byBhbiBhcnJheSBvYmplY3QgKHRoZSA8Y29kZT5kc3Q8L2NvZGU+IGFycmF5KQotZGVjbGFyZWQgd2l0aCB0aGUgdHlwZQotPHByZT4KLSAgICBjaGFyW25dCi08L3ByZT4KLQotCi08cD4mbmJzcAotPHA+Jm5ic3AKLTxwPjxhIGhyZWY9InRlcm1zLmh0bWwiPlRlcm1zLCBkZWZpbml0aW9ucywgYW5kIHN5bWJvbHM8L2E+PGJyPgotPHA+PGEgaHJlZj0iaW5kZXguaHRtbCI+QmFjayB0byBpbmRleCBvZiBhbGwgVVBDIGZ1bmN0aW9uczwvYT4KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX21lbXNldC5odG1sIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtc2V0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NGQ4MjAuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfbWVtc2V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi08aDIgPlRoZSA8Y29kZT51cGNfbWVtc2V0PC9jb2RlPiBmdW5jdGlvbiAgIDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLQotPHByZT4gCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHZvaWQgdXBjX21lbXNldChzaGFyZWQgdm9pZCAqZHN0LCAKLSAgICAgICAgICAgICAgICAgICAgaW50IGMsIAotICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbik7Ci0gICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci0KLTxwPgotPGg0PkRlc2NyaXB0aW9uPC9oND4KLQotPHA+Ci1UaGUgPGNvZGU+dXBjX21lbXNldDwvY29kZT4gICAgZnVuY3Rpb24gIGNvcGllcyB0aGUgdmFsdWUgb2YgYywgY29udmVydGVkIHRvIGFuIHVuc2lnbmVkCi1jaGFyLCB0byBhIHNoYXJlZCBvYmplY3Qgd2l0aCBhZmZpbml0eSB0byBhbnkgc2luZ2xlIHRocmVhZC4gVGhlIG51bWJlciBvZgotYnl0ZXMgc2V0IGlzIG4uCi08cD5UaGUgPGNvZGU+dXBjX21lbXNldDwvY29kZT4gIGZ1bmN0aW9uIHRyZWF0cyB0aGUgPGNvZGU+ZHN0PC9jb2RlPiBwb2ludGVyIGFzIGlmIGhhZCB0eXBlOgotPHByZT4KLSAgICBzaGFyZWQgW10gY2hhcltuXQotPC9wcmU+Ci0gICAgCi1UaGUgZWZmZWN0IGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgc2hhcmVkIGFycmF5IG9iamVjdAotd2l0aCB0aGlzIHR5cGUgKHRoZSA8Y29kZT5kc3Q8L2NvZGU+IGFycmF5KSB0byB0aGUgdmFsdWUgYy4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19waGFzZW9mLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19waGFzZW9mLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZTRiZmEuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfcGhhc2VvZi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfcGhhc2VvZjwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNpemVfdCB1cGNfcGhhc2VvZihzaGFyZWQgdm9pZCAqcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY19waGFzZW9mIDwvY29kZT4gZnVuY3Rpb24gIHJldHVybnMgdGhlIHBoYXNlIGNvbXBvbmVudCBvZiB0aGUgcG9pbnRlci10by1zaGFyZWQKLWFyZ3VtZW50LgotPHA+SWYgPGNvZGU+cHRyPC9jb2RlPiBpcyBhIG51bGwgcG9pbnRlci10by1zaGFyZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuCi0KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19yZXNldHBoYXNlLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY19yZXNldHBoYXNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjc4MDIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfcmVzZXRwaGFzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPGgyPlRoZSA8Y29kZT51cGNfcmVzZXRwaGFzZTwvY29kZT4gZnVuY3Rpb248L2gyPgotCi08aDQ+U3lub3BzaXM8L2g0PgotPHByZT4gICAgCi0gICAgI2luY2x1ZGUgJmx0O3VwYy5oJmd0OwotICAgIHNoYXJlZCB2b2lkICp1cGNfcmVzZXRwaGFzZShzaGFyZWQgdm9pZCAqcHRyKTsgICAgICAgICAgICAgICAgICAgICAKLTwvcHJlPgotPHA+Ci08aDQ+RGVzY3JpcHRpb248L2g0PgotCi08cD4KLVRoZSA8Y29kZT51cGNfcmVzZXRwaGFzZSA8L2NvZGU+IGZ1bmN0aW9uICAgcmV0dXJucyBhIHBvaW50ZXItdG8tc2hhcmVkIHdoaWNoIGlzIGlkZW50aWNhbAotdG8gaXRzIGlucHV0IGV4Y2VwdCB0aGF0IGl0IGhhcyB6ZXJvIHBoYXNlLgotCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfdGhyZWFkb2YuaHRtbCBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL2h0bWwvdXBjX3RocmVhZG9mLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjQxMGIuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfdGhyZWFkb2YuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY190aHJlYWRvZjwvY29kZT4gZnVuY3Rpb24gJm5ic3A7Jm5ic3A7IDwvaDI+Ci0KLTxoND5TeW5vcHNpczwvaDQ+Ci08cD4KLTxwcmU+IAotICAgICNpbmNsdWRlICZsdDt1cGMuaCZndDsKLSAgICBzaXplX3QgdXBjX3RocmVhZG9mKHNoYXJlZCB2b2lkICpwdHIpOyAgICAgICAgICAgICAgICAgICAgICAgIAotPC9wcmU+Ci08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci08cD4KLVRoZSA8Y29kZT51cGNfdGhyZWFkb2YgPC9jb2RlPmZ1bmN0aW9uIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSB0aHJlYWQgdGhhdCBoYXMgYWZmaW5pdHkKLXRvIHRoZSBzaGFyZWQgb2JqZWN0IHBvaW50ZWQgdG8gYnkgPGNvZGU+cHRyPC9jb2RlPi4KLTxwPgotSWYgPGNvZGU+cHRyPC9jb2RlPiBpcyBhIG51bGwgcG9pbnRlci10by1zaGFyZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuCi0KLTxwPiZuYnNwCi08cD4mbmJzcAotPHA+PGEgaHJlZj0idGVybXMuaHRtbCI+VGVybXMsIGRlZmluaXRpb25zLCBhbmQgc3ltYm9sczwvYT48YnI+Ci08cD48YSBocmVmPSJpbmRleC5odG1sIj5CYWNrIHRvIGluZGV4IG9mIGFsbCBVUEMgZnVuY3Rpb25zPC9hPgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaHRtbC91cGNfdW5sb2NrLmh0bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY191bmxvY2suaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTEyZDBhYi4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9odG1sL3VwY191bmxvY2suaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLTxoMiA+VGhlIDxjb2RlPnVwY191bmxvY2s8L2NvZGU+IGZ1bmN0aW9uICAgPC9oMj4KLQotPGg0PlN5bm9wc2lzPC9oND4KLTxwPgotCi08cHJlPiAKLSAgICAjaW5jbHVkZSAmbHQ7dXBjLmgmZ3Q7Ci0gICAgdm9pZCB1cGNfdW5sb2NrKHVwY19sb2NrX3QgKnB0cik7ICAgICAgICAgICAgICAKLTwvcHJlPgotCi08cD4KLTxoND5EZXNjcmlwdGlvbjwvaDQ+Ci0KLTxwPgotVGhlIDxjb2RlPnVwY191bmxvY2s8L2NvZGU+ICAgIGZ1bmN0aW9uICBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgbG9jayBwb2ludGVkIHRvIGJ5IDxjb2RlPnB0cjwvY29kZT4gdG8KLXVubG9ja2VkLgotPHA+VW5sZXNzIHRoZSBsb2NrIGlzIGluIGxvY2tlZCBzdGF0ZSBhbmQgdGhlIGNhbGxpbmcgdGhyZWFkIGlzIHRoZSBsb2NraW5nIHRocmVhZCwKLXRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgotPHA+QSBudWxsIHN0cmljdCBhY2Nlc3MgaXMgaW1wbGllZCBiZWZvcmUgYSBjYWxsIHRvIHVwYyB1bmxvY2soKS4KLQotPHA+Jm5ic3AKLTxwPiZuYnNwCi08cD48YSBocmVmPSJ0ZXJtcy5odG1sIj5UZXJtcywgZGVmaW5pdGlvbnMsIGFuZCBzeW1ib2xzPC9hPjxicj4KLTxwPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkJhY2sgdG8gaW5kZXggb2YgYWxsIFVQQyBmdW5jdGlvbnM8L2E+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9pY29ucy8uY3ZzaWdub3JlIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaWNvbnMvLmN2c2lnbm9yZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJmMmViOC4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9pY29ucy8uY3ZzaWdub3JlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcHNwYnJ3c2UuamJmCmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9pY29ucy91cGMuZ2lmIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvaWNvbnMvdXBjLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFhODczMy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9pY29ucy91cGMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvcGx1Z2luLnByb3BlcnRpZXMgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9wbHVnaW4ucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJkZmZiNy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9wbHVnaW4ucHJvcGVydGllcworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLSMgICAgdGVzdCBwbHVnaW4ucHJvcGVydGllcwotIyBUaGVzZSBuYW1lcyB3aWxsIGJlIHVzZWQgaW4gcGx1Z2luLnhtbCAKLSMKLQotdmlldy5uYW1lPVVQQyBBcnRpZmFjdCBWaWV3Ci12aWV3Y2F0Lm5hbWU9UFRQIFVQQyBWaWV3cwotcnVuLmxhYmVsPVJ1biBVUEMgQW5hbHlzaXMKLXJ1bi50b29sdGlwPVJ1biBVUEMgQW5hbHlzaXMgb24gc2VsZWN0ZWQgZmlsZSwgZm9sZGVyLCBvciBwcm9qZWN0IHRvIGZpbmQgVVBDIEFydGlmYWN0cwotCi0jbmVlZCB0byBhZGQgbW9yZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3BsdWdpbi54bWwgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9wbHVnaW4ueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmZmNDQ0Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3BsdWdpbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/PgotPHBsdWdpbj4KLSAgIAotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnByZWZlcmVuY2VQYWdlcyI+Ci0gICAgICAgICA8cGFnZQotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5wcmVmcy5VUENQcmVmZXJlbmNlUGFnZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMucHJlZnBhZ2UiCi0gICAgICAgICAgICBjYXRlZ29yeT0ib3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLnByZWZzLlBMRFRQcmVmZXJlbmNlUGFnZSIKLSAgICAgICAgICAgIG5hbWU9IlVQQyIvPgotICAgICAgICAgCi0gICA8L2V4dGVuc2lvbj4KLQotICAgPCEtLSAgVVBDIG1hcmtlcnMgLS0+Ci0gICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5tYXJrZXJzIgotCQlpZD0idXBjTWFya2VyIgotICAgICAgICBuYW1lPSJ1cGMgQXJ0aWZhY3QgTWFya2VyIj4KLSAgICAgIDxzdXBlciB0eXBlPSJvcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy50ZXh0bWFya2VyIi8+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDwhLS0gdGhpcyBjaGFuZ2VzIHRoZSBtYXJrZXIgaW1hZ2UgaW4gdGhlIGVkaXRvciBtYXJrZXIgYmFyICAtLT4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5lZGl0b3JzLmFubm90YXRpb25UeXBlcyI+Ci0gICAgICA8dHlwZQotICAgICAgICAgICAgbWFya2VyVHlwZT0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnVwY01hcmtlciIKLSAgICAgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy51cGNNYXJrZXJBbm5vdGF0aW9uIj4KLSAgICAgIDwvdHlwZT4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmVkaXRvcnMubWFya2VyQW5ub3RhdGlvblNwZWNpZmljYXRpb24iPgotICAgICAgPHNwZWNpZmljYXRpb24KLSAgICAgICAgICAgIGFubm90YXRpb25UeXBlPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMudXBjTWFya2VyQW5ub3RhdGlvbiIKLSAgICAgICAgICAgIGljb249Imljb25zL3VwYy5naWYiIAotICAgICAgICAgICAgCi0gICAgICAgICAgICBwcmVzZW50YXRpb25MYXllcj0iMyIKLSAgICAgICAgICAgIGxhYmVsPSJ1cGMgQW5ub3RhdGlvbiBNYXJrZXIiCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIHRleHRQcmVmZXJlbmNlS2V5PSJ1cGNJbmRpY2F0aW9uIgotICAgICAgICAgICAgdGV4dFByZWZlcmVuY2VWYWx1ZT0idHJ1ZSIKLSAgICAgICAgICAgIGhpZ2hsaWdodFByZWZlcmVuY2VLZXk9ImFydGlmYWN0SGlnaGxpZ2h0aW5nIgotICAgICAgICAgICAgaGlnaGxpZ2h0UHJlZmVyZW5jZVZhbHVlPSJmYWxzZSIKLSAgICAgICAgICAgIGNvbG9yUHJlZmVyZW5jZUtleT0iYXJ0aWZhY3RJbmRpY2F0aW9uQ29sb3IiCi0gICAgICAgICAgICBjb2xvclByZWZlcmVuY2VWYWx1ZT0iMTI4LDEyOCwxOTIiCi0gICAgICAgICAgICB2ZXJ0aWNhbFJ1bGVyUHJlZmVyZW5jZUtleT0iYXJ0aWZhY3RJbmRpY2F0aW9uSW5WZXJ0aWNhbFJ1bGVyIgotICAgICAgICAgICAgdmVydGljYWxSdWxlclByZWZlcmVuY2VWYWx1ZT0idHJ1ZSIKLQkJCXNob3dJbk5leHRQcmV2RHJvcGRvd25Ub29sYmFyQWN0aW9uS2V5PSJzaG93UG9ydGluZ0luTmV4dFByZXZEcm9wZG93blRvb2xiYXJBY3Rpb24iCi0gICAgICAgICAgICBzaG93SW5OZXh0UHJldkRyb3Bkb3duVG9vbGJhckFjdGlvbj0iZmFsc2UiCi0gICAgICAgICAgICBvdmVydmlld1J1bGVyUHJlZmVyZW5jZUtleT0iYXJ0aWZhY3RJbmRpY2F0aW9uSW5PdmVydmlld1J1bGVyIgotICAgICAgICAgICAgb3ZlcnZpZXdSdWxlclByZWZlcmVuY2VWYWx1ZT0idHJ1ZSIKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW5jbHVkZU9uUHJlZmVyZW5jZVBhZ2U9InRydWUiCi0gICAgICAgICAgICBpc0dvVG9QcmV2aW91c05hdmlnYXRpb25UYXJnZXRLZXk9ImlzUG9ydGluZ0dvVG9QcmV2aW91c05hdmlnYXRpb25UYXJnZXQiCi0KLSAgICAgICAgICAgIGlzR29Ub05leHROYXZpZ2F0aW9uVGFyZ2V0S2V5PSJpc1BvcnRpbmdSZWNvcmRHb1RvTmV4dE5hdmlnYXRpb25UYXJnZXQiCi0gICAgICAgICAgICA+Ci0gICAgICA8L3NwZWNpZmljYXRpb24+ICAKLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLnZpZXdzIj4KLSAgICAgIDxjYXRlZ29yeQotICAgICAgICAgICAgbmFtZT0iJXZpZXdjYXQubmFtZSIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMiPgotICAgICAgPC9jYXRlZ29yeT4KLSAgICAgIDx2aWV3Ci0gICAgICAgICAgICBuYW1lPSIldmlldy5uYW1lIgotICAgICAgICAgICAgaWNvbj0iaWNvbnMvdXBjLmdpZiIKLSAgICAgICAgICAgIGNhdGVnb3J5PSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMiCi0gICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnZpZXdzLlVQQ0FydGlmYWN0VmlldyIKLSAgICAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMudmlld3MudXBjQXJ0aWZhY3RWaWV3Ij4KLSAgICAgIDwvdmlldz4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC51aS5DSGVscFByb3ZpZGVyIj4KLSAgICAgIDxwcm92aWRlcgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5lZGl0b3JIZWxwLlVQQ0NIZWxwSW5mb1Byb3ZpZGVyIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5lZGl0b3JIZWxwLlVQQ0NIZWxwSW5mb1Byb3ZpZGVyIi8+Ci0gICA8L2V4dGVuc2lvbj4KLQotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLmNvbW1hbmRzIj4KLSAgICAgIDxjb21tYW5kCi0gICAgICAgICAgICBkZWZhdWx0SGFuZGxlcj0ib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLmFjdGlvbnMuUnVuQW5hbHlzZVVQQ2NvbW1hbmRIYW5kbGVyIgotICAgICAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5jb21tYW5kMiIKLSAgICAgICAgICAgIG5hbWU9ImZpbmQgdXBjIGFydGlmYWN0cyI+Ci0gICAgICA8L2NvbW1hbmQ+Ci0gICA8L2V4dGVuc2lvbj4KLSAgICAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5tZW51cyI+Ci0gICAgICA8bWVudUNvbnRyaWJ1dGlvbgotICAgICAgICAgICAgbG9jYXRpb25VUkk9Im1lbnU6b3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLnRvb2xiYXIuY29tbWFuZDEgIj4KLSAgICAgICAgIDxjb21tYW5kCi0gICAgICAgICAgICAgICBjb21tYW5kSWQ9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5jb21tYW5kMiIKLSAgICAgICAgICAgICAgIGljb249Imljb25zL3VwYy5naWYiCi0gICAgICAgICAgICAgICBsYWJlbD0iU2hvdyBVUEMgQXJ0aWZhY3RzIj4KLSAgICAgICAgIDwvY29tbWFuZD4KLSAgICAgIDwvbWVudUNvbnRyaWJ1dGlvbj4KLSAgIDwvZXh0ZW5zaW9uPgotPC9wbHVnaW4+CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ0FydGlmYWN0TWFya2luZ1Zpc2l0b3IuamF2YSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvVVBDQXJ0aWZhY3RNYXJraW5nVmlzaXRvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2RmNTA1Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvVVBDQXJ0aWZhY3RNYXJraW5nVmlzaXRvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24uQXJ0aWZhY3RNYXJraW5nVmlzaXRvcjsKLQotcHVibGljIGNsYXNzIFVQQ0FydGlmYWN0TWFya2luZ1Zpc2l0b3IgZXh0ZW5kcyBBcnRpZmFjdE1hcmtpbmdWaXNpdG9yCi17Ci0gICAgcHVibGljIFVQQ0FydGlmYWN0TWFya2luZ1Zpc2l0b3IoU3RyaW5nIG1hcmtlcklkKQotICAgIHsKLSAgICAgICAgc3VwZXIobWFya2VySWQpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvVVBDSURzLmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ0lEcy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGM0ZWU3Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvVVBDSURzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYzsKLQotLyoqCi0gKiBVUEMgUGx1Z2luIGNvbnN0YW50cwotICogCi0gKiBAYXV0aG9yIEJldGggVGliYml0dHMKLSAqLwotcHVibGljIGludGVyZmFjZSBVUENJRHMKLXsKLSAgICAvLyBwcmVmZXJlbmNlIHBhZ2UgbmFtZSBmb3IgVVBDCi0gICAgU3RyaW5nIFVQQ19JTkNMVURFUyAgICA9ICJVUEMgSW5jbHVkZXMiOwotICAgIAotICAgIFN0cmluZyBNQVJLRVJfSUQgICAgICAgPSAib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnVwY01hcmtlciI7Ci0gICAgU3RyaW5nIE1BUktFUl9FUlJPUl9JRCA9ICJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMudXBjRXJyb3JNYXJrZXIiOwotICAgIAotICAgIC8vIGFydGlmYWN0IHZpZXcgaWQKLSAgICBTdHJpbmcgVVBDX1ZJRVdfSUQgPSAib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLnZpZXdzLnVwY0FydGlmYWN0VmlldyI7Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ1BsdWdpbi5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9VUENQbHVnaW4uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2N2YwNy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL1VQQ1BsdWdpbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGM7Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOwotaW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0OwotCi0vKioKLSAqIFRoZSBtYWluIHBsdWdpbiBjbGFzcyB0byBiZSB1c2VkIGluIHRoZSBkZXNrdG9wLgotICovCi1wdWJsaWMgY2xhc3MgVVBDUGx1Z2luIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbiB7Ci0KLQkvKiogVGhlIHNoYXJlZCBpbnN0YW5jZS4gKi8KLQlwcml2YXRlIHN0YXRpYyBVUENQbHVnaW4gcGx1Z2luOwotCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMiOwotCQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3Rvci4KLQkgKi8KLQlwdWJsaWMgVVBDUGx1Z2luKCkgewotCQlwbHVnaW4gPSB0aGlzOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB1cG9uIHBsdWctaW4gYWN0aXZhdGlvbgotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCX0KLQotCS8qKgotCSAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBwbHVnLWluIGlzIHN0b3BwZWQKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JCXBsdWdpbiA9IG51bGw7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlLgotCSAqLwotCXB1YmxpYyBzdGF0aWMgVVBDUGx1Z2luIGdldERlZmF1bHQoKSB7Ci0JCXJldHVybiBwbHVnaW47Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgaW1hZ2UgZmlsZSBhdCB0aGUgZ2l2ZW4KLQkgKiBwbHVnLWluIHJlbGF0aXZlIHBhdGguCi0JICoKLQkgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aAotCSAqIEByZXR1cm4gdGhlIGltYWdlIGRlc2NyaXB0b3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEltYWdlRGVzY3JpcHRvciBnZXRJbWFnZURlc2NyaXB0b3IoU3RyaW5nIHBhdGgpIHsKLQkJcmV0dXJuIEFic3RyYWN0VUlQbHVnaW4uaW1hZ2VEZXNjcmlwdG9yRnJvbVBsdWdpbigib3JnLmVjbGlwc2UucHRwLnBsZHQudXBjIiwgcGF0aCk7Ci0JfQotICAgIAotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHByZWZlcmVuY2Ugc2V0dGluZyBmb3IgVVBDIGluY2x1ZGUgcGF0aHMKLSAgICAgKiAKLSAgICAgKiBAcmV0dXJuCi0gICAgICovCi0gICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRVUENJbmNsdWRlRGlycygpCi0gICAgewotICAgICAgICBTdHJpbmcgc3RyaW5nTGlzdCA9IGdldFBsdWdpblByZWZlcmVuY2VzKCkuZ2V0U3RyaW5nKFVQQ0lEcy5VUENfSU5DTFVERVMpOwotICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0cmluZ0xpc3QsIEZpbGUucGF0aFNlcGFyYXRvciArICJcblxyIik7Ly8kTk9OLU5MUy0xJAotICAgICAgICBMaXN0PFN0cmluZz4gZGlycyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOwotICAgICAgICB3aGlsZSAoc3QuaGFzTW9yZUVsZW1lbnRzKCkpIHsKLSAgICAgICAgICAgIGRpcnMuYWRkKHN0Lm5leHRUb2tlbigpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZGlyczsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UGx1Z2luSWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFBMVUdJTl9JRDsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2FjdGlvbnMvUnVuQW5hbHlzZVVQQ2NvbW1hbmRIYW5kbGVyLmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2FjdGlvbnMvUnVuQW5hbHlzZVVQQ2NvbW1hbmRIYW5kbGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYzkzNTYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9hY3Rpb25zL1J1bkFuYWx5c2VVUENjb21tYW5kSGFuZGxlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggSUJNIENvcnBvcmF0aW9uLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgICAgSUJNIENvcnBvcmF0aW9uIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLmFjdGlvbnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVFRyYW5zbGF0aW9uVW5pdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20udXBjLlVQQ0xhbmd1YWdlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLm1vZGVsLklMYW5ndWFnZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5tb2RlbC5JVHJhbnNsYXRpb25Vbml0OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5TY2FuUmV0dXJuOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5hY3Rpb25zLlJ1bkFuYWx5c2VIYW5kbGVyQmFzZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24udXRpbC5WaWV3QWN0aXZhdGVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5VUENBcnRpZmFjdE1hcmtpbmdWaXNpdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5VUENJRHM7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ1BsdWdpbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuYW5hbHlzaXMuVVBDQ0FTVFZpc2l0b3I7Ci0KLS8qKgotICogVGhlICJGaW5kIFVQQyBBcnRpZmFjdHMiIGFjdGlvbi9jb21tYW5kCi0gKiBAYXV0aG9yIEJldGggVGliYml0dHMKLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBSdW5BbmFseXNlVVBDY29tbWFuZEhhbmRsZXIgZXh0ZW5kcyBSdW5BbmFseXNlSGFuZGxlckJhc2UKLXsKLQkvKioKLQkgKiBDb25zdHJ1Y3RvciBmb3IgdGhlICJSdW4gQW5hbHlzaXMiIGFjdGlvbgotCSAqLwotCXB1YmxpYyBSdW5BbmFseXNlVVBDY29tbWFuZEhhbmRsZXIoKSB7Ci0JCXN1cGVyKCJVUEMiLCBuZXcgVVBDQXJ0aWZhY3RNYXJraW5nVmlzaXRvcihVUENJRHMuTUFSS0VSX0lEKSwgVVBDSURzLk1BUktFUl9JRCk7IC8vJE5PTi1OTFMtMSQKLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm5zIFVQQyBhbmFseXNpcyBhcnRpZmFjdHMgZm9yIGZpbGUKLQkgKiAKLQkgKiBAcGFyYW0gZmlsZQotCSAqIEBwYXJhbSBpbmNsdWRlcwotCSAqICAgICAgICAgICAgVVBDIGluY2x1ZGUgcGF0aHMKLQkgKiBAcmV0dXJuCi0JICovCi0JQE92ZXJyaWRlCi0JcHVibGljIFNjYW5SZXR1cm4gZG9BcnRpZmFjdEFuYWx5c2lzKGZpbmFsIElUcmFuc2xhdGlvblVuaXQgdHUsCWZpbmFsIExpc3Q8U3RyaW5nPiBpbmNsdWRlcykgewotCQlmaW5hbCBTY2FuUmV0dXJuIG1zciA9IG5ldyBTY2FuUmV0dXJuKCk7Ci0JCWZpbmFsIFN0cmluZyBmaWxlTmFtZSA9IHR1LmdldEVsZW1lbnROYW1lKCk7Ci0JCUlMYW5ndWFnZSBsYW5nOwotCQl0cnkgewotCQkJbGFuZyA9IHR1LmdldExhbmd1YWdlKCk7Ci0gICAgICAgICAgICAKLQkJCUlBU1RUcmFuc2xhdGlvblVuaXQgYXR1ID0gdHUuZ2V0QVNUKCk7Ci0JCQlpZiAobGFuZy5nZXRJZCgpLmVxdWFscyhVUENMYW5ndWFnZS5JRCkpIHsvLyBjZHQ0MAotCQkJCWF0dS5hY2NlcHQobmV3IFVQQ0NBU1RWaXNpdG9yKGluY2x1ZGVzLCBmaWxlTmFtZSwgbXNyKSk7Ci0JCQl9IAotCi0JCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jawotCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCQlyZXR1cm4gbXNyOwotCX0KLQotCS8qKgotCSAqIERldGVybWluYXRpb24gb2Ygd2hldGhlciBvciBub3QgYSBnaXZlbiBmaWxlbmFtZSBpcyB2YWxpZCBmb3IgVVBDIGFydGlmYWN0IGFuYWx5c2lzCi0JICogPGJyPlRPRE8gIENvbnNpZGVyIHVzaW5nIGxhbmd1YWdlIG9yIGNvbnRlbnQtdHlwZSBpbnN0ZWFkIG9mIGZpbGUgZXh0ZW5zaW9uPwotCSAqIFJlLXZpc2l0IGFmdGVyIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yMzczMzEgaXMgcmVzb2x2ZWQgKFVQQyAgY29udGVudC10eXBlIG5vdCByZWNvZ25pemVkKQotCSAqIAotCSAqIEBwYXJhbSBmaWxlbmFtZQotCSAqIEBwYXJhbSBpc0NQUCAgaXMgdGhlIHByb2plY3QgYSBDKysgcHJvamVjdCBvciBub3QKLQkgKiBAcmV0dXJuCi0JICogCi0JICovCi0JQE92ZXJyaWRlCi0JcHJvdGVjdGVkIGJvb2xlYW4gdmFsaWRGb3JBbmFseXNpcyhTdHJpbmcgZmlsZW5hbWUsIGJvb2xlYW4gaXNDUFApIHsKLQkJaW50IGxvYyA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKCIuIik7Ci0JCWlmIChsb2MgPD0gMCkgLy8gaWYgbm8gZG90LCBvciBmaWxlbmFtZSBpcyAiLmZvbyIsIG5vdCB2YWxpZCBmb3IKLQkJCQkJCS8vIGFuYWx5c2lzLgotCQkJcmV0dXJuIGZhbHNlOwotCQlTdHJpbmcgZXh0ID0gZmlsZW5hbWUuc3Vic3RyaW5nKGxvYyArIDEpOwotCQlleHQgPSBleHQudG9Mb3dlckNhc2UoKTsKLQkJYm9vbGVhbiByZXN1bHQgPSB0cnVlOwotCQlpZiAoZXh0LmVxdWFscygidXBjIikpIAotCQkJcmVzdWx0ID0gdHJ1ZTsKLQkJZWxzZQotCQkJcmVzdWx0ID0gZmFsc2U7Ci0JCXJldHVybiByZXN1bHQ7Ci0JfQotCUBPdmVycmlkZQotCXByb3RlY3RlZCBMaXN0PFN0cmluZz4gZ2V0SW5jbHVkZVBhdGgoKSB7Ci0JCXJldHVybiBVUENQbHVnaW4uZ2V0RGVmYXVsdCgpLmdldFVQQ0luY2x1ZGVEaXJzKCk7Ci0JfQotCUBPdmVycmlkZQotCXByb3RlY3RlZCB2b2lkIGFjdGl2YXRlQXJ0aWZhY3RWaWV3KCkgewotCQlWaWV3QWN0aXZhdGVyLmFjdGl2YXRlVmlldyhVUENJRHMuVVBDX1ZJRVdfSUQpOwotCX0KLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvYW5hbHlzaXMvVVBDQ0FTVFZpc2l0b3IuamF2YSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvYW5hbHlzaXMvVVBDQ0FTVFZpc2l0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFlNzJiOS4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2FuYWx5c2lzL1VQQ0NBU1RWaXNpdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5hbmFseXNpczsKLQotCi1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RFeHByZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVEZ1bmN0aW9uQ2FsbEV4cHJlc3Npb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUSWRFeHByZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVExpdGVyYWxFeHByZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVE5hbWU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLlNjYW5SZXR1cm47Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLmFuYWx5c2lzLlBsZHRBc3RWaXNpdG9yOwotCi0vKioKLSAqIFRoaXMgZG9tLXdhbGtlciBjb2xsZWN0cyAiYXJ0aWZhY3RzIiByZWxhdGVkIHRvIHRoZSBzcGVjaWZpYyBkb21haW4gPGJyPgotICogKGUuZy4gVVBDKS4gQ3VycmVudGx5IHRoZXNlIGFydGlmYWN0cyBpbmNsdWRlIGZ1bmN0aW9uIGNhbGxzCi0gKiBhbmQgY29uc3RhbnRzLiBJdCBhZGQgbWFya2VycyB0byB0aGUgc291cmNlIGZpbGUgZm9yIEMgY29kZSwgbWFya2luZyB0aGUKLSAqIHBvc2l0aW9uIG9mIHRoZSBhcnRpZmFjdHMgZm91bmQuCi0gKiAKLSAqIFRoaXMgdmVyc2lvbiBleHRlbmRzIFBsZHRBc3RWaXNpdG9yIGluc3RlYWQgb2YgZGVsZWdhdGluZyB0bzxicj4KLSAqIE1waUdlbmVyYWxBU1RWaXNpdG9yQmVoYXZpb3IuCi0gKgotICogQGF1dGhvciB0aWJiaXR0cwotICogCi0gKi8KLXB1YmxpYyBjbGFzcyBVUENDQVNUVmlzaXRvciBleHRlbmRzIFBsZHRBc3RWaXNpdG9yIAotewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGSVg9InVwY18iOwotCi0gICAgewotICAgICAgICB0aGlzLnNob3VsZFZpc2l0RXhwcmVzc2lvbnMgPSB0cnVlOwotICAgICAgICB0aGlzLnNob3VsZFZpc2l0U3RhdGVtZW50cyA9IHRydWU7Ci0gICAgICAgIHRoaXMuc2hvdWxkVmlzaXREZWNsYXJhdGlvbnMgPSB0cnVlOwotICAgICAgICB0aGlzLnNob3VsZFZpc2l0VHJhbnNsYXRpb25Vbml0ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgVVBDQ0FTVFZpc2l0b3IoTGlzdCB1cGNJbmNsdWRlcywgU3RyaW5nIGZpbGVOYW1lLCBTY2FuUmV0dXJuIG1zcikKLSAgICB7Ci0gICAgICAgIHN1cGVyKHVwY0luY2x1ZGVzLCBmaWxlTmFtZSwgbXNyKTsKLQkJQVJUSUZBQ1RfQ0FMTCA9ICJVUEMgQ2FsbCI7Ci0JCUFSVElGQUNUX0NPTlNUQU5UPSJVUEMgQ29uc3RhbnQiOwotICAgIH0KLQotCi0KLSAgICAvKgotICAgICAqIChub24tSmF2YWRvYykKLSAgICAgKiAKLSAgICAgKiBAc2VlIG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuQVNUVmlzaXRvciN2aXNpdChvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RFeHByZXNzaW9uKQotICAgICAqLwotICAgIHB1YmxpYyBpbnQgdmlzaXQoSUFTVEV4cHJlc3Npb24gZXhwcmVzc2lvbikKLSAgICB7Ci0gICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgSUFTVEZ1bmN0aW9uQ2FsbEV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgIElBU1RFeHByZXNzaW9uIGFzdEV4cHIgPSAoKElBU1RGdW5jdGlvbkNhbGxFeHByZXNzaW9uKSBleHByZXNzaW9uKS5nZXRGdW5jdGlvbk5hbWVFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICBTdHJpbmcgc2lnbmF0dXJlID0gYXN0RXhwci5nZXRSYXdTaWduYXR1cmUoKTsKLSAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJmdW5jIHNpZ25hdHVyZT0iICsgc2lnbmF0dXJlKTsKLSAgICAgICAgICAgIGlmIChzaWduYXR1cmUuc3RhcnRzV2l0aChQUkVGSVgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFzdEV4cHIgaW5zdGFuY2VvZiBJQVNUSWRFeHByZXNzaW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIElBU1ROYW1lIGZ1bmNOYW1lID0gKChJQVNUSWRFeHByZXNzaW9uKSBhc3RFeHByKS5nZXROYW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NGdW5jTmFtZShmdW5jTmFtZSwgYXN0RXhwcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBJQVNUTGl0ZXJhbEV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgIHByb2Nlc3NNYWNyb0xpdGVyYWwoKElBU1RMaXRlcmFsRXhwcmVzc2lvbikgZXhwcmVzc2lvbik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0gICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvZWRpdG9ySGVscC9VUENDSGVscEJvb2suamF2YSBiL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvZWRpdG9ySGVscC9VUENDSGVscEJvb2suamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiYTkzNy4uMDAwMDAwMAotLS0gYS90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL2VkaXRvckhlbHAvVVBDQ0hlbHBCb29rLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCBJQk0gQ29ycG9yYXRpb24uCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgICBJQk0gQ29ycG9yYXRpb24gLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuZWRpdG9ySGVscDsKLQotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5NYXA7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQudWkuSUZ1bmN0aW9uU3VtbWFyeTsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5jb21tb24uZWRpdG9ySGVscC5DSGVscEJvb2tJbXBsOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi5lZGl0b3JIZWxwLkZ1bmN0aW9uUHJvdG90eXBlU3VtbWFyeUltcGw7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLmVkaXRvckhlbHAuRnVuY3Rpb25TdW1tYXJ5SW1wbDsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuVVBDUGx1Z2luOwotCi0vKioKLSAqIFVQQyBoZWxwIGJvb2sgLSB0aGlzIGlzIHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzZWQgZm9yIHRoZSBob3ZlciBoZWxwCi0gKiA8cD4KLSAqIDxiPk5vdGU6PC9iPiBUaGlzIChhbmQgRjEvZHluYW1pYyBoZWxwIGFzIHdlbGwpIHJlcXVpcmVzIGEgZml4IHRvIENEVCBwb3N0LTUuMC4wIHJlbGVhc2UKLSAqIHRvIG9yZy5lY2xpcHNlLmNkdC5pbnRlcm5hbC5jb3JlLm1vZGVsLlRyYW5zbGF0aW9uVW5pdCAgLSB0byByZWNvZ25pemUgY29udGVudC10eXBlIG9mIFVQQyB0byBiZSBhIGRlcml2aWF0aXZlICgia2luZE9mIikgdGhlIEMgY29udGVudCB0eXBlLgotICogPHA+U2VlIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yMzczMzEgIAotICogQGF1dGhvciBCZXRoIFRpYmJpdHRzCi0gKgotICovCi1wdWJsaWMgY2xhc3MgVVBDQ0hlbHBCb29rIGV4dGVuZHMgQ0hlbHBCb29rSW1wbCB7Ci0JcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRJVExFID0gIlVQQyBDIEhlbHAgQm9vayI7Ci0JcHJpdmF0ZSBNYXA8U3RyaW5nLFN0cmluZz4gZGVzYz1uZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKLQotCQotCXB1YmxpYyBVUENDSGVscEJvb2soKSB7Ci0gICAgICAgIHN1cGVyKFVQQ1BsdWdpbi5nZXRQbHVnaW5JZCgpKTsKLSAgICAgICAgLy8gcG9wdWxhdGUgZGVzY3JpcHRpb24gbWFwIC0gdGhpcyBqdXN0IG1ha2VzIHRoZSBmdW5jTmFtZTJGdW5jSW5mbyBpbml0IGxpbmVzIGEgYml0IG1vcmUgdGVyc2UKLSAgICAgIAotICAgICAgICBkZXNjLnB1dCgidXBjX2FkZHJmaWVsZCIsICJSZXR1cm5zIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUgcmVmbGVjdGluZyB0aGUgPHE+bG9jYWwgYWRkcmVzczwvcT5vZiB0aGUgb2JqZWN0IHBvaW50ZWQgdG8gYnkgdGhlIHBvaW50ZXItdG8tc2hhcmVkIGFyZ3VtZW50LiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FmZmluaXR5c2l6ZSIsICJBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgdGhlIGV4YWN0IHNpemUgb2YgdGhlIGxvY2FsIHBvcnRpb24gb2YgdGhlIGRhdGEgaW4gYSBzaGFyZWQgb2JqZWN0IHdpdGggYWZmaW5pdHkgdG8gPGNvZGU+dGhyZWFkaWQ8L2NvZGU+LiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FsbF9hbGxvYyIsICJBbGxvY2F0ZXMgc2hhcmVkIHNwYWNlIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsX2Jyb2FkY2FzdCIsICJDb3BpZXMgYSBibG9jayBvZiBtZW1vcnkgd2l0aCBhZmZpbml0eSB0byBhIHNpbmdsZSB0aHJlYWQgdG8gYSBibG9jayBvZiBzaGFyZWQgbWVtb3J5IG9uIGVhY2ggdGhyZWFkLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FsbF9sb2NrX2FsbG9jIiwgIkR5bmFtaWNhbGx5IGFsbG9jYXRlcyBhIGxvY2sgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiBUaGUgbG9jayBpcyBjcmVhdGVkIGluIGFuIHVubG9ja2VkIHN0YXRlLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2FsbF9leGNoYW5nZSIsICJDb3BpZXMgdGhlIGl0aCBibG9jayBvZiBtZW1vcnkgZnJvbSBhIHNoYXJlZCBtZW1vcnkgYXJlYSB0aGF0IGhhcyBhZmZpbml0eSB0byB0aHJlYWQgaiB0byB0aGUganRoIGJsb2NrIG9mIGEgc2hhcmVkIG1lbW9yeSBhcmVhIHRoYXQgaGFzIGFmZmluaXR5IHRvIHRocmVhZCBpIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsX2dhdGhlciIsICAgICAiQ29waWVzIGEgYmxvY2sgb2Ygc2hhcmVkIG1lbW9yeSB0aGF0IGhhcyBhZmZpbml0eSB0byB0aGUgaXRoIHRocmVhZCB0byB0aGUgaXRoIGJsb2NrIG9mIGEgc2hhcmVkIG1lbW9yeSBhcmVhIHRoYXQgaGFzIGFmZmluaXR5IHRvIGEgc2luZ2xlIHRocmVhZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfZ2F0aGVyX2FsbCIsICJDb3BpZXMgYSBibG9jayBvZiBtZW1vcnkgZnJvbSBvbmUgc2hhcmVkIG1lbW9yeSBhcmVhIHdpdGggYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQgdG8gdGhlIGl0aCBibG9jayBvZiBhIHNoYXJlZCBtZW1vcnkgYXJlYSBvbiBlYWNoIHRocmVhZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfbG9ja19hbGxvYyIsICJEeW5hbWljYWxseSBhbGxvY2F0ZXMgYSBsb2NrIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4gVGhlIGxvY2sgaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tlZCBzdGF0ZS4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfcGVybXV0ZSIsICJDb3BpZXMgYSBibG9jayBvZiBtZW1vcnkgZnJvbSBhIHNoYXJlZCBtZW1vcnkgYXJlYSB0aGF0IGhhcyBhZmZpbml0eSB0byB0aGUgaXRoIHRocmVhZCB0byBhIGJsb2NrIG9mIGEgc2hhcmVkIG1lbW9yeSB0aGF0IGhhcyBhZmZpbml0eSB0byB0aHJlYWQgcGVybVtpXS4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19hbGxfc2NhdHRlciIsICJDb3BpZXMgdGhlIGl0aCBibG9jayBvZiBhbiBhcmVhIG9mIHNoYXJlZCBtZW1vcnkgd2l0aCBhZmZpbml0eSB0byBhIHNpbmdsZSB0aHJlYWQgdG8gYSBibG9jayBvZiBzaGFyZWQgbWVtb3J5IHdpdGggYWZmaW5pdHkgdG8gdGhlIGl0aCB0aHJlYWQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfYWxsb2MiLCAiQWxsb2NhdGVzIHNoYXJlZCBzcGFjZSBvZiBhdCBsZWFzdCBuYnl0ZXMgd2l0aCBhZmZpbml0eSB0byB0aGUgY2FsbGluZyB0aHJlYWQuIik7ICAgICAgCi0gICAgICAgIGRlc2MucHV0KCJ1cGNfZnJlZSIsICJGcmVlcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc2hhcmVkIHN0b3JhZ2UiKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19nbG9iYWxfYWxsb2MiLCJBbGxvY2F0ZXMgc2hhcmVkIHNwYWNlIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfZ2xvYmFsX2V4aXQiLCJGbHVzaGVzIGFsbCBJL08sIHJlbGVhc2VzIGFsbCBzdG9yYWdlLCBhbmQgdGVybWluYXRlcyB0aGUgZXhlY3V0aW9uIGZvciBhbGwgYWN0aXZlIHRocmVhZHMuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfZ2xvYmFsX2xvY2tfYWxsb2MiLCAiRHluYW1pY2FsbHkgYWxsb2NhdGVzIGEgbG9jayBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuIFRoZSBsb2NrIGlzIGNyZWF0ZWQgaW4gYW4gdW5sb2NrZWQgc3RhdGUuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfbG9jYWxfYWxsb2MiLCJEZXByZWNhdGVkLiBVc2UgdXBjX2FsbG9jIGluc3RlYWQuXG5BbGxvY2F0ZXMgc2hhcmVkIHNwYWNlLiIpOyAgICAgIAotICAgICAgICBkZXNjLnB1dCgidXBjX2xvY2tfYXR0ZW1wdCIsICJBdHRlbXB0cyB0byBzZXQgdGhlIHN0YXRlIG9mIGEgbG9jayB0byBsb2NrZWQuIFJldHVybiBjb2RlIGluZGljYXRlcyBwcmV2aW91cyBzdGF0ZS4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19sb2NrX2ZyZWUiLCAiRnJlZXMgYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBsb2NrLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX2xvY2tfdCIsICJVUEMgdHlwZSBmb3IgYSBsb2NrIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfbG9jayIsICJTZXRzIHRoZSBzdGF0ZSBvZiBhIGxvY2sgdG8gbG9ja2VkLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX21lbWNweSIsICJDb3BpZXMgbiBjaGFyYWN0ZXJzIGZyb20gYSBzaGFyZWQgb2JqZWN0IGhhdmluZyBhZmZpbml0eSB3aXRoIG9uZSB0aHJlYWQgdG8gYSBzaGFyZWQgb2JqZWN0IGhhdmluZyBhZmZpbml0eSB3aXRoIHRoZSBzYW1lIG9yIGFub3RoZXIgdGhyZWFkLiIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX21lbWdldCIsICJDb3BpZXMgbiBjaGFyYWN0ZXJzIGZyb20gYSBzaGFyZWQgb2JqZWN0IHdpdGggYWZmaW5pdHkgdG8gYW55IHNpbmdsZSB0aHJlYWQgdG8gYW4gb2JqZWN0IG9uIHRoZSBjYWxsaW5nIHRocmVhZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19tZW1zZXQiLCAiQ29waWVzIGEgdmFsdWUsIGNvbnZlcnRlZCB0byBhbiB1bnNpZ25lZCBjaGFyLCB0byBhIHNoYXJlZCBvYmplY3Qgd2l0aCBhZmZpbml0eSB0byBhbnkgc2luZ2xlIHRocmVhZC4iKTsKLSAgICAgICAgZGVzYy5wdXQoInVwY19waGFzZW9mIiwgIlJldHVybnMgdGhlIHBoYXNlIGNvbXBvbmVudCBvZiB0aGUgcG9pbnRlci10by1zaGFyZWQgYXJndW1lbnQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfcmVzZXRwaGFzZSIsICJSZXR1cm5zIGEgcG9pbnRlci10by1zaGFyZWQgd2hpY2ggaXMgaWRlbnRpY2FsIHRvIGl0cyBpbnB1dCBleGNlcHQgdGhhdCBpdCBoYXMgemVybyBwaGFzZSIpOwotICAgICAgICBkZXNjLnB1dCgidXBjX3RocmVhZG9mIiwgIlJldHVybnMgdGhlIGluZGV4IG9mIHRoZSB0aHJlYWQgdGhhdCBoYXMgYWZmaW5pdHkgdG8gdGhlIHNoYXJlZCBvYmplY3QgcG9pbnRlZCB0byBieSB0aGUgYXJndW1lbnQuIik7Ci0gICAgICAgIGRlc2MucHV0KCJ1cGNfdW5sb2NrIiwgIlNldHMgdGhlIHN0YXRlIG9mIGEgbG9jayB0byB1bmxvY2tlZC4iKTsgCi0gICAgICAgIGRlc2MucHV0KCJzaGFyZWQiLCAidGhpcyBpcyBhIHNoYXJlZCBVUEMga2V5d29yZCIpOwotICAgICAgICAKLSAgICAgICAgCi0JCS8vIHBvcHVsYXRlIGZ1bmMgbWFwCi0gICAgICAgIC8vZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfZnJlZSIsIG5ldyBGdW5jdGlvblN1bW1hcnlJbXBsKCJ1cGNfZnJlZSIsICIiLCAidXBjX2ZyZWUgdGVzdCBkZXNjcmlwdGlvbiIsCi0gICAgICAgIC8vICAgICAgICBuZXcgRnVuY3Rpb25Qcm90b3R5cGVTdW1tYXJ5SW1wbCgidXBjX2ZyZWUiLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqcHRyIiksIG51bGwpKTsKLSAgICAgICAgU3RyaW5nIGRlc2MgPSAiIjsgLy8gd2lsbCBkbyBtYXAgbG9va3VwIGZvciBkZXNjcmlwdGlvbiBpbiBmcHMgbWV0aG9kLgotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hZGRyZmllbGQiLCBmcHMoInVwY19hZGRyZmllbGQiLCAiIiwgZGVzYywgInNpemVfdCIsICJzaGFyZWQgdm9pZCAqcHRyIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hZmZpbml0eXNpemUiLCBmcHMoInVwY19hZmZpbml0eXNpemUiLCAiIiwgZGVzYywgInNpemVfdCIsICJzaXplX3QgdG90YWxzaXplLCBzaXplX3QgbmJ5dGVzLCBzaXplX3QgdGhyZWFkaWQiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2FsbF9hbGxvYyIsIGZwcygidXBjX2FsbF9hbGxvYyIsICIiLCBkZXNjLCAidm9pZCIsICJzaXplX3QgbmJsb2Nrcywgc2l6ZV90IG5ieXRlcyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsX2Jyb2FkY2FzdCIsIGZwcygidXBjX2FsbF9icm9hZGNhc3QiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaXplX3QgbmJ5dGVzLCB1cGNfZmxhZ190IGZsYWdzIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hbGxfZXhjaGFuZ2UiLCBmcHMoInVwY19hbGxfZXhjaGFuZ2UiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaXplX3QgbmJ5dGVzLCB1cGNfZmxhZ190IGZsYWdzIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hbGxfZ2F0aGVyX2FsbCIsIGZwcygidXBjX2FsbF9nYXRoZXJfYWxsIiwgIiIsIGRlc2MsICJ2b2lkIiwgInNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsX2dhdGhlciIsIGZwcygidXBjX2FsbF9nYXRoZXIiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKiByZXN0cmljdCBkc3QsIHNoYXJlZCBjb25zdCB2b2lkICogcmVzdHJpY3Qgc3JjLCBzaXplX3QgbmJ5dGVzLCB1cGNfZmxhZ190IGZsYWdzIikpOyAgICAgIAkJCi0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2FsbF9sb2NrX2FsbG9jIiwgZnBzKCJ1cGNfYWxsX2xvY2tfYWxsb2MiLCAiIiwgZGVzYywgInVwY19sb2NrX3QiLCAidm9pZCIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsX3Blcm11dGUiLCBmcHMoInVwY19hbGxfcGVybXV0ZSIsICIiLCBkZXNjLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIHNoYXJlZCBjb25zdCBpbnQgKiByZXN0cmljdCBwZXJtLCBzaXplX3QgbmJ5dGVzLCB1cGNfZmxhZ190IGZsYWdzIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19hbGxfc2NhdHRlciIsIGZwcygidXBjX2FsbF9zY2F0dGVyIiwgIiIsIGRlc2MsICJ2b2lkIiwgInNoYXJlZCB2b2lkICogcmVzdHJpY3QgZHN0LCBzaGFyZWQgY29uc3Qgdm9pZCAqIHJlc3RyaWN0IHNyYywgc2l6ZV90IG5ieXRlcywgdXBjX2ZsYWdfdCBmbGFncyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfYWxsb2MiLCBmcHMoInVwY19hbGxvYyIsICIiLCBkZXNjLCAidm9pZCIsICJzaXplX3QgbmJ5dGVzIikpOyAgICAgIAotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19mcmVlIiwgZnBzKCJ1cGNfZnJlZSIsICIiLCBkZXNjLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqcHRyIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19nbG9iYWxfYWxsb2MiLCBmcHMoInVwY19nbG9iYWxfYWxsb2MiLCAiIiwgZGVzYywgInZvaWQiLCAiaW50IHN0YXR1cyIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfZ2xvYmFsX2V4aXQiLCBmcHMoInVwY19nbG9iYWxfZXhpdCIsICIiLCBkZXNjLCAidm9pZCIsICJpbnQgc3RhdHVzIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19nbG9iYWxfbG9ja19hbGxvYyIsIGZwcygidXBjX2dsb2JhbF9sb2NrX2FsbG9jIiwgIiIsIGRlc2MsICJ1cGNfbG9ja190IiwgInZvaWQiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2xvY2FsX2FsbG9jIiwgZnBzKCJ1cGNfbG9jYWxfYWxsb2MiLCAiIiwgZGVzYywgInZvaWQiLCAic2l6ZV90IG5ibG9ja3MsIHNpemVfdCBuYnl0ZXMiKSk7ICAgIAotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19sb2NrX2F0dGVtcHQiLCBmcHMoInVwY19sb2NrX2F0dGVtcHQiLCAiIiwgZGVzYywgImludCIsICJ1cGNfbG9ja190ICpwdHIiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX2xvY2tfZnJlZSIsIGZwcygidXBjX2xvY2tfZnJlZSIsICIiLCBkZXNjLCAidXBjX2xvY2tfdCIsICJ2b2lkIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19sb2NrIiwgZnBzKCJ1cGNfbG9jayIsICIiLCBkZXNjLCAidm9pZCIsICJ1cGNfbG9ja190ICpwdHIiKSk7Ci0gICAgICAgIGZ1bmNOYW1lMkZ1bmNJbmZvLnB1dCgidXBjX21lbWNweSIsIGZwcygidXBjX21lbWNweSIsICIiLCBkZXNjLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqIHJlc3RyaWN0IGRzdCwgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIHNpemVfdCBuIikpOyAgICAgIAotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19tZW1nZXQiLCBmcHMoInVwY19tZW1nZXQiLCAiIiwgZGVzYywgInZvaWQiLCAidm9pZCAqIHJlc3RyaWN0IGRzdCwgc2hhcmVkIGNvbnN0IHZvaWQgKiByZXN0cmljdCBzcmMsIHNpemVfdCBuIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19tZW1zZXQiLCBmcHMoInVwY19tZW1zZXQiLCAiIiwgZGVzYywgInZvaWQiLCAic2hhcmVkIHZvaWQgKmRzdCwgaW50IGMsIHNpemVfdCBuIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19waGFzZW9mIiwgZnBzKCJ1cGNfbWVtc2V0IiwgIiIsIGRlc2MsICJzaXplX3QiLCAic2hhcmVkIHZvaWQgKnB0ciIpKTsgICAgIAotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY19yZXNldHBoYXNlIiwgZnBzKCJ1cGNfcmVzZXRwaGFzZSIsICIiLCBkZXNjLCAidm9pZCIsICJzaGFyZWQgdm9pZCAqcHRyIikpOwotICAgICAgICBmdW5jTmFtZTJGdW5jSW5mby5wdXQoInVwY190aHJlYWRvZiIsIGZwcygidXBjX3RocmVhZG9mIiwgIiIsIGRlc2MsICJzaXplX3QiLCAic2hhcmVkIHZvaWQgKnB0ciIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJ1cGNfdW5sb2NrIiwgZnBzKCJ1cGNfdW5sb2NrIiwgIiIsIGRlc2MsICJ2b2lkIiwgInVwY19sb2NrX3QgKnB0ciIpKTsKLSAgICAgICAgZnVuY05hbWUyRnVuY0luZm8ucHV0KCJzaGFyZWQiLCBmcHMoInNoYXJlZCIsICIiLCBkZXNjLCAiIiwgIiIpKTsKLSAgICAgICAgCi0gICAgICAgIC8vIHNldCB0aXRsZQotICAgICAgICBzZXRUaXRsZShUSVRMRSk7Ci0JfQotCQotCS8qKgotCSAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBpbnB1dHRpbmcgdGhlc2UgRnVuY3Rpb25Qcm90b3R5cGVTdW1tYXJ5IGFuZCBGdW5jdGlvblN1bW1hcnkgYXJndW1lbnRzLgotCSAqIEBwYXJhbSBuYW1lCi0JICogQHBhcmFtIG5hbWVzcGFjZQotCSAqIEBwYXJhbSBkZXNjcmlwdGlvbiBpZiBlbXB0eSB3aWxsIGRvIGxvb2t1cCBpbiBNYXAKLQkgKiBAcGFyYW0gcmV0dXJuVHlwZQotCSAqIEBwYXJhbSBhcmdzCi0JICogQHJldHVybgotCSAqLwotCXByb3RlY3RlZCBJRnVuY3Rpb25TdW1tYXJ5IGZwcyhTdHJpbmcgbmFtZSwgU3RyaW5nIG5hbWVzcGFjZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBTdHJpbmcgcmV0dXJuVHlwZSwgU3RyaW5nIGFyZ3MpewotCQlpZihkZXNjcmlwdGlvbj09bnVsbCB8fCBkZXNjcmlwdGlvbi5sZW5ndGgoKT09MCkgewotCQkJZGVzY3JpcHRpb249Z2V0RGVzYyhuYW1lKTsKLQkJfQotCQlJRnVuY3Rpb25TdW1tYXJ5IGZwcyA9IG5ldyBGdW5jdGlvblN1bW1hcnlJbXBsKG5hbWUsIG5hbWVzcGFjZSwgZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgbmV3IEZ1bmN0aW9uUHJvdG90eXBlU3VtbWFyeUltcGwobmFtZSwgcmV0dXJuVHlwZSwgYXJncyksIG51bGwpOwotCQlyZXR1cm4gZnBzOwotCX0KLQlwcm90ZWN0ZWQgU3RyaW5nIGdldERlc2MoU3RyaW5nIGtleSkgewotCQlTdHJpbmcgZGVzY3JpcHRpb24gPSAoU3RyaW5nKWRlc2MuZ2V0KGtleSk7Ci0JCWlmKGRlc2NyaXB0aW9uPT1udWxsKQotCQkJZGVzY3JpcHRpb249a2V5KyIgZGVzY3JpcHRpb24iOwotCQlyZXR1cm4gZGVzY3JpcHRpb247Ci0JfQotCQotCS8qKgotCSAqIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vYnVncy5lY2xpcHNlLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yMzczMzEKLQkgKiAoIkNIZWxwUHJvdmlkZXIgbm90IGNhbGxlZCBmb3IgVVBDIikKLQkgKiBzbyB0aGF0IFVQQyBoZWxwIHdpbGwgZ2V0IGNhbGxlZC4KLQkgKiBDRFQgYnVnIGZpeCByZXF1aXJlZCBmb3IgdGhpcyB0byB3b3JrIG90aGVyd2lzZS4KLQkgKiBGb3IgZXhhbXBsZSwgaW4gVHJhbnNsYXRpb25Vbml0IHRvIG1ha2UgdGhlIFVQQyB0eXBlICdpbmhlcml0JyBmcm9tIHRoZSBDIHR5cGUuCi0JICogPHA+Ci0JICogVGhpcyByZXR1cm5zIGFuIGludmFsaWQgbnVtYmVyIGFzIGEgd29ya2Fyb3VuZC4KLQkgKiBUaGlzIHdpbGwgY2F1c2UgdGhlIGRlZmF1bHQgcGFydCBvZiB0aGUgc3dpdGNoIGluIENIZWxwQm9va0Rlc2NyaXB0b3IubWF0Y2hlcygpCi0JICogdG8gZXhlY3V0ZSBhbmQgdGhlIFVQQyBoZWxwIHdpbGwKLQkgKiBtYXRjaCBmb3IgYWxsIGZpbGVzLiBOb3QgcHJldHR5IGJ1dCBpdCB3aWxsIHdvcmsgZm9yIG5vdy4KLQkgKiBAc2VlIG9yZy5lY2xpcHNlLmNkdC5pbnRlcm5hbC5jb3JlLm1vZGVsLlRyYW5zbGF0aW9uVW5pdAotCSAqIAotCSAqLwotCUBTdXBwcmVzc1dhcm5pbmdzKCJyZXN0cmljdGlvbiIpLy8ganVzdCBmb3IgdGhlIGphdmFkb2MgY29tbWVudCB0byBub3QgZ2V0IHdhcm5pbmcgOikKLQlAT3ZlcnJpZGUKLQlwdWJsaWMgaW50IGdldENIZWxwVHlwZSgpIHsKLQkJcmV0dXJuIC0xOwotCX0KLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvZWRpdG9ySGVscC9VUENDSGVscEluZm9Qcm92aWRlci5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9lZGl0b3JIZWxwL1VQQ0NIZWxwSW5mb1Byb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjhiMzYuLjAwMDAwMDAKLS0tIGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9lZGl0b3JIZWxwL1VQQ0NIZWxwSW5mb1Byb3ZpZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5lZGl0b3JIZWxwOwotCi1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLmVkaXRvckhlbHAuQ0hlbHBQcm92aWRlckltcGw7Ci0KLS8qKgotICogCi0gKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgSUNIZWxwUHJvdmlkZXIgYW5kIHByb3ZpZGVzIFVQQyBpbmZvcm1hdGlvbiA8YnI+Ci0gKiAoRjEsIGhvdmVyLCBjb250ZW50IGFzc2lzdCwgZXRjLikKLSAgKiA8cD4KLSAqIDxiPk5vdGU6PC9iPiBUaGlzICByZXF1aXJlcyBhIGZpeCB0byBDRFQgcG9zdC01LjAuMCByZWxlYXNlCi0gKiB0byBvcmcuZWNsaXBzZS5jZHQuaW50ZXJuYWwuY29yZS5tb2RlbC5UcmFuc2xhdGlvblVuaXQgIC0gdG8gcmVjb2duaXplIGNvbnRlbnQtdHlwZSBvZiBVUEMgdG8gYmUgYSBkZXJpdmlhdGl2ZSAoImtpbmRPZiIpIHRoZSBDIGNvbnRlbnQgdHlwZS4KLSAqIDxwPlNlZSBodHRwczovL2J1Z3MuZWNsaXBzZS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MzMxICAKLSAqIDxwPkZ1cnRoZXIgbm90ZTogYSB3b3JrYXJvdW5kIGhhcyBiZWVuIGFwcGxpZWQgaW4gVUNDQ0hlbHBCb29rIHRvIG5vdCByZXF1aXJlIHRoZSBDRFQgcGF0Y2gKLSAqIAotICogCi0gKiBAYXV0aG9yIEJldGggVGliYml0dHMKLSAqCi0gKi8KLXB1YmxpYyBjbGFzcyBVUENDSGVscEluZm9Qcm92aWRlciBleHRlbmRzIENIZWxwUHJvdmlkZXJJbXBsIHsKLQotCXB1YmxpYyBVUENDSGVscEluZm9Qcm92aWRlcigpIHsKLQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVQQ0NIZWxwSW5mb1Byb3ZpZGVyIGN0b3IoKS4uLiIpOy8vZGVidWcgb25seSAsIHRvIHNlZSB3aGVuIGNhbGxlZAotCX0KLQotCXB1YmxpYyB2b2lkIGluaXRpYWxpemUoKSB7Ci0JCWhlbHBCb29rID0gbmV3IFVQQ0NIZWxwQm9vaygpOwotCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiVVBDQ0hlbHBJbmZvUHJvdmlkZXIgaW5pdGlhbGl6ZSgpLi4uIik7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9wcmVmcy9VUENQcmVmZXJlbmNlUGFnZS5qYXZhIGIvdG9vbHMvcGxkdC9vcmcuZWNsaXBzZS5wdHAucGxkdC51cGMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3VwYy9wcmVmcy9VUENQcmVmZXJlbmNlUGFnZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWQ0OWI4Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvcHJlZnMvVVBDUHJlZmVyZW5jZVBhZ2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy5wcmVmczsKLQotCi0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLkZpZWxkRWRpdG9yUHJlZmVyZW5jZVBhZ2U7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2UucHJlZmVyZW5jZS5JUHJlZmVyZW5jZVN0b3JlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuUGF0aEVkaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ0lEczsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuVVBDUGx1Z2luOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2g7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlOwotCi0KLS8qKgotICogUHJlZmVyZW5jZSBwYWdlIGJhc2VkIG9uIEZpZWxkRWRpdG9yUHJlZmVyZW5jZVBhZ2UKLSAqIAotICogQGF1dGhvciB4dWUKLSAqLwotCi1wdWJsaWMgY2xhc3MgVVBDUHJlZmVyZW5jZVBhZ2UgZXh0ZW5kcyBGaWVsZEVkaXRvclByZWZlcmVuY2VQYWdlIGltcGxlbWVudHMgSVdvcmtiZW5jaFByZWZlcmVuY2VQYWdlCi17Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOQ0xVREVTX1BSRUZFUkVOQ0VfTEFCRUwgID0gIlVQQyBpbmNsdWRlIHBhdGhzOiI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOQ0xVREVTX1BSRUZFUkVOQ0VfQlJPV1NFID0gIlBsZWFzZSBjaG9vc2UgYSBkaXJlY3Rvcnk6IjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBDX0hFTFA9IkxvY2F0aW9uIG9mIFVQQyBoZWxwIGZpbGVzOiI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQX0RFRkFVTFQ9IlVzZSBkZWZhdWx0IjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBDX0hFTFBfREVGQVVMVF9JRD0idXBjSGVscFVzZURlZmF1bHQiOwotICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQX0xJTlVYPSJVc2UgTGludXggbG9jYXRpb246ICI7Ci0gICAgLy9wcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBDX0hFTFBfQUlYPSJVc2UgQUlYIGxvY2F0aW9uOiAiOwotICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQX09USEVSPSJPdGhlcjoiOwotICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19IRUxQX09USEVSX0lEPSJ1cGNIZWxwT3RoZXIiOwotICAgIAotICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQQ19MT0NBVElPTl9BSVg9Ii9vcHQvcnNjdC9sYXBpL2VjbGlwc2UvaGVscCI7Ci0gICAgLy9wcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBDX0xPQ0FUSU9OX0xJTlVYPSJvcHQvaWJtaHBjL2xhcGkvZWNsaXBzZS9oZWxwIjsKLSAgICAKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBDX1dISUNIX0hFTFBfSUQ9ImRlZmF1bHQiOyAgLy8gYWx0ZXJuYXRpdmVzIGFyZTogZGVmYXVsdCwgYWl4LCBsaW51eCwgb3RoZXIKLQotICAgIHB1YmxpYyBVUENQcmVmZXJlbmNlUGFnZSgpCi0gICAgewotICAgICAgICBzdXBlcihGTEFUKTsKLSAgICAgICAgaW5pdFByZWZlcmVuY2VTdG9yZSgpOwotICAgIH0KLQotICAgIHB1YmxpYyBVUENQcmVmZXJlbmNlUGFnZShpbnQgc3R5bGUpCi0gICAgewotICAgICAgICBzdXBlcihzdHlsZSk7Ci0gICAgICAgIGluaXRQcmVmZXJlbmNlU3RvcmUoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgVVBDUHJlZmVyZW5jZVBhZ2UoU3RyaW5nIHRpdGxlLCBJbWFnZURlc2NyaXB0b3IgaW1hZ2UsIGludCBzdHlsZSkKLSAgICB7Ci0gICAgICAgIHN1cGVyKHRpdGxlLCBpbWFnZSwgc3R5bGUpOwotICAgICAgICBpbml0UHJlZmVyZW5jZVN0b3JlKCk7Ci0gICAgfQotCi0gICAgcHVibGljIFVQQ1ByZWZlcmVuY2VQYWdlKFN0cmluZyB0aXRsZSwgaW50IHN0eWxlKQotICAgIHsKLSAgICAgICAgc3VwZXIodGl0bGUsIHN0eWxlKTsKLSAgICAgICAgaW5pdFByZWZlcmVuY2VTdG9yZSgpOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEluaXQgcHJlZmVyZW5jZSBzdG9yZSBhbmQgc2V0IHRoZSBwcmVmZXJlbmNlIHN0b3JlIGZvciB0aGUgcHJlZmVyZW5jZSBwYWdlCi0gICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIGluaXRQcmVmZXJlbmNlU3RvcmUoKQotICAgIHsKLSAgICAgICAgSVByZWZlcmVuY2VTdG9yZSBzdG9yZSA9IFVQQ1BsdWdpbi5nZXREZWZhdWx0KCkuZ2V0UHJlZmVyZW5jZVN0b3JlKCk7Ci0gICAgICAgIHNldFByZWZlcmVuY2VTdG9yZShzdG9yZSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgaW5pdChJV29ya2JlbmNoIHdvcmtiZW5jaCkKLSAgICB7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgY3JlYXRlRmllbGRFZGl0b3JzKCkKLSAgICB7Ci0gICAgICAgIFBhdGhFZGl0b3IgcGF0aEVkaXRvciA9IG5ldyBQYXRoRWRpdG9yKFVQQ0lEcy5VUENfSU5DTFVERVMsIElOQ0xVREVTX1BSRUZFUkVOQ0VfTEFCRUwsCi0gICAgICAgICAgICAgICAgSU5DTFVERVNfUFJFRkVSRU5DRV9CUk9XU0UsIGdldEZpZWxkRWRpdG9yUGFyZW50KCkpOwotICAgICAgICBhZGRGaWVsZChwYXRoRWRpdG9yKTsKLQotICAgICAgICAvLyJVc2UgZGVmYXVsdD8iCi0vLyAgICAgICAgQm9vbGVhbkZpZWxkRWRpdG9yIGJlZCA9IG5ldyBCb29sZWFuRmllbGRFZGl0b3IoVVBDX0hFTFBfREVGQVVMVF9JRCxVUENfSEVMUF9ERUZBVUxULGdldEZpZWxkRWRpdG9yUGFyZW50KCkpOwotLy8gICAgICAgIGFkZEZpZWxkKGJlZCk7Ci0gIC8qICAgICAgCi0gICAgICAgIGludCBudW1Db2w9MTsKLSAgICAJUmFkaW9Hcm91cEZpZWxkRWRpdG9yIGNob2ljZUZFID0gbmV3IFJhZGlvR3JvdXBGaWVsZEVkaXRvcihVUENfV0hJQ0hfSEVMUF9JRCwgVVBDX0hFTFAsIG51bUNvbCwgbmV3IFN0cmluZ1tdW10gewotCQkJCXsgVVBDX0hFTFBfREVGQVVMVCwgImNob2ljZTEiIH0sIAotCQkJCXsgVVBDX0hFTFBfQUlYK1VQQ19MT0NBVElPTl9BSVgsICJjaG9pY2UyIiB9LCAKLQkJCQl7IFVQQ19IRUxQX0xJTlVYK1VQQ19MT0NBVElPTl9MSU5VWCwgIkNob2ljZTMiIH0sCi0JCQkJeyBVUENfSEVMUF9PVEhFUiwgIkNob2ljZTQiIH19LAotCQkJCWdldEZpZWxkRWRpdG9yUGFyZW50KCkpOwotICAgIAlhZGRGaWVsZChjaG9pY2VGRSk7Ci0gICAgCQotICAgIAlTdHJpbmdGaWVsZEVkaXRvciBvdGhlckxvYz1uZXcgU3RyaW5nRmllbGRFZGl0b3IoVVBDX0hFTFBfT1RIRVJfSUQsIFVQQ19IRUxQX09USEVSLGdldEZpZWxkRWRpdG9yUGFyZW50KCkpOwotICAgIAlhZGRGaWVsZChvdGhlckxvYyk7Ci0gICAgCSovCi0gICAgCQotICAgIH0KLSAgICAKLX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvdmlld3MvVVBDQXJ0aWZhY3RWaWV3LmphdmEgYi90b29scy9wbGR0L29yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvdXBjL3ZpZXdzL1VQQ0FydGlmYWN0Vmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDcyOGQ1Li4wMDAwMDAwCi0tLSBhL3Rvb2xzL3BsZHQvb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC91cGMvdmlld3MvVVBDQXJ0aWZhY3RWaWV3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4IElCTSBDb3Jwb3JhdGlvbi4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICAgIElCTSBDb3Jwb3JhdGlvbiAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnB0cC5wbGR0LnVwYy52aWV3czsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0LmNvbW1vbi52aWV3cy5TaW1wbGVUYWJsZU1hcmtlclZpZXc7Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQudXBjLlVQQ0lEczsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC51cGMuVVBDUGx1Z2luOwotCi0KLQotLyoqCi0gKiBBIFVQQyBhcnRpZmFjdCB2aWV3IGJhc2VkIG9uIFNpbXBsZVRhYmxlVmlldyA8YnI+Ci0gKiBOb3RlIHRoYXQgdGhlIElEIG11c3QgYmUgdW5pcXVlLgotICogCi0gKi8KLXB1YmxpYyBjbGFzcyBVUENBcnRpZmFjdFZpZXcgZXh0ZW5kcyBTaW1wbGVUYWJsZU1hcmtlclZpZXcKLXsKLSAgICBwdWJsaWMgVVBDQXJ0aWZhY3RWaWV3KCkKLSAgICB7Ci0gICAgICAgIC8vIGlmIHlvdSBuZWVkIHRvIHJlYWQgaWNvbiBpbWFnZXMsIGV0Yy4gZnJvbSB0aGUgcGx1Zy1pbiwgYmUgc3VyZSB0byBwYXNzCi0gICAgICAgIC8vIGluIGFuIGFjdHVhbCBQbHVnaW4gY2xhc3MgaW5zdGFuY2UgZm9yIGZpcnN0IGFyZwotICAgICAgICBzdXBlcihVUENQbHVnaW4uZ2V0RGVmYXVsdCgpLCAiVVBDIEFydGlmYWN0IiwgIlVQQyBBcnRpZmFjdHMiLCAiQ29uc3RydWN0IiwgVVBDSURzLk1BUktFUl9JRCk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy8uY2xhc3NwYXRoIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy8uY2xhc3NwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTFjOGYyLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvLmNsYXNzcGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxjbGFzc3BhdGg+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+Ci0JPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+Ci08L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvLnByb2plY3QgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLy5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjZmNjczLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvLnByb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPHByb2plY3REZXNjcmlwdGlvbj4KLQk8bmFtZT5vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpczwvbmFtZT4KLQk8Y29tbWVudD48L2NvbW1lbnQ+Ci0JPHByb2plY3RzPgotCTwvcHJvamVjdHM+Ci0JPGJ1aWxkU3BlYz4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgotCQkJPGFyZ3VtZW50cz4KLQkJCTwvYXJndW1lbnRzPgotCQk8L2J1aWxkQ29tbWFuZD4KLQkJPGJ1aWxkQ29tbWFuZD4KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCQk8YnVpbGRDb21tYW5kPgotCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+Ci0JCQk8YXJndW1lbnRzPgotCQkJPC9hcmd1bWVudHM+Ci0JCTwvYnVpbGRDb21tYW5kPgotCTwvYnVpbGRTcGVjPgotCTxuYXR1cmVzPgotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+Ci0JPC9uYXR1cmVzPgotPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL01FVEEtSU5GL01BTklGRVNULk1GIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9NRVRBLUlORi9NQU5JRkVTVC5NRgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk4NGFiNy4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL01FVEEtSU5GL01BTklGRVNULk1GCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtTmFtZTogU2FtcGxlIENEVCBTdGF0aWMgQW5hbHlzaXMKLUJ1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzO3NpbmdsZXRvbjo9dHJ1ZQotQnVuZGxlLVZlcnNpb246IDEuMC4wCi1CdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy5BY3RpdmF0b3IKLVJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwKLSBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUsCi0gb3JnLmVjbGlwc2UuY2R0LmNvcmUsCi0gb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMsCi0gb3JnLmVjbGlwc2UucHRwLnBsZHQuY29tbW9uLAotIG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcywKLSBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0Ci1FY2xpcHNlLUxhenlTdGFydDogdHJ1ZQotQnVuZGxlLVZlbmRvcjogSUJNIFJlc2VhcmNoCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2J1aWxkLnByb3BlcnRpZXMgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2J1aWxkLnByb3BlcnRpZXMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkM2QzYTcuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9idWlsZC5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1zb3VyY2UuLiA9IHNyYy8KLW91dHB1dC4uID0gYmluLwotYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcCi0gICAgICAgICAgICAgICBNRVRBLUlORi8sXAotICAgICAgICAgICAgICAgLixcCi0gICAgICAgICAgICAgICBpY29ucy8KZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHMuZ2lmIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxscy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NWU1YTUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxscy5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2NhbGxzQy5naWYgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2NhbGxzQy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2OWZhMjUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxsc0MuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxsc0NGLmdpZiBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2FsbHNDRi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MzNiMTkuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jYWxsc0NGLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvY2xhc3NfaGkuZ2lmIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jbGFzc19oaS5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZjkyN2UuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9jbGFzc19oaS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2dyYXBoQy5naWYgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL2dyYXBoQy5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNWMzMzguLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9ncmFwaEMuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9ncmFwaFcuZ2lmIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9pY29ucy9ncmFwaFcuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2IyOTRiLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvZ3JhcGhXLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvc2FtcGxlLmdpZiBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvaWNvbnMvc2FtcGxlLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRmYjNjOS4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2ljb25zL3NhbXBsZS5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3BsdWdpbi54bWwgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3BsdWdpbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYTZlNzUuLjAwMDAwMDAKLS0tIGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9wbHVnaW4ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjIiPz4KLTxwbHVnaW4+Ci0KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5jb21tYW5kcyI+Ci0gICAgICA8Y2F0ZWdvcnkKLSAgICAgICAgICAgIG5hbWU9IlNhbXBsZSBDYXRlZ29yeSIKLSAgICAgICAgICAgIGlkPSJjZHRBU1QyLmNvbW1hbmRzLmNhdGVnb3J5Ij4KLSAgICAgIDwvY2F0ZWdvcnk+Ci0gICAgICA8Y29tbWFuZAotICAgICAgICAgICAgbmFtZT0iQ2FsbEdyYXBoIENvbW1hbmQiCi0gICAgICAgICAgICBjYXRlZ29yeUlkPSJjZHRBU1QyLmNvbW1hbmRzLmNhdGVnb3J5IgotICAgICAgICAgICAgaWQ9ImNkdEFTVDIuY29tbWFuZHMuY2dDb21tYW5kIj4KLSAgICAgIDwvY29tbWFuZD4KLSAgICAgICA8Y29tbWFuZAotICAgICAgICAgICAgbmFtZT0iQ0ZHIENvbW1hbmQiCi0gICAgICAgICAgICBjYXRlZ29yeUlkPSJjZHRBU1QyLmNvbW1hbmRzLmNhdGVnb3J5IgotICAgICAgICAgICAgaWQ9ImNkdEFTVDIuY29tbWFuZHMuY2ZnQ29tbWFuZCI+Ci0gICAgICA8L2NvbW1hbmQ+Ci0gICA8L2V4dGVuc2lvbj4KLSAgIDxleHRlbnNpb24KLSAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS51aS5oYW5kbGVycyI+Ci0gICAgICA8aGFuZGxlcgotICAgICAgICAgICAgY29tbWFuZElkPSJjZHRBU1QyLmNvbW1hbmRzLmNnQ29tbWFuZCIKLSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy5oYW5kbGVycy5CdWlsZENhbGxHcmFwaEhhbmRsZXIiPgotICAgICAgPC9oYW5kbGVyPgotICAgICAgPGhhbmRsZXIKLSAgICAgICAgICAgIGNvbW1hbmRJZD0iY2R0QVNUMi5jb21tYW5kcy5jZmdDb21tYW5kIgotICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzLmhhbmRsZXJzLkJ1aWxkQ0ZHcmFwaEhhbmRsZXIiPgotICAgICAgPC9oYW5kbGVyPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkuYmluZGluZ3MiPgotICAgICAgPGtleQotICAgICAgICAgICAgY29tbWFuZElkPSJjZHRBU1QyLmNvbW1hbmRzLmNnQ29tbWFuZCIKLSAgICAgICAgICAgIGNvbnRleHRJZD0ib3JnLmVjbGlwc2UudWkuY29udGV4dHMud2luZG93IgotICAgICAgICAgICAgc2VxdWVuY2U9Ik0xKzYiCi0gICAgICAgICAgICBzY2hlbWVJZD0ib3JnLmVjbGlwc2UudWkuZGVmYXVsdEFjY2VsZXJhdG9yQ29uZmlndXJhdGlvbiI+Ci0gICAgICA8L2tleT4KLSAgIDwvZXh0ZW5zaW9uPgotICAgPGV4dGVuc2lvbgotICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnVpLm1lbnVzIj4KLSAgICAgIDxtZW51Q29udHJpYnV0aW9uCi0gICAgICAgICAgICBsb2NhdGlvblVSST0ibWVudTpvcmcuZWNsaXBzZS51aS5tYWluLm1lbnU/YWZ0ZXI9YWRkaXRpb25zIj4KLSAgICAgICAgIDxtZW51Ci0gICAgICAgICAgICAgICBsYWJlbD0iU2FtcGxlIE1lbnUiCi0gICAgICAgICAgICAgICBtbmVtb25pYz0iTSIKLSAgICAgICAgICAgICAgIGlkPSJjZHRBU1QyLm1lbnVzLnNhbXBsZU1lbnUiPgotICAgICAgICAgICAgPGNvbW1hbmQKLSAgICAgICAgICAgICAgICAgIGNvbW1hbmRJZD0iY2R0QVNUMi5jb21tYW5kcy5jZ0NvbW1hbmQiCi0gICAgICAgICAgICAgICAgICBpY29uPSJpY29ucy9ncmFwaFcuZ2lmIgotICAgICAgICAgICAgICAgICAgaWQ9ImNkdEFTVDIubWVudXMuY2dDb21tYW5kIgotICAgICAgICAgICAgICAgICAgbGFiZWw9IldhbGsgQVNUIHRyZWUiCi0gICAgICAgICAgICAgICAgICBtbmVtb25pYz0iUyIKLSAgICAgICAgICAgICAgICAgIHRvb2x0aXA9IldhbGsgQVNUIFRyZWUgdG9vbHRpcCI+Ci0gICAgICAgICAgICA8L2NvbW1hbmQ+Ci0gICAgICAgICA8L21lbnU+Ci0gICAgICA8L21lbnVDb250cmlidXRpb24+Ci0gICAgICA8bWVudUNvbnRyaWJ1dGlvbgotICAgICAgICAgICAgbG9jYXRpb25VUkk9InRvb2xiYXI6b3JnLmVjbGlwc2UudWkubWFpbi50b29sYmFyP2FmdGVyPWFkZGl0aW9ucyI+Ci0gICAgICAgICA8dG9vbGJhcgotICAgICAgICAgICAgICAgaWQ9ImNkdEFTVDIudG9vbGJhcnMuc2FtcGxlVG9vbGJhciI+Ci0gICAgICAgICAgICA8Y29tbWFuZAotICAgICAgICAgICAgICAgICAgY29tbWFuZElkPSJjZHRBU1QyLmNvbW1hbmRzLmNnQ29tbWFuZCIKLSAgICAgICAgICAgICAgICAgIGljb249Imljb25zL2NhbGxzQy5naWYiCi0gICAgICAgICAgICAgICAgICBpZD0iY2R0QVNUMi50b29sYmFycy5idWlsZENhbGxHcmFwaENvbW1hbmQiCi0gICAgICAgICAgICAgICAgICBsYWJlbD0iQnVpbGQgQ2FsbCBHcmFwaCIKLSAgICAgICAgICAgICAgICAgIHRvb2x0aXA9IkJ1aWxkIENhbGwgR3JhcGgiPgotICAgICAgICAgICAgPC9jb21tYW5kPgotICAgICAgICAgICAgIDxjb21tYW5kCi0gICAgICAgICAgICAgICAgICBjb21tYW5kSWQ9ImNkdEFTVDIuY29tbWFuZHMuY2ZnQ29tbWFuZCIKLSAgICAgICAgICAgICAgICAgIGljb249Imljb25zL2NhbGxzQ0YuZ2lmIgotICAgICAgICAgICAgICAgICAgaWQ9ImNkdEFTVDIudG9vbGJhcnMuYnVpbGRDYWxsR3JhcGhDb21tYW5kIgotICAgICAgICAgICAgICAgICAgbGFiZWw9IkJ1aWxkIENGR3JhcGgiCi0gICAgICAgICAgICAgICAgICB0b29sdGlwPSJCdWlsZCBDb250cm9sIEZsb3cgR3JhcGgiPgotICAgICAgICAgICAgPC9jb21tYW5kPgotICAgICAgICAgPC90b29sYmFyPgotICAgICAgPC9tZW51Q29udHJpYnV0aW9uPgotICAgPC9leHRlbnNpb24+Ci0gICA8ZXh0ZW5zaW9uCi0gICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UudWkuYWN0aW9uU2V0cyI+Ci0gICAgICA8YWN0aW9uU2V0Ci0gICAgICAgICAgICBsYWJlbD0iU2FtcGxlIEFjdGlvbiBTZXQiCi0gICAgICAgICAgICB2aXNpYmxlPSJ0cnVlIgotICAgICAgICAgICAgaWQ9ImNkdEFTVDIuYWN0aW9uU2V0Ij4KLSAgICAgICAgIDxhY3Rpb24KLSAgICAgICAgICAgICAgIGxhYmVsPSJXYWxrIEFTVCIKLSAgICAgICAgICAgICAgIGljb249Imljb25zL2dyYXBoVy5naWYiCi0gICAgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMuYWN0aW9ucy5BU1RXYWxrZXJBY3Rpb24iCi0gICAgICAgICAgICAgICB0b29sdGlwPSJXYWxrIEFTVCB0b29sdGlwIgotICAgICAgICAgICAgICAgbWVudWJhclBhdGg9InNhbXBsZU1lbnUvc2FtcGxlR3JvdXAiCi0gICAgICAgICAgICAgICB0b29sYmFyUGF0aD0ic2FtcGxlR3JvdXAiCi0gICAgICAgICAgICAgICBpZD0iY2R0YXN0Mi5hY3Rpb25zLlNhbXBsZUFjdGlvbiI+Ci0gICAgICAgICA8L2FjdGlvbj4KLSAgICAgIDwvYWN0aW9uU2V0PgotICAgPC9leHRlbnNpb24+Ci0KLTwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvQWN0aXZhdG9yLmphdmEgYi90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9BY3RpdmF0b3IuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIyNjBjYS4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9BY3RpdmF0b3IuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXM7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47Ci1pbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7Ci0KLS8qKgotICogVGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlCi0gKi8KLXB1YmxpYyBjbGFzcyBBY3RpdmF0b3IgZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsKLQotCS8vIFRoZSBwbHVnLWluIElECi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gImNkdEFTVDIiOwotCi0JLy8gVGhlIHNoYXJlZCBpbnN0YW5jZQotCXByaXZhdGUgc3RhdGljIEFjdGl2YXRvciBwbHVnaW47Ci0JCi0JLyoqCi0JICogVGhlIGNvbnN0cnVjdG9yCi0JICovCi0JcHVibGljIEFjdGl2YXRvcigpIHsKLQl9Ci0KLQkvKgotCSAqIChub24tSmF2YWRvYykKLQkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQotCSAqLwotCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXN1cGVyLnN0YXJ0KGNvbnRleHQpOwotCQlwbHVnaW4gPSB0aGlzOwotCX0KLQotCS8qCi0JICogKG5vbi1KYXZhZG9jKQotCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkKLQkgKi8KLQlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0JCXBsdWdpbiA9IG51bGw7Ci0JCXN1cGVyLnN0b3AoY29udGV4dCk7Ci0JfQotCi0JLyoqCi0JICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlCi0JICoKLQkgKiBAcmV0dXJuIHRoZSBzaGFyZWQgaW5zdGFuY2UKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkgewotCQlyZXR1cm4gcGx1Z2luOwotCX0KLQotCS8qKgotCSAqIFJldHVybnMgYW4gaW1hZ2UgZGVzY3JpcHRvciBmb3IgdGhlIGltYWdlIGZpbGUgYXQgdGhlIGdpdmVuCi0JICogcGx1Zy1pbiByZWxhdGl2ZSBwYXRoCi0JICoKLQkgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aAotCSAqIEByZXR1cm4gdGhlIGltYWdlIGRlc2NyaXB0b3IKLQkgKi8KLQlwdWJsaWMgc3RhdGljIEltYWdlRGVzY3JpcHRvciBnZXRJbWFnZURlc2NyaXB0b3IoU3RyaW5nIHBhdGgpIHsKLQkJcmV0dXJuIGltYWdlRGVzY3JpcHRvckZyb21QbHVnaW4oUExVR0lOX0lELCBwYXRoKTsKLQl9Ci19CmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9hY3Rpb25zL0FTVFdhbGtlckFjdGlvbi5qYXZhIGIvdG9vbHMvc2FtcGxlcy9vcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9zcmMvb3JnL2VjbGlwc2UvcHRwL3BsZHQvc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvYWN0aW9ucy9BU1RXYWxrZXJBY3Rpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYzMjNiYy4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9hY3Rpb25zL0FTVFdhbGtlckFjdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDAyICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMuYWN0aW9uczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuQVNUVmlzaXRvcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RCaW5hcnlFeHByZXNzaW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVENvbW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUQ29tcG91bmRTdGF0ZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNURGVjbGFyYXRpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNURXhwcmVzc2lvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1ROYW1lOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVFByZXByb2Nlc3NvckluY2x1ZGVTdGF0ZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JQVNUUHJlcHJvY2Vzc29yU3RhdGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVFN0YXRlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RUcmFuc2xhdGlvblVuaXQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUuZG9tLmFzdC5JVHlwZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuY29yZS5kb20uYXN0LklBU1RUcmFuc2xhdGlvblVuaXQuSURlcGVuZGVuY3lUcmVlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVFRyYW5zbGF0aW9uVW5pdC5JRGVwZW5kZW5jeVRyZWUuSUFTVEluY2x1c2lvbk5vZGU7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUubW9kZWwuSUNFbGVtZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLm1vZGVsLklDRWxlbWVudFZpc2l0b3I7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY2R0LmNvcmUubW9kZWwuSVRyYW5zbGF0aW9uVW5pdDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jZHQuaW50ZXJuYWwuY29yZS5kb20ucGFyc2VyLmMuQ0FTVEV4cHJlc3Npb25TdGF0ZW1lbnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMuSVJlc291cmNlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5Db3JlRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmFjdGlvbi5JQWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmRpYWxvZ3MuTWVzc2FnZURpYWxvZzsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS52aWV3ZXJzLklTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU3RydWN0dXJlZFNlbGVjdGlvbjsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JV29ya2JlbmNoV2luZG93OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZTsKLQotLyoqCi0gKiBUaGlzIHdhcyBpbml0aWFsbHkgYnVpbHQgZnJvbSB0aGUgIlNhbXBsZSBBY3Rpb24iIHBsdWdpbiBleGFtcGxlLgotICogCi0gKiBUaGlzIHNhbXBsZSBhY3Rpb24gd2Fsa3MgYW4gQVNUIHRyZWUgZm9yIGEgc2VsZWN0ZWQgQyBzb3VyY2UgZmlsZS4KLSAqIFNlbGVjdCBhIEMgc291cmNlIGZpbGUgaW4gdGhlIFByb2plY3RzIHZpZXcgYW5kIGNsaWNrIHRoZSBpY29uIGluIHRoZSB0b29sYmFyCi0gKiB0byBwcmludCBBU1Qgd2Fsa2luZyBpbmZvcm1hdGlvbi4KLSAqIAotICogQHNlZSBJV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGUKLSAqIAotICogQGF1dGhvciBCZXRoIFRpYmJpdHRzIHRpYmJpdHRzQHVzLmlibS5jb20KLSAqLwotcHVibGljIGNsYXNzIEFTVFdhbGtlckFjdGlvbiBpbXBsZW1lbnRzIElXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZSB7Ci0JcHJpdmF0ZSBJV29ya2JlbmNoV2luZG93IHdpbmRvdzsKLQlwcml2YXRlIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbjsKLQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3Rvci4KLQkgKi8KLQlwdWJsaWMgQVNUV2Fsa2VyQWN0aW9uKCkgewotCX0KLQotCS8qKgotCSAqIFRoZSBhY3Rpb24gaGFzIGJlZW4gYWN0aXZhdGVkLiBUaGUgYXJndW1lbnQgb2YgdGhlIG1ldGhvZCByZXByZXNlbnRzIHRoZQotCSAqICdyZWFsJyBhY3Rpb24gc2l0dGluZyBpbiB0aGUgd29ya2JlbmNoIFVJLgotCSAqIAotCSAqIEBzZWUgSVdvcmtiZW5jaFdpbmRvd0FjdGlvbkRlbGVnYXRlI3J1bgotCSAqLwotCXB1YmxpYyB2b2lkIHJ1bihJQWN0aW9uIGFjdGlvbikgewotCQlNZXNzYWdlRGlhbG9nLm9wZW5JbmZvcm1hdGlvbih3aW5kb3cuZ2V0U2hlbGwoKSwgIkNkdEFTVDIgUGx1Zy1pbiIsCi0JCQkJIlNlZSBDb25zb2xlIGZvciBBU1Qgd2Fsa2luZyByZXN1bHRzIik7Ci0JCXRyeSB7Ci0JCQlydW5TZWxlY3Rpb25FeGFtcGxlKHNlbGVjdGlvbik7Ci0JCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jawotCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJfQotCX0KLQotCS8qKgotCSAqIFNlbGVjdGlvbiBpbiB0aGUgd29ya2JlbmNoIGhhcyBiZWVuIGNoYW5nZWQuIFdlIGNhbiBjaGFuZ2UgdGhlIHN0YXRlIG9mCi0JICogdGhlICdyZWFsJyBhY3Rpb24gaGVyZSBpZiB3ZSB3YW50LCBidXQgdGhpcyBjYW4gb25seSBoYXBwZW4gYWZ0ZXIgdGhlCi0JICogZGVsZWdhdGUgaGFzIGJlZW4gY3JlYXRlZC4KLQkgKiAKLQkgKiBAc2VlIElXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZSNzZWxlY3Rpb25DaGFuZ2VkCi0JICovCi0JcHVibGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZChJQWN0aW9uIGFjdGlvbiwgSVNlbGVjdGlvbiBzZWxlY3Rpb24pIHsKLQkJaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSB7Ci0JCQl0aGlzLnNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbikgc2VsZWN0aW9uOwotCQl9Ci0KLQl9Ci0KLQlwdWJsaWMgdm9pZCBydW5TZWxlY3Rpb24oSVNlbGVjdGlvbiBzZWxlY3Rpb24pIHsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJzZWxlY3Rpb249IiArIHNlbGVjdGlvbik7Ci0JCWlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJVHJhbnNsYXRpb25Vbml0KSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgIElUcmFuc2xhdGlvblVuaXQiKTsKLQkJfQotCQlpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgSUNFbGVtZW50KSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIklDRWxlbWVudCIpOwotCQkJd2Fsa0lDRWxlbWVudCgoSUNFbGVtZW50KSBzZWxlY3Rpb24pOwotCi0JCX0KLQkJaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSB7Ci0JCQlJU3RydWN0dXJlZFNlbGVjdGlvbiBzcyA9IChJU3RydWN0dXJlZFNlbGVjdGlvbikgc2VsZWN0aW9uOwotCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCIgSVN0cnVjdHVyZWRTZWxlY3Rpb24sIGNvbnRlbnRzOiIpOwotCi0JCQlmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBzcy5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKLQkJCQlPYmplY3Qgb2JqID0gKE9iamVjdCkgaXRlci5uZXh0KCk7Ci0JCQkJLy8gSXQgY2FuIGJlIGEgUHJvamVjdCwgRm9sZGVyLCBGaWxlLCBldGMuLi4KLQkJCQlpZiAob2JqIGluc3RhbmNlb2YgSUFkYXB0YWJsZSkgewotCQkJCQlJQWRhcHRhYmxlIGlhZCA9IChJQWRhcHRhYmxlKSBvYmo7Ci0JCQkJCWZpbmFsIElSZXNvdXJjZSByZXMgPSAoSVJlc291cmNlKSBpYWQKLQkJCQkJCQkuZ2V0QWRhcHRlcihJUmVzb3VyY2UuY2xhc3MpOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZ290IHJlc291cmNlOiAiICsgcmVzKTsKLQotCQkJCQkvLyBJQ0VsZW1lbnQgY292ZXJzIGZvbGRlcnMgYW5kIHRyYW5zbGF0aW9udW5pdHMKLQkJCQkJZmluYWwgSUNFbGVtZW50IGNlID0gKElDRWxlbWVudCkgaWFkCi0JCQkJCQkJLmdldEFkYXB0ZXIoSUNFbGVtZW50LmNsYXNzKTsvLyBjZHQ0MAotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZ290IElDRWxlbWVudDogIiArIGNlKTsKLQotCQkJCQlJVHJhbnNsYXRpb25Vbml0IHR1ID0gKElUcmFuc2xhdGlvblVuaXQpIGlhZAotCQkJCQkJCS5nZXRBZGFwdGVyKElUcmFuc2xhdGlvblVuaXQuY2xhc3MpOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZ290IElUcmFuc2xhdGlvblVuaXQ6ICIgKyB0dSk7Ci0JCQkJCXRyeSB7Ci0JCQkJCQlsaXN0RmxhdEluZm8odHUpOwotCQkJCQkJd2Fsa0lUVSh0dSk7Ci0JCQkJCX0gY2F0Y2ggKENvcmVFeGNlcHRpb24gZSkgewotCQkJCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jawotCQkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKLQkJCQkJfQotCQkJCX0KLQkJCX0vLyBlbmQgZm9yCi0JCX0KLQl9Ci0KLQlwdWJsaWMgdm9pZCBydW5TZWxlY3Rpb25FeGFtcGxlKElTZWxlY3Rpb24gc2VsZWN0aW9uKSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCWlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikgewotCQkJSVN0cnVjdHVyZWRTZWxlY3Rpb24gc3MgPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLQkJCWZvciAoSXRlcmF0b3IgaXRlciA9IHNzLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykgewotCQkJCU9iamVjdCBvYmogPSAoT2JqZWN0KSBpdGVyLm5leHQoKTsKLQkJCQkvLyBJdCBjYW4gYmUgYSBQcm9qZWN0LCBGb2xkZXIsIEZpbGUsIGV0Yy4uLgotCQkJCWlmIChvYmogaW5zdGFuY2VvZiBJQWRhcHRhYmxlKSB7Ci0JCQkJCUlBZGFwdGFibGUgaWFkID0gKElBZGFwdGFibGUpIG9iajsKLQkJCQkJZmluYWwgSVJlc291cmNlIHJlcyA9IChJUmVzb3VyY2UpIGlhZAotCQkJCQkJCS5nZXRBZGFwdGVyKElSZXNvdXJjZS5jbGFzcyk7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiICAgICBnb3QgcmVzb3VyY2U6ICIgKyByZXMpOwotCi0JCQkJCS8vIElDRWxlbWVudCBjb3ZlcnMgZm9sZGVycyBhbmQgdHJhbnNsYXRpb24gdW5pdHMKLQkJCQkJZmluYWwgSUNFbGVtZW50IGNlID0gKElDRWxlbWVudCkgaWFkCi0JCQkJCQkJLmdldEFkYXB0ZXIoSUNFbGVtZW50LmNsYXNzKTsvLyBjZHQ0MAotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZ290IElDRWxlbWVudDogIiArIGNlKTsKLQotCQkJCQlJVHJhbnNsYXRpb25Vbml0IHR1ID0gKElUcmFuc2xhdGlvblVuaXQpIGlhZAotCQkJCQkJCS5nZXRBZGFwdGVyKElUcmFuc2xhdGlvblVuaXQuY2xhc3MpOwotCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZ290IElUcmFuc2xhdGlvblVuaXQ6ICIgKyB0dSk7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiXG49PT09PT09PT09bGlzdEZsYXRJbmZvKCk6Iik7Ci0JCQkJCWxpc3RGbGF0SW5mbyh0dSk7Ci0JCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiXG49PT09PT09PT09d2Fsa0lUVSgpOiIpOwotCQkJCQl3YWxrSVRVKHR1KTsKLQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCJcbj09PT09PT09PT13YWxrSVRVX0FTVCgpOiIpOwotCQkJCQl3YWxrSVRVX0FTVCh0dSk7Ci0KLQkJCQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKioKLQkgKiBXZSBjYW4gdXNlIHRoaXMgbWV0aG9kIHRvIGRpc3Bvc2Ugb2YgYW55IHN5c3RlbSByZXNvdXJjZXMgd2UgcHJldmlvdXNseQotCSAqIGFsbG9jYXRlZC4KLQkgKiAKLQkgKiBAc2VlIElXb3JrYmVuY2hXaW5kb3dBY3Rpb25EZWxlZ2F0ZSNkaXNwb3NlCi0JICovCi0JcHVibGljIHZvaWQgZGlzcG9zZSgpIHsKLQl9Ci0KLQkvKioKLQkgKiBXZSB3aWxsIGNhY2hlIHdpbmRvdyBvYmplY3QgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwcm92aWRlIHBhcmVudCBzaGVsbAotCSAqIGZvciB0aGUgbWVzc2FnZSBkaWFsb2cuCi0JICogCi0JICogQHNlZSBJV29ya2JlbmNoV2luZG93QWN0aW9uRGVsZWdhdGUjaW5pdAotCSAqLwotCXB1YmxpYyB2b2lkIGluaXQoSVdvcmtiZW5jaFdpbmRvdyB3aW5kb3cpIHsKLQkJdGhpcy53aW5kb3cgPSB3aW5kb3c7Ci0JfQotCi0JcHVibGljIHZvaWQgd2Fsa0lDRWxlbWVudChJQ0VsZW1lbnQgaWNlKSB7Ci0JCS8vIElDRWxlbWVudCBpY2UgPSAoSUNFbGVtZW50KXNlbGVjdGlvbjsKLQkJU3RyaW5nIGVOYW1lID0gaWNlLmdldEVsZW1lbnROYW1lKCk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiSUNFbGVtZW50IG5hbWU6ICIgKyBlTmFtZSk7Ci0KLQl9Ci0KLQkvKioKLQkgKiBXYWxrIHRoZSBJVHJhbnNsYXRpb25Vbml0IHdpdGggYSB2aXNpdG9yLCB3aGljaCAob25seSkgdmlzaXRzIElDRWxlbWVudHMKLQkgKiAKLQkgKiBAcGFyYW0gdHUKLQkgKiBAdGhyb3dzIENvcmVFeGNlcHRpb24KLQkgKi8KLQlwcml2YXRlIHZvaWQgd2Fsa0lUVShJVHJhbnNsYXRpb25Vbml0IHR1KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCVN0cmluZyB0dU5hbWUgPSB0dS5nZXRFbGVtZW50TmFtZSgpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIklUcmFuc2xhdGlvblVuaXQgbmFtZTogIiArIHR1TmFtZSk7Ci0JCXR1LmFjY2VwdChuZXcgSUNFbGVtZW50VmlzaXRvcigpIHsKLQkJCXB1YmxpYyBib29sZWFuIHZpc2l0KElDRWxlbWVudCBlbGVtZW50KSB0aHJvd3MgQ29yZUV4Y2VwdGlvbiB7Ci0JCQkJYm9vbGVhbiB2aXNpdENoaWxkcmVuID0gdHJ1ZTsKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nOiAiICsgZWxlbWVudC5nZXRFbGVtZW50TmFtZSgpKTsKLQkJCQlyZXR1cm4gdmlzaXRDaGlsZHJlbjsKLQkJCX0KLQkJfSk7Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigiQVNUIHZpc2l0b3IgZm9yICIgKyB0dU5hbWUpOwotCQlJQVNUVHJhbnNsYXRpb25Vbml0IGFzdCA9IHR1LmdldEFTVCgpOwotCQlhc3QuYWNjZXB0KG5ldyBNeUFTVFZpc2l0b3IoKSk7Ci0JfQotCi0JLyoqCi0JICogV2FsayB0aGUgSUFTVFRyYW5zbGF0aW9uVW5pdCdzIEFTVCB0cmVlLCB3aGljaCBjYW4gdmlzaXQgbWFueSB0eXBlcyBvZgotCSAqIG5vZGVzCi0JICogCi0JICogQHBhcmFtIHR1Ci0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICovCi0JcHJpdmF0ZSB2b2lkIHdhbGtJVFVfQVNUKElUcmFuc2xhdGlvblVuaXQgdHUpIHRocm93cyBDb3JlRXhjZXB0aW9uIHsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJBU1QgdmlzaXRvciBmb3IgIiArIHR1LmdldEVsZW1lbnROYW1lKCkpOwotCQlJQVNUVHJhbnNsYXRpb25Vbml0IGFzdCA9IHR1LmdldEFTVCgpOwotCQlTeXN0ZW0ub3V0Ci0JCQkJLnByaW50bG4oIlxuPT09PT09PT09PT09PT09PT1NeUFTVFZpc2l0b3IyIGFsc28gaW1wbGVtZW50cyBsZWF2ZSgpIFxuIik7Ci0JCWFzdC5hY2NlcHQobmV3IE15QVNUVmlzaXRvcjIoKSk7Ci0JfQotCi0JY2xhc3MgTXlBU1RWaXNpdG9yIGV4dGVuZHMgQVNUVmlzaXRvciB7Ci0KLQkJTXlBU1RWaXNpdG9yKCkgewotCQkJdGhpcy5zaG91bGRWaXNpdFN0YXRlbWVudHMgPSB0cnVlOyAvLyBsb3RzIG1vcmUKLQkJCXRoaXMuc2hvdWxkVmlzaXREZWNsYXJhdGlvbnMgPSB0cnVlOwotCQl9Ci0KLQkJcHVibGljIGludCB2aXNpdChJQVNUU3RhdGVtZW50IHN0bXQpIHsgLy8gbG90cyBtb3JlCi0JCQlTdHJpbmcgc2lnID0gc3RtdC5nZXRSYXdTaWduYXR1cmUoKTsKLQkJCWlmIChzaWcubGVuZ3RoKCkgPiAwKQotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVmlzaXRpbmcgc3RtdDogIiArIHN0bXQuZ2V0UmF3U2lnbmF0dXJlKCkpOwotCQkJZWxzZSBpZiAoc3RtdCBpbnN0YW5jZW9mIElBU1RDb21wb3VuZFN0YXRlbWVudCkgewotCQkJCUlBU1RDb21wb3VuZFN0YXRlbWVudCBjc3RtdCA9IChJQVNUQ29tcG91bmRTdGF0ZW1lbnQpIHN0bXQ7Ci0JCQkJSUFTVFN0YXRlbWVudFtdIHN0bXRzID0gY3N0bXQuZ2V0U3RhdGVtZW50cygpOwotCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVmlzaXRpbmcgY29tcG91bmQgc3RtdCB3aXRoIHN0bXRzOiAiCi0JCQkJCQkrIHN0bXRzLmxlbmd0aCk7Ci0JCQkJZm9yIChJQVNUU3RhdGVtZW50IHN0IDogc3RtdHMpIHsKLQkJCQkJU3RyaW5nIHJhd1NpZyA9IHN0LmdldFJhd1NpZ25hdHVyZSgpOwotCi0JCQkJCWlmIChyYXdTaWcubGVuZ3RoKCkgPT0gMCkgewotCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAtPiIgKyBzdCk7Ci0JCQkJCQlpZiAoc3QgaW5zdGFuY2VvZiBDQVNURXhwcmVzc2lvblN0YXRlbWVudCkgewotCQkJCQkJCUNBU1RFeHByZXNzaW9uU3RhdGVtZW50IGVzID0gKENBU1RFeHByZXNzaW9uU3RhdGVtZW50KSBzdDsKLQkJCQkJCQlJQVNURXhwcmVzc2lvbiBleHAgPSBlcy5nZXRFeHByZXNzaW9uKCk7Ci0JCQkJCQkJaWYgKGV4cCBpbnN0YW5jZW9mIElBU1RCaW5hcnlFeHByZXNzaW9uKSB7Ci0JCQkJCQkJCUlBU1RCaW5hcnlFeHByZXNzaW9uIGJleHAgPSAoSUFTVEJpbmFyeUV4cHJlc3Npb24pIGV4cDsKLQotCQkJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgICBiaW5hcnkgZXhwOiAiCi0JCQkJCQkJCQkJKyBiZXhwLmdldE9wZXJhbmQxKCkgKyAiICIKLQkJCQkJCQkJCQkrIGJleHAuZ2V0T3BlcmF0b3IoKSArICIgIgotCQkJCQkJCQkJCSsgYmV4cC5nZXRPcGVyYW5kMigpKTsKLQkJCQkJCQl9Ci0JCQkJCQkJU3RyaW5nIGV4cFN0ciA9IGV4cC5nZXRSYXdTaWduYXR1cmUoKTsKLQkJCQkJCQlJVHlwZSB0eXBlID0gZXhwLmdldEV4cHJlc3Npb25UeXBlKCk7Ci0JCQkJCQl9Ci0JCQkJCX0gZWxzZSB7Ci0JCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIiAgIC0+IiArIHJhd1NpZyk7Ci0JCQkJCX0KLQkJCQl9Ci0JCQl9Ci0JCQlyZXR1cm4gUFJPQ0VTU19DT05USU5VRTsKLQkJfQotCi0JCXB1YmxpYyBpbnQgdmlzaXQoSUFTVERlY2xhcmF0aW9uIGRlY2wpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVmlzaXRpbmcgZGVjbDogIiArIGRlY2wuZ2V0UmF3U2lnbmF0dXJlKCkpOwotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQotCX0KLQotCi0JLyoqIFZpc2l0b3IgdGhhdCB1c2VzIGxlYXZlKCkgdG8gc2hvdyBuZXN0aW5nICovCi0JY2xhc3MgTXlBU1RWaXNpdG9yMiBleHRlbmRzIEFTVFZpc2l0b3IgewotCi0JCU15QVNUVmlzaXRvcjIoKSB7Ci0JCQl0aGlzLnNob3VsZFZpc2l0U3RhdGVtZW50cyA9IHRydWU7Ci0JCQl0aGlzLnNob3VsZFZpc2l0RGVjbGFyYXRpb25zID0gdHJ1ZTsKLQkJCXRoaXMuc2hvdWxkVmlzaXROYW1lcyA9IHRydWU7Ci0JCX0KLQotCQkvKioKLQkJICogUHJpbnQgc3RhdGVtZW50IGluZm86IGlmIGFsdGVyZWQgYnkgcHJlcHJvY2Vzc29yLCB0aGVuCi0JCSAqIGdldFJhd1NpZ25hdHVyZSgpIGlzIGVtcHR5OyB1c2UgYWx0ZXJuYXRlIHJlcHJlc2VudGF0aW9uCi0JCSAqLwotCQlwdWJsaWMgaW50IHZpc2l0KElBU1RTdGF0ZW1lbnQgc3RtdCkgewotCQkJU3RyaW5nIHNpZyA9IHN0bXQuZ2V0UmF3U2lnbmF0dXJlKCk7Ci0JCQlpZiAoc2lnLmxlbmd0aCgpID4gMCkKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIHN0bXQ6ICIgKyBzdG10LmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCWVsc2UKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIHN0bXQ6ICIgKyBzdG10LnRvU3RyaW5nKCkpOwotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQotCQlwdWJsaWMgaW50IHZpc2l0KElBU1REZWNsYXJhdGlvbiBkZWNsKSB7Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oIlZpc2l0aW5nIGRlY2w6ICIgKyBkZWNsLmdldFJhd1NpZ25hdHVyZSgpKTsKLQkJCXJldHVybiBQUk9DRVNTX0NPTlRJTlVFOwotCQl9Ci0KLQkJcHVibGljIGludCB2aXNpdChJQVNUTmFtZSBuYW1lKSB7Ci0JCQlTdHJpbmcgcHJ0TmFtZSA9IG5hbWUudG9TdHJpbmcoKTsKLQkJCWlmIChwcnROYW1lLmxlbmd0aCgpID09IDApCi0JCQkJcHJ0TmFtZSA9IG5hbWUuZ2V0UmF3U2lnbmF0dXJlKCk7IC8vIHVzZSBwcmUgcHJlLXByb2Nlc3NvcgotCQkJLy8gdmFsdWUKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiVmlzaXRpbmcgbmFtZTogIiArIHBydE5hbWUpOwotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQotCQlwdWJsaWMgaW50IGxlYXZlKElBU1RTdGF0ZW1lbnQgc3RtdCkgewotCQkJU3lzdGVtLm91dC5wcmludGxuKCIgTGVhdmluZyBzdG10OiAiICsgc3RtdC5nZXRSYXdTaWduYXR1cmUoKSk7Ci0JCQlyZXR1cm4gUFJPQ0VTU19DT05USU5VRTsKLQkJfQotCi0JCXB1YmxpYyBpbnQgbGVhdmUoSUFTVERlY2xhcmF0aW9uIGRlY2wpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiIExlYXZpbmcgZGVjbDogIiArIGRlY2wuZ2V0UmF3U2lnbmF0dXJlKCkpOwotCQkJcmV0dXJuIFBST0NFU1NfQ09OVElOVUU7Ci0JCX0KLQotCQlwdWJsaWMgaW50IGxlYXZlKElBU1ROYW1lIG5hbWUpIHsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiIExlYXZpbmcgbmFtZTogIiArIG5hbWUpOy8vIHBvc3NpYmx5IGVtcHR5Ci0JCQlyZXR1cm4gUFJPQ0VTU19DT05USU5VRTsKLQkJfQotCX0KLQotCS8qKgotCSAqIExpc3QgImZsYXQgaW5mbyIgdHlwZSBxdWVyaWVzIHRoYXQgcmV0dXJuIGxpc3RzIG9mIHRoaW5ncyBvbiB0aGUgYXN0Ci0JICogCi0JICogQHBhcmFtIHR1Ci0JICogQHRocm93cyBDb3JlRXhjZXB0aW9uCi0JICovCi0Jdm9pZCBsaXN0RmxhdEluZm8oSVRyYW5zbGF0aW9uVW5pdCB0dSkgdGhyb3dzIENvcmVFeGNlcHRpb24gewotCQlJQVNUVHJhbnNsYXRpb25Vbml0IGFzdCA9IHR1LmdldEFTVCgpOwotCi0JCVN5c3RlbS5vdXQucHJpbnRsbigiQVNUIGZvcjogIiArIGFzdC5nZXRDb250YWluaW5nRmlsZW5hbWUoKSk7Ci0KLQkJSUFTVFByZXByb2Nlc3NvclN0YXRlbWVudFtdIHBwc3MgPSBhc3QuZ2V0QWxsUHJlcHJvY2Vzc29yU3RhdGVtZW50cygpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIlByZXByb2Nlc3NvclN0bXRzOiAob21pdCAvdXNyLy4uLikiKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBwcHNzLmxlbmd0aDsgaSsrKSB7Ci0JCQlJQVNUUHJlcHJvY2Vzc29yU3RhdGVtZW50IHBwcyA9IHBwc3NbaV07Ci0JCQlTdHJpbmcgZm4gPSBwcHMuZ2V0Q29udGFpbmluZ0ZpbGVuYW1lKCk7Ci0JCQlpZiAoIWZuLnN0YXJ0c1dpdGgoIi91c3IiKSkgewotCQkJCVN5c3RlbS5vdXQucHJpbnRsbihpICsgIiAgUHJlcHJvY2Vzc29yU3RtdDogIiArIGxhc3RwYXJ0KGZuKQotCQkJCQkJKyAiICIgKyBwcHMuZ2V0UmF3U2lnbmF0dXJlKCkpOwotCQkJfQotCQl9Ci0JCUlBU1REZWNsYXJhdGlvbltdIGRlY2xzID0gYXN0LmdldERlY2xhcmF0aW9ucygpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkRlY2xhcmF0aW9uczogKG9taXQgL3Vzci8uLi4pIik7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgZGVjbHMubGVuZ3RoOyBpKyspIHsKLQkJCUlBU1REZWNsYXJhdGlvbiBkZWNsID0gZGVjbHNbaV07Ci0JCQlTdHJpbmcgZm4gPSBkZWNsLmdldENvbnRhaW5pbmdGaWxlbmFtZSgpOwotCQkJaWYgKCFmbi5zdGFydHNXaXRoKCIvdXNyIikpIHsKLQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oaSArICIgIERlY2xhcmF0aW9uOiAiICsgbGFzdHBhcnQoZm4pICsgIiAiCi0JCQkJCQkrIGRlY2wuZ2V0UmF3U2lnbmF0dXJlKCkpOwotCQkJfQotCQl9Ci0JCUlBU1RQcmVwcm9jZXNzb3JTdGF0ZW1lbnRbXSBpZGlycyA9IGFzdC5nZXRJbmNsdWRlRGlyZWN0aXZlcygpOwotCQkvLyByZWN1cnNlcyB0aHJ1IGluY2x1ZGVzIGluY2x1ZGVkIGJ5IG90aGVyIGluY2x1ZGVzLi4uCi0JCVN5c3RlbS5vdXQucHJpbnRsbigiSW5jbHVkZSBkaXJlY3RpdmVzOiAiKTsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBpZGlycy5sZW5ndGg7IGkrKykgewotCQkJSUFTVFByZXByb2Nlc3NvclN0YXRlbWVudCBpZGlyID0gaWRpcnNbaV07Ci0JCQlTeXN0ZW0ub3V0LnByaW50bG4oaSArICIgaW5jbHVkZSBkaXJlY3RpdmU6ICIgKyBpZGlyKTsKLQotCQl9Ci0KLQkJSURlcGVuZGVuY3lUcmVlIGR0ID0gYXN0LmdldERlcGVuZGVuY3lUcmVlKCk7Ci0JCUlBU1RJbmNsdXNpb25Ob2RlW10gaW5zID0gZHQuZ2V0SW5jbHVzaW9ucygpOwotCQkvLyB0aGlzIGxpc3RzIG9ubHkgdGhlIGluY2x1ZGVzIGltbWVkaWF0ZWx5IGluY2x1ZGVkIGJ5IHRoaXMgc3JjIGZpbGUKLQkJU3lzdGVtLm91dC5wcmludGxuKCJEZXBlbmRlbmN5IHRyZWUvSW5jbHVkZSBzdGF0ZW1lbnRzOiIpOwotCQlmb3IgKGludCBpID0gMDsgaSA8IGlucy5sZW5ndGg7IGkrKykgewotCQkJSUFTVEluY2x1c2lvbk5vZGUgaW4gPSBpbnNbaV07Ci0JCQlJQVNUUHJlcHJvY2Vzc29ySW5jbHVkZVN0YXRlbWVudCBpcyA9IGluLmdldEluY2x1ZGVEaXJlY3RpdmUoKTsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbihpICsgIiAgaW5jbHVkZSBzdG10OiAiICsgaXMpOwotCQl9Ci0JCS8vIG5vdGU6IGNvbW1lbnRzIGFyZSBub3QgYXZhaWxhYmxlIGFzIEFTVCBOb2RlcyBidXQgYXJlIGF2YWlsYWJsZSBoZXJlLgotCQkvLyAoSW4gc3BpdGUgb2YgdGhlIGV4aXN0ZW5jZSBvZiBJQVNUQ29tbWVudCBjbGFzcyBhbmQgdmlzaXQoSUFTVENvbW1lbnQpIG1ldGhvZC4pCi0JCS8vIFRoZXNlIGFyZSBkZXByZWNhdGVkIGluIENEVCA1LjAKLQkJYXN0ID0gdHUuZ2V0QVNUKG51bGwsSVRyYW5zbGF0aW9uVW5pdC5BU1RfQ1JFQVRFX0NPTU1FTlRfTk9ERVMpOwotCQlJQVNUQ29tbWVudFtdIGNtdHMgPSBhc3QuZ2V0Q29tbWVudHMoKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJDb21tZW50cyBmb3VuZDogIitjbXRzLmxlbmd0aCk7Ci0JCWZvciAoaW50IGkgPSAwOyBpIDwgY210cy5sZW5ndGg7IGkrKykgewotCQkJSUFTVENvbW1lbnQgY29tbWVudCA9IGNtdHNbaV07Ci0JCQljaGFyW10gY210Q2hhcj1jb21tZW50LmdldENvbW1lbnQoKTsKLQkJCVN0cmluZyBjbXRTdHI9U3RyaW5nLnZhbHVlT2YoY210Q2hhcik7Ci0JCQkKLQkJCVN5c3RlbS5vdXQucHJpbnRsbihpICsgIiBDb21tZW50OiBbIiArIGNtdFN0ciArICJdIHJhd1NpZzogWyIrY29tbWVudC5nZXRSYXdTaWduYXR1cmUoKSsiXSBsaW5lICIKLQkJCQkJKyBjb21tZW50LmdldEZpbGVMb2NhdGlvbigpKTsKLQotCQl9Ci0KLQl9Ci0KLQkvKioKLQkgKiBSZXR1cm4gbGFzdCBwYXJ0IG9mIHN0cmluZyBwYXRobmFtZTogZS5nLiBhL2IvYy9mb28uYyByZXR1cm5zIGZvby5jCi0JICogCi0JICogQHBhcmFtIHBhdGhuYW1lCi0JICogQHJldHVybgotCSAqLwotCVN0cmluZyBsYXN0cGFydChTdHJpbmcgcGF0aG5hbWUpIHsKLQkJaW50IGxvYyA9IHBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJyk7Ci0JCXJldHVybiBwYXRobmFtZS5zdWJzdHJpbmcobG9jICsgMSk7Ci0JfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3NhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2hhbmRsZXJzL0J1aWxkQ0ZHcmFwaEhhbmRsZXIuamF2YSBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3NhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2hhbmRsZXJzL0J1aWxkQ0ZHcmFwaEhhbmRsZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI0YWQ4ZS4uMDAwMDAwMAotLS0gYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9oYW5kbGVycy9CdWlsZENGR3JhcGhIYW5kbGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotcGFja2FnZSBvcmcuZWNsaXBzZS5wdHAucGxkdC5zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy5oYW5kbGVyczsKLQotaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKLQotaW1wb3J0IG9yZy5lY2xpcHNlLmNkdC5jb3JlLmRvbS5hc3QuSUFTVFN0YXRlbWVudDsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkFic3RyYWN0SGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLk1lc3NhZ2VEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdC5ncmFwaHMuR3JhcGhDcmVhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLklCbG9jazsKLWltcG9ydCBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5JQ2FsbEdyYXBoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLklDYWxsR3JhcGhOb2RlOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLklDb250cm9sRmxvd0dyYXBoOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLmltcGwuQ29udHJvbEZsb3dHcmFwaDsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5JU2VsZWN0aW9uTGlzdGVuZXI7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFBhcnQ7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVdvcmtiZW5jaFdpbmRvdzsKLWltcG9ydCBvcmcuZWNsaXBzZS51aS5oYW5kbGVycy5IYW5kbGVyVXRpbDsKLQotLyoqCi0gKiBCdWlsZCBDb250cm9sIEZsb3cgR3JhcGgKLSAqIAotICogQGF1dGhvciBCZXRoIFRpYmJpdHRzICB0aWJiaXR0c0B1cy5pYm0uY29tCi0gKiAgCi0gKiBAc2VlIG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuSUhhbmRsZXIKLSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5BYnN0cmFjdEhhbmRsZXIKLSAqIEBzZWUgb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdC5ncmFwaHMuR3JhcGhDcmVhdG9yCi0gKi8KLXB1YmxpYyBjbGFzcyBCdWlsZENGR3JhcGhIYW5kbGVyIGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyIGltcGxlbWVudHMKLQkJSVNlbGVjdGlvbkxpc3RlbmVyIHsKLQlwcml2YXRlIElTdHJ1Y3R1cmVkU2VsZWN0aW9uIHNlbGVjdGlvbjsKLQlwcm90ZWN0ZWQgSUNhbGxHcmFwaCBjYWxsR3JhcGg7Ci0JcHJvdGVjdGVkIEdyYXBoQ3JlYXRvciBncmFwaENyZWF0b3I7Ci0JcHJvdGVjdGVkIElXb3JrYmVuY2hXaW5kb3cgd2luZG93OwotCi0JLyoqCi0JICogVGhlIGNvbnN0cnVjdG9yLgotCSAqLwotCXB1YmxpYyBCdWlsZENGR3JhcGhIYW5kbGVyKCkgewotCQlncmFwaENyZWF0b3IgPSBuZXcgR3JhcGhDcmVhdG9yKCk7Ci0KLQl9Ci0KLQkvKioKLQkgKiBFeGVjdXRlIHRoZSBjb21tYW5kOiBleHRyYWN0IGV4dHJhY3QgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbiBmcm9tIHRoZQotCSAqIGFwcGxpY2F0aW9uIGNvbnRleHQuIDxicj4KLQkgKiBBIG5ldyBjYWxsIGdyYXBoIGlzIGNvbnN0cnVjdGVkIGZvciB0aGUgc2VsZWN0ZWQgcmVzb3VyY2VzLgotCSAqIAotCSAqIEBwYXJhbSBldmVudAotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZXhlY3V0aW9uLiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSBJSGFuZGxlcgotCSAqICAgICAgICAgaW50ZXJmYWNlLCBtdXN0IGJlIDxjb2RlPm51bGw8L2NvZGU+LgotCSAqLwotCXB1YmxpYyBPYmplY3QgZXhlY3V0ZShFeGVjdXRpb25FdmVudCBldmVudCkgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7Ci0JCXdpbmRvdyA9IEhhbmRsZXJVdGlsLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvd0NoZWNrZWQoZXZlbnQpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkQ0ZHcmFwaEhhbmRsZXIuZXhlY3V0ZSgpIik7Ci0JCS8vIGNyZWF0ZSBhbiBlbXB0eSBjYWxsIGdyYXBoIHRvIGJlZ2luIHdpdGgKLQkJY2FsbEdyYXBoID0gZ3JhcGhDcmVhdG9yLmluaXRDYWxsR3JhcGgoKTsKLQkJLy8gR2V0IHRoZSBjdXJyZW50IHNlbGVjdGlvbgotCQlpZiAoc2VsZWN0aW9uID09IG51bGwpIHsKLQkJCUlTZWxlY3Rpb24gc2VsID0gSGFuZGxlclV0aWwuZ2V0Q3VycmVudFNlbGVjdGlvbihldmVudCk7Ci0JCQlpZiAoc2VsIGluc3RhbmNlb2YgSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHsKLQkJCQlzZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbDsKLQkJCX0KLQkJCWlmIChzZWxlY3Rpb24gPT0gbnVsbCkgewotCQkJCW1lc3NhZ2UoIk5vIHNlbGVjdGlvbiBkZXRlY3RlZC4gUGxlYXNlIHNlbGVjdCBhIGZpbGUsIGZvbGRlciwgb3IgcHJvamVjdCBpbiB0aGUgUHJvamVjdHMgVmlldy4iKTsKLQkJCQlzZWxlY3Rpb249bnVsbDsKLQkJCQlyZXR1cm4gbnVsbDsKLQkJCX0KLQkJfQotCi0JCS8vIFdlIGl0ZXJhdGUgaGVyZSBvbmx5IHRvIGhhbmRsZSB0aGUgcG9zc2liaWxpdHkgb2YgbXVsdGlwbGUtc2VsZWN0aW9uLgotCQkvLyBncmFwaENyZWF0b3Igd2lsbCBkZXNjZW5kIGludG8gY2hpbGQgbm9kZXMuCi0JCS8qZmluYWwqLyBJUmVzb3VyY2UgcmVzPW51bGw7Ci0JCWZvciAoSXRlcmF0b3IgaXRlciA9IHNlbGVjdGlvbi5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKLQkJCU9iamVjdCBvYmogPSAoT2JqZWN0KSBpdGVyLm5leHQoKTsKLQkJCS8vIEl0IGNhbiBiZSBhIFByb2plY3QsIEZvbGRlciwgRmlsZSwgZXRjLi4uCi0JCQlpZiAob2JqIGluc3RhbmNlb2YgSUFkYXB0YWJsZSkgewotCQkJCUlBZGFwdGFibGUgaWFkID0gKElBZGFwdGFibGUpIG9iajsKLQkJCQlyZXMgPSAoSVJlc291cmNlKSBpYWQuZ2V0QWRhcHRlcihJUmVzb3VyY2UuY2xhc3MpOwotCQkJCS8vIE5vdGU6IHB1dCB0aGlzIGluIGEgSm9iIG9yIFdvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbiBpZiByZXNvdXJjZXMKLQkJCQkvLyB3aWxsIGJlIGNoYW5nZWQuCi0JCQkJaWYgKHJlcyAhPSBudWxsKSB7Ci0JCQkJCWNhbGxHcmFwaCA9IGdyYXBoQ3JlYXRvci5pbml0Q2FsbEdyYXBoKHJlcyk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJbWVzc2FnZSgiUGxlYXNlIHNlbGVjdCBhIGZpbGUsIGZvbGRlciwgb3IgcHJvamVjdCBpbiB0aGUgUHJvamVjdHMgdmlldyIpOwotCQkJCQlzZWxlY3Rpb249bnVsbDsKLQkJCQkJcmV0dXJuIG51bGw7Ci0JCQkJfQotCQkJfQotCQl9Ci0KLQkJZ3JhcGhDcmVhdG9yLmNvbXB1dGVDYWxsR3JhcGgoY2FsbEdyYXBoKTsKLQkJLy8gZ2V0IHRoZSBmaXJzdCBub2RlCi0JCUlDYWxsR3JhcGhOb2RlIHRvcE5vZGUgPSBjYWxsR3JhcGgudG9wRW50cnkoKTsKLQkJU3RyaW5nIHRvcE5hbWU9dG9wTm9kZS5nZXRGdW5jTmFtZSgpOwotCQkKLQkJSUNhbGxHcmFwaE5vZGUgZmlyc3ROb2RlPWNhbGxHcmFwaC5nZXRBbGxOb2RlcygpLmdldCgwKTsKLQkJU3RyaW5nIGZpcnN0TmFtZT1maXJzdE5vZGUuZ2V0RnVuY05hbWUoKTsKLQkJLy8gZ2V0IGEgbm9kZSBieSBmdW5jdGlvbiBuYW1lCi0JCUlDYWxsR3JhcGhOb2RlIG5hbWVkTm9kZSA9IGNhbGxHcmFwaC5nZXROb2RlKHJlcy5nZXROYW1lKCksICJmb28iKTsKLQkJU3RyaW5nIG5hbWVkTmFtZT0iIjsKLQkJaWYobmFtZWROb2RlIT1udWxsKSB7Ci0JCQluYW1lZE5hbWU9bmFtZWROb2RlLmdldEZ1bmNOYW1lKCk7Ci0JCX0KLQkJCi0JCUlDYWxsR3JhcGhOb2RlIG5vZGUgPSB0b3BOb2RlOwotCQlJQVNUU3RhdGVtZW50IGZ1bmNCb2R5PW5vZGUuZ2V0RnVuY0RlZigpLmdldEJvZHkoKTsKLQkJSUNvbnRyb2xGbG93R3JhcGggY2ZnID0gbmV3IENvbnRyb2xGbG93R3JhcGgoZnVuY0JvZHkpOwotCQljZmcuYnVpbGRDRkcoKTsKLQkJCi0JCUlCbG9jayBlbnRyeUJsb2NrID0gY2ZnLmdldEVudHJ5KCk7Ci0JCWZvciAoSUJsb2NrIGJsb2NrPSBjZmcuZ2V0RW50cnkoKTsgYmxvY2shPW51bGw7IGJsb2NrID0gYmxvY2suZ2V0VG9wTmV4dCgpKSB7Ci0JCQlibG9jay5wcmludCgpOwotCQl9Ci0JCXJldHVybiBudWxsOwotCX0KLQotCXB1YmxpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWQoSVdvcmtiZW5jaFBhcnQgcGFydCwgSVNlbGVjdGlvbiBzZWxlY3Rpb24pIHsKLQkJaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIElTdHJ1Y3R1cmVkU2VsZWN0aW9uKSB7Ci0JCQl0aGlzLnNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbikgc2VsZWN0aW9uOwotCQkJU3lzdGVtLm91dC5wcmludGxuKCJCdWlsZENhbGxHcmFwaEhhbmRsZXIgZ290IHNlbGVjdGlvbiIpOwotCQl9Ci0KLQl9Ci0KLQlwdWJsaWMgdm9pZCBtZXNzYWdlKFN0cmluZyBtc2cpIHsKLQkJTWVzc2FnZURpYWxvZy5vcGVuSW5mb3JtYXRpb24od2luZG93LmdldFNoZWxsKCksCi0JCQkJIkhvdXN0b24sIHdlIGhhdmUgYSBwcm9ibGVtIiwgbXNnKTsKLQl9Ci19CmRpZmYgLS1naXQgYS90b29scy9zYW1wbGVzL29yZy5lY2xpcHNlLnB0cC5wbGR0LnNhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL3NyYy9vcmcvZWNsaXBzZS9wdHAvcGxkdC9zYW1wbGVDRFRzdGF0aWNBbmFseXNpcy9oYW5kbGVycy9CdWlsZENhbGxHcmFwaEhhbmRsZXIuamF2YSBiL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3NhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2hhbmRsZXJzL0J1aWxkQ2FsbEdyYXBoSGFuZGxlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWM2ODYxLi4wMDAwMDAwCi0tLSBhL3Rvb2xzL3NhbXBsZXMvb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMvc3JjL29yZy9lY2xpcHNlL3B0cC9wbGR0L3NhbXBsZUNEVHN0YXRpY0FuYWx5c2lzL2hhbmRsZXJzL0J1aWxkQ2FsbEdyYXBoSGFuZGxlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLXBhY2thZ2Ugb3JnLmVjbGlwc2UucHRwLnBsZHQuc2FtcGxlQ0RUc3RhdGljQW5hbHlzaXMuaGFuZGxlcnM7Ci0KLWltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7Ci0KLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkFic3RyYWN0SGFuZGxlcjsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV2ZW50OwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLklSZXNvdXJjZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsKLWltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5kaWFsb2dzLk1lc3NhZ2VEaWFsb2c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5JU2VsZWN0aW9uOwotaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVN0cnVjdHVyZWRTZWxlY3Rpb247Ci1pbXBvcnQgb3JnLmVjbGlwc2UucHRwLnBsZHQubXBpLmFuYWx5c2lzLmNkdC5ncmFwaHMuR3JhcGhDcmVhdG9yOwotaW1wb3J0IG9yZy5lY2xpcHNlLnB0cC5wbGR0Lm1waS5hbmFseXNpcy5jZHQuZ3JhcGhzLklDYWxsR3JhcGg7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuSVNlbGVjdGlvbkxpc3RlbmVyOwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hQYXJ0OwotaW1wb3J0IG9yZy5lY2xpcHNlLnVpLklXb3JrYmVuY2hXaW5kb3c7Ci1pbXBvcnQgb3JnLmVjbGlwc2UudWkuaGFuZGxlcnMuSGFuZGxlclV0aWw7Ci0KLS8qKgotICogVGhpcyBoYW5kbGVyIGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyLCBhbiBJSGFuZGxlciBiYXNlIGNsYXNzLiBUaGlzIGhhbmRsZXIKLSAqIGJ1aWxkcyBhIGNhbGwgZ3JhcGggZm9yIHRoZSBzZWxlY3RlZCByZXNvdXJjZShzKSBpbiB0aGUgUHJvamVjdCBFeHBsb3JlciB2aWV3LiA8YnI+Ci0gKiAKLSAqIFR3byBzdGVwcyB0byBidWlsZGluZyBjYWxsIGdyYXBoOiA8YnI+Ci0gKiAxLiBjb2xsZWN0IGFsbCBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB0aGUgY2FsbCBncmFwaCA8YnI+Ci0gKiAyLiBjb25zdHJ1Y3QgdGhlIGNhbGxlciBhbmQgY2FsbGVlIHJlbGF0aW9uc2hpcCBhbW9uZyB0aGUgQ2FsbEdyYXBoTm9kZXMKLSAqIDxicj5Nb3N0IG9mIHRoZSB3b3JrIGlzIGRvbmUgYnkgR3JhcGhDcmVhdG9yCi0gKiAKLSAqIEBhdXRob3IgQmV0aCBUaWJiaXR0cyB0aWJiaXR0c0B1cy5pYm0uY29tCi0gKiAKLSAqIEBzZWUgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5JSGFuZGxlcgotICogQHNlZSBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkFic3RyYWN0SGFuZGxlcgotICogQHNlZSBvcmcuZWNsaXBzZS5wdHAucGxkdC5tcGkuYW5hbHlzaXMuY2R0LmdyYXBocy5HcmFwaENyZWF0b3IKLSAqLwotcHVibGljIGNsYXNzIEJ1aWxkQ2FsbEdyYXBoSGFuZGxlciBleHRlbmRzIEFic3RyYWN0SGFuZGxlciBpbXBsZW1lbnRzCi0JCUlTZWxlY3Rpb25MaXN0ZW5lciB7Ci0JcHJpdmF0ZSBJU3RydWN0dXJlZFNlbGVjdGlvbiBzZWxlY3Rpb247Ci0JcHJvdGVjdGVkIElDYWxsR3JhcGggY2FsbEdyYXBoOwotCXByb3RlY3RlZCBHcmFwaENyZWF0b3IgZ3JhcGhDcmVhdG9yOwotCXByb3RlY3RlZCBJV29ya2JlbmNoV2luZG93IHdpbmRvdzsKLQotCS8qKgotCSAqIFRoZSBjb25zdHJ1Y3Rvci4KLQkgKi8KLQlwdWJsaWMgQnVpbGRDYWxsR3JhcGhIYW5kbGVyKCkgewotCQlncmFwaENyZWF0b3IgPSBuZXcgR3JhcGhDcmVhdG9yKCk7Ci0KLQl9Ci0KLQkvKioKLQkgKiBFeGVjdXRlIHRoZSBjb21tYW5kOiBleHRyYWN0IGV4dHJhY3QgdGhlIG5lZWRlZCBpbmZvcm1hdGlvbiBmcm9tIHRoZQotCSAqIGFwcGxpY2F0aW9uIGNvbnRleHQuIDxicj4KLQkgKiBBIG5ldyBjYWxsIGdyYXBoIGlzIGNvbnN0cnVjdGVkIGZvciB0aGUgc2VsZWN0ZWQgcmVzb3VyY2VzLgotCSAqIAotCSAqIEBwYXJhbSBldmVudAotCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgZXhlY3V0aW9uLiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBieSBJSGFuZGxlcgotCSAqICAgICAgICAgaW50ZXJmYWNlLCBtdXN0IGJlIDxjb2RlPm51bGw8L2NvZGU+LgotCSAqLwotCXB1YmxpYyBPYmplY3QgZXhlY3V0ZShFeGVjdXRpb25FdmVudCBldmVudCkgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7Ci0JCXdpbmRvdyA9IEhhbmRsZXJVdGlsLmdldEFjdGl2ZVdvcmtiZW5jaFdpbmRvd0NoZWNrZWQoZXZlbnQpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkQ2FsbEdyYXBoSGFuZGxlci5leGVjdXRlKCkiKTsKLQkJLy8gY3JlYXRlIGFuIGVtcHR5IGNhbGwgZ3JhcGggdG8gYmVnaW4gd2l0aAotCQljYWxsR3JhcGggPSBncmFwaENyZWF0b3IuaW5pdENhbGxHcmFwaCgpOwotCQkvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCi0JCWlmIChzZWxlY3Rpb24gPT0gbnVsbCkgewotCQkJSVNlbGVjdGlvbiBzZWwgPSBIYW5kbGVyVXRpbC5nZXRDdXJyZW50U2VsZWN0aW9uKGV2ZW50KTsKLQkJCWlmIChzZWwgaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikgewotCQkJCXNlbGVjdGlvbiA9IChJU3RydWN0dXJlZFNlbGVjdGlvbikgc2VsOwotCQkJfQotCQkJaWYgKHNlbGVjdGlvbiA9PSBudWxsKSB7Ci0JCQkJbWVzc2FnZSgiTm8gc2VsZWN0aW9uIGRldGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGEgZmlsZSwgZm9sZGVyLCBvciBwcm9qZWN0IGluIHRoZSBQcm9qZWN0cyBWaWV3LiIpOwotCQkJCXNlbGVjdGlvbj1udWxsOwotCQkJCXJldHVybiBudWxsOwotCQkJfQotCQl9Ci0KLQkJLy8gV2UgaXRlcmF0ZSBoZXJlIG9ubHkgdG8gaGFuZGxlIHRoZSBwb3NzaWJpbGl0eSBvZiBtdWx0aXBsZS1zZWxlY3Rpb24uCi0JCS8vIGdyYXBoQ3JlYXRvciB3aWxsIGRlc2NlbmQgaW50byBjaGlsZCBub2Rlcy4KLQkJZm9yIChJdGVyYXRvciBpdGVyID0gc2VsZWN0aW9uLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykgewotCQkJT2JqZWN0IG9iaiA9IChPYmplY3QpIGl0ZXIubmV4dCgpOwotCQkJLy8gSXQgY2FuIGJlIGEgUHJvamVjdCwgRm9sZGVyLCBGaWxlLCBldGMuLi4KLQkJCWlmIChvYmogaW5zdGFuY2VvZiBJQWRhcHRhYmxlKSB7Ci0JCQkJSUFkYXB0YWJsZSBpYWQgPSAoSUFkYXB0YWJsZSkgb2JqOwotCQkJCWZpbmFsIElSZXNvdXJjZSByZXMgPSAoSVJlc291cmNlKSBpYWQuZ2V0QWRhcHRlcihJUmVzb3VyY2UuY2xhc3MpOwotCQkJCS8vIE5vdGU6IHB1dCB0aGlzIGluIGEgSm9iIG9yIFdvcmtzcGFjZU1vZGlmeU9wZXJhdGlvbiBpZiByZXNvdXJjZXMKLQkJCQkvLyB3aWxsIGJlIGNoYW5nZWQuCi0JCQkJaWYgKHJlcyAhPSBudWxsKSB7Ci0JCQkJCWNhbGxHcmFwaCA9IGdyYXBoQ3JlYXRvci5pbml0Q2FsbEdyYXBoKHJlcyk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJbWVzc2FnZSgiUGxlYXNlIHNlbGVjdCBhIGZpbGUsIGZvbGRlciwgb3IgcHJvamVjdCBpbiB0aGUgUHJvamVjdHMgdmlldyIpOwotCQkJCQlzZWxlY3Rpb249bnVsbDsKLQkJCQkJcmV0dXJuIG51bGw7Ci0JCQkJfQotCQkJfQotCQl9Ci0JCVN5c3RlbS5vdXQucHJpbnRsbigicmVzb3VyY2VzIHNjYW5uZWQuIE5vdyBzZWFyY2ggZm9yIGNhbGxlcnMvY2FsbGVlcyIpOwotCQlncmFwaENyZWF0b3IuY29tcHV0ZUNhbGxHcmFwaChjYWxsR3JhcGgpOwotCQlTeXN0ZW0ub3V0LnByaW50bG4oInNob3dDYWxsR3JhcGguLi4iKTsKLQkJZ3JhcGhDcmVhdG9yLnNob3dDYWxsR3JhcGgoY2FsbEdyYXBoKTsKLQkJU3lzdGVtLm91dC5wcmludGxuKCJzaG93Q2FsbEdyYXBoIGNvbXBsZXRlLiIpOwotCQlyZXR1cm4gbnVsbDsKLQl9Ci0KLQlwdWJsaWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkKElXb3JrYmVuY2hQYXJ0IHBhcnQsIElTZWxlY3Rpb24gc2VsZWN0aW9uKSB7Ci0JCWlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBJU3RydWN0dXJlZFNlbGVjdGlvbikgewotCQkJdGhpcy5zZWxlY3Rpb24gPSAoSVN0cnVjdHVyZWRTZWxlY3Rpb24pIHNlbGVjdGlvbjsKLQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQnVpbGRDYWxsR3JhcGhIYW5kbGVyIGdvdCBzZWxlY3Rpb24iKTsKLQkJfQotCi0JfQotCi0JcHVibGljIHZvaWQgbWVzc2FnZShTdHJpbmcgbXNnKSB7Ci0JCU1lc3NhZ2VEaWFsb2cub3BlbkluZm9ybWF0aW9uKHdpbmRvdy5nZXRTaGVsbCgpLAotCQkJCSJIb3VzdG9uLCB3ZSBoYXZlIGEgcHJvYmxlbSIsIG1zZyk7Ci0JfQotfQo=