PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KCjwhLS0KTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQpvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQp0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCiJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLApzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgoiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCnNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKdW5kZXIgdGhlIExpY2Vuc2UuCi0tPgo8cHJvamVjdCB4bWxucz0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9tYXZlbi12NF8wXzAueHNkIj4KICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+ICAKICA8Z3JvdXBJZD5ucGFuZGF5PC9ncm91cElkPiAgCiAgPGFydGlmYWN0SWQ+bnBhbmRheS1wcm9qZWN0PC9hcnRpZmFjdElkPiAgCiAgPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4gIAogIDx2ZXJzaW9uPjEuMS1TTkFQU0hPVDwvdmVyc2lvbj4gIAogIDxuYW1lPm5wYW5kYXktcHJvamVjdDwvbmFtZT4gIAogIDxtYWlsaW5nTGlzdHM+IAogICAgPG1haWxpbmdMaXN0PiAKICAgICAgPG5hbWU+TlBhbmRheSBEZXYgTGlzdDwvbmFtZT4gIAogICAgICA8cG9zdD5ucGFuZGF5QGRpc2N1c3Npb25zLmNvZGVwbGV4LmNvbTwvcG9zdD4gIAogICAgICA8b3RoZXJBcmNoaXZlcz4gCiAgICAgICAgPG90aGVyQXJjaGl2ZT5odHRwOi8vbjIubmFiYmxlLmNvbS9OUGFuZGF5LURpc2N1c3Npb25zLWYxNjU3MTMxLmh0bWw8L290aGVyQXJjaGl2ZT4gCiAgICAgIDwvb3RoZXJBcmNoaXZlcz4gCiAgICA8L21haWxpbmdMaXN0PiAgCiAgPC9tYWlsaW5nTGlzdHM+ICAKICA8c2NtPiAKICAgIDx1cmw+aHR0cHM6Ly9ucGFuZGF5LnN2bi5jb2RlcGxleC5jb20vc3ZuLzwvdXJsPiAgCiAgICA8Y29ubmVjdGlvbj5zY206c3ZuOmh0dHBzOi8vbnBhbmRheS5zdm4uY29kZXBsZXguY29tL3N2bi88L2Nvbm5lY3Rpb24+ICAKICAgIDxkZXZlbG9wZXJDb25uZWN0aW9uPnNjbTpzdm46aHR0cHM6Ly9ucGFuZGF5LnN2bi5jb2RlcGxleC5jb20vc3ZuLzwvZGV2ZWxvcGVyQ29ubmVjdGlvbj4gIAogICAgPHRhZz5SRUxfMF85X1NOQVBTSE9UPC90YWc+IAogIDwvc2NtPiAgCiAgPG9yZ2FuaXphdGlvbj4gCiAgICA8bmFtZT5OUGFuZGF5PC9uYW1lPiAgCiAgICA8dXJsPmh0dHA6Ly9jb2RlcGxleC5jb20vbnBhbmRheTwvdXJsPiAKICA8L29yZ2FuaXphdGlvbj4gIAogIDxpc3N1ZU1hbmFnZW1lbnQ+IAogICAgPHN5c3RlbT5Db2RlcGxleCBJc3N1ZSBUcmFja2VyPC9zeXN0ZW0+ICAKICAgIDx1cmw+aHR0cDovL3d3dy5jb2RlcGxleC5jb20vbnBhbmRheS9Xb3JrSXRlbS9MaXN0LmFzcHg8L3VybD4gCiAgPC9pc3N1ZU1hbmFnZW1lbnQ+ICAKICA8bGljZW5zZXM+IAogICAgPGxpY2Vuc2U+IAogICAgICA8bmFtZT5BcGFjaGUgMi4wPC9uYW1lPiAgCiAgICAgIDx1cmw+TElDRU5TRS50eHQ8L3VybD4gCiAgICA8L2xpY2Vuc2U+IAogIDwvbGljZW5zZXM+ICAKICA8ZGV2ZWxvcGVycz4gCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+QnJldHQgUG9ydGVyPC9uYW1lPiAgCiAgICAgIDxpZD5icmV0dHBvcnRlcjwvaWQ+ICAKICAgICAgPGVtYWlsPmJyZXR0QGFwYWNoZS5vcmc8L2VtYWlsPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+Y29vcmRpbmF0b3I8L3JvbGU+ICAKICAgICAgPC9yb2xlcz4gCiAgICA8L2RldmVsb3Blcj4gIAogICAgPGRldmVsb3Blcj4gCiAgICAgIDxuYW1lPk1lbHZpbiBTZW1icmFubzwvbmFtZT4gIAogICAgICA8aWQ+bWVsdmluc2VtYnJhbm88L2lkPiAgCiAgICAgIDxlbWFpbD5tZWx2aW5zZW1icmFub0BnbWFpbC5jb208L2VtYWlsPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+Y29vcmRpbmF0b3I8L3JvbGU+ICAKICAgICAgPC9yb2xlcz4gCiAgICA8L2RldmVsb3Blcj4gIAogICAgPGRldmVsb3Blcj4gCiAgICAgIDxuYW1lPkxlb3BvbGRvIEFnZGVwcGE8L25hbWU+ICAKICAgICAgPGlkPmxhZ2RlcHBhPC9pZD4gIAogICAgICA8ZW1haWw+bGFnZGVwcGFAZXhpc3QuY29tPC9lbWFpbD4gIAogICAgICA8cm9sZXM+IAogICAgICAgIDxyb2xlPmRldmVsb3Blcjwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+SmFuIEFuY2FqYXM8L25hbWU+ICAKICAgICAgPGlkPmphbmNhamFzPC9pZD4gIAogICAgICA8ZW1haWw+amFuY2FqYXNAZXhpc3QuY29tPC9lbWFpbD4gIAogICAgICA8cm9sZXM+IAogICAgICAgIDxyb2xlPmRldmVsb3Blcjwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+Sm9lIE9jYWJhPC9uYW1lPiAgCiAgICAgIDxpZD5qb2NhYmE8L2lkPiAgCiAgICAgIDxlbWFpbD5qb2NhYmFAZXhpc3QuY29tPC9lbWFpbD4gIAogICAgICA8cm9sZXM+IAogICAgICAgIDxyb2xlPmRldmVsb3Blcjwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+U2hlaW4gRXJuYWNpbzwvbmFtZT4gIAogICAgICA8aWQ+c2VybmFjaW88L2lkPiAgCiAgICAgIDxlbWFpbD5zZXJuYWNpb0BleGlzdC5jb208L2VtYWlsPiAgCiAgICAgIDxyb2xlcz4gCiAgICAgICAgPHJvbGU+ZGV2ZWxvcGVyPC9yb2xlPiAgCiAgICAgIDwvcm9sZXM+IAogICAgPC9kZXZlbG9wZXI+ICAKICAgIDxkZXZlbG9wZXI+IAogICAgICA8bmFtZT5D6WRyaWM8L25hbWU+ICAKICAgICAgPGlkPm1pbWlsPC9pZD4gIAogICAgICA8cm9sZXM+IAogICAgICAgIDxyb2xlPmRldmVsb3Blcjwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8ZGV2ZWxvcGVyPiAKICAgICAgPG5hbWU+TWFyaWNvciBCYWNsYXk8L25hbWU+ICAKICAgICAgPGlkPm1iYWNsYXk8L2lkPiAgCiAgICAgIDxlbWFpbD5tYmFjbGF5QGV4aXN0LmNvbTwvZW1haWw+ICAKICAgICAgPHJvbGVzPiAKICAgICAgICA8cm9sZT5RQTwvcm9sZT4gIAogICAgICA8L3JvbGVzPiAKICAgIDwvZGV2ZWxvcGVyPiAgCiAgICA8IS0tRW1lcml0dXMgQ29tbWl0dGVycy0tPgogICAgPGRldmVsb3Blcj4gCiAgICAgIDxuYW1lPlNoYW5lIElzYmVsbDwvbmFtZT4gIAogICAgICA8aWQ+c2lzYmVsbDwvaWQ+ICAKICAgICAgPGVtYWlsPnNpc2JlbGxAYXBhY2hlLm9yZzwvZW1haWw+ICAKICAgICAgPHVybD5odHRwOi8vanJvbGxlci5jb20vcGFnZS9yYW5kb203PC91cmw+ICAKICAgIDwvZGV2ZWxvcGVyPiAgICAgIAogICAgPGRldmVsb3Blcj4gCiAgICAgIDxuYW1lPkV2YW4gV29ybGV5PC9uYW1lPiAgCiAgICAgIDxpZD5ld29ybGV5PC9pZD4gIAogICAgICA8ZW1haWw+ZXdvcmxleUBhcGFjaGUub3JnPC9lbWFpbD4gIAogICAgPC9kZXZlbG9wZXI+ICAgICAgICAKICAgIDwhLS1FbWVyaXR1cyBDb21taXR0ZXJzLS0+CiAgPC9kZXZlbG9wZXJzPiAgCiAgPG1vZHVsZXM+IAogICAgPG1vZHVsZT5jb21wb25lbnRzPC9tb2R1bGU+ICAKICAgIDxtb2R1bGU+YXJjaGV0eXBlczwvbW9kdWxlPiAgCiAgICA8bW9kdWxlPnBsdWdpbnM8L21vZHVsZT4gIAogIDwvbW9kdWxlcz4gIAogIDxyZXBvc2l0b3JpZXM+IAogICAgPHJlcG9zaXRvcnk+IAogICAgICA8aWQ+YXBhY2hlLm9yZzwvaWQ+ICAKICAgICAgPG5hbWU+TWF2ZW4gU25hcHNob3RzPC9uYW1lPiAgCiAgICAgIDx1cmw+aHR0cDovL3Blb3BsZS5hcGFjaGUub3JnL3JlcG8vbTItc25hcHNob3QtcmVwb3NpdG9yeTwvdXJsPiAgCiAgICAgIDxyZWxlYXNlcz4gCiAgICAgICAgPGVuYWJsZWQ+ZmFsc2U8L2VuYWJsZWQ+IAogICAgICA8L3JlbGVhc2VzPiAgCiAgICAgIDxzbmFwc2hvdHM+IAogICAgICAgIDxlbmFibGVkPnRydWU8L2VuYWJsZWQ+IAogICAgICA8L3NuYXBzaG90cz4gCiAgICA8L3JlcG9zaXRvcnk+ICAKICAgIDxyZXBvc2l0b3J5PiAKICAgICAgPGlkPmNvZGVoYXVzLXNuYXBzaG90LXJlcG88L2lkPiAgCiAgICAgIDxuYW1lPkNvZGVoYXVzIFNuYXBzaG90IFJlcG88L25hbWU+ICAKICAgICAgPHVybD5odHRwOi8vc25hcHNob3RzLnJlcG9zaXRvcnkuY29kZWhhdXMub3JnPC91cmw+ICAKICAgICAgPHJlbGVhc2VzPiAKICAgICAgICA8ZW5hYmxlZD5mYWxzZTwvZW5hYmxlZD4gCiAgICAgIDwvcmVsZWFzZXM+IAogICAgPC9yZXBvc2l0b3J5PiAKICA8L3JlcG9zaXRvcmllcz4gIAogIDxidWlsZD4gCiAgICA8ZXh0ZW5zaW9ucz4gCiAgICAgIDxleHRlbnNpb24+IAogICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ud2Fnb248L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD53YWdvbi1zc2gtZXh0ZXJuYWw8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4xLjAtYmV0YS0yPC92ZXJzaW9uPiAKICAgICAgPC9leHRlbnNpb24+ICAKICAgICAgPGV4dGVuc2lvbj4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbi53YWdvbjwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPndhZ29uLXdlYmRhdjwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPjEuMC1iZXRhLTI8L3ZlcnNpb24+IAogICAgICA8L2V4dGVuc2lvbj4gCiAgICA8L2V4dGVuc2lvbnM+ICAKICAgIDxwbHVnaW5zPiAKICAgICAgPHBsdWdpbj4gCiAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tamF2YWRvYy1wbHVnaW48L2FydGlmYWN0SWQ+ICAKICAgICAgICA8Y29uZmlndXJhdGlvbj4gCiAgICAgICAgICA8YWdncmVnYXRlPnRydWU8L2FnZ3JlZ2F0ZT4gCiAgICAgICAgPC9jb25maWd1cmF0aW9uPiAKICAgICAgPC9wbHVnaW4+ICAKICAgICAgPHBsdWdpbj4gCiAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tYXNzZW1ibHktcGx1Z2luPC9hcnRpZmFjdElkPiAgCiAgICAgICAgPGluaGVyaXRlZD5mYWxzZTwvaW5oZXJpdGVkPiAgCiAgICAgICAgPGNvbmZpZ3VyYXRpb24+IAogICAgICAgICAgPGRlc2NyaXB0b3I+c3JjL2Fzc2VtYmx5L3NyYy54bWw8L2Rlc2NyaXB0b3I+ICAKICAgICAgICAgIDxvdXRwdXREaXJlY3Rvcnk+dGFyZ2V0PC9vdXRwdXREaXJlY3Rvcnk+IAogICAgICAgICAgPGZpbmFsTmFtZT5ucGFuZGF5PC9maW5hbE5hbWU+CiAgICAgICAgPC9jb25maWd1cmF0aW9uPiAKICAgICAgICA8ZXhlY3V0aW9ucz4gCiAgICAgICAgICA8ZXhlY3V0aW9uPiAKICAgICAgICAgICAgPGlkPm1ha2UtYXNzZW1ibHk8L2lkPiAgCiAgICAgICAgICAgIDxwaGFzZT5wYWNrYWdlPC9waGFzZT4gIAogICAgICAgICAgICA8Z29hbHM+IAogICAgICAgICAgICAgIDxnb2FsPnNpbmdsZTwvZ29hbD4gCiAgICAgICAgICAgIDwvZ29hbHM+IAogICAgICAgICAgPC9leGVjdXRpb24+IAogICAgICAgIDwvZXhlY3V0aW9ucz4gCiAgICAgIDwvcGx1Z2luPiAgCiAgICAgIDxwbHVnaW4+IAogICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNvbXBpbGVyLXBsdWdpbjwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDxjb25maWd1cmF0aW9uPiAKICAgICAgICAgIDxzb3VyY2U+MS41PC9zb3VyY2U+ICAKICAgICAgICAgIDx0YXJnZXQ+MS41PC90YXJnZXQ+IAogICAgICAgIDwvY29uZmlndXJhdGlvbj4gCiAgICAgIDwvcGx1Z2luPiAKICAgIDwvcGx1Z2lucz4gIAogICAgPHBsdWdpbk1hbmFnZW1lbnQ+IAogICAgICA8cGx1Z2lucz4gCiAgICAgICAgPHBsdWdpbj4gCiAgICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMubW9kZWxsbzwvZ3JvdXBJZD4gIAogICAgICAgICAgPGFydGlmYWN0SWQ+bW9kZWxsby1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+ICAKICAgICAgICAgIDx2ZXJzaW9uPjEuMC1hbHBoYS0xMzwvdmVyc2lvbj4gIAogICAgICAgICAgPGV4ZWN1dGlvbnM+IAogICAgICAgICAgICA8ZXhlY3V0aW9uPiAKICAgICAgICAgICAgICA8Z29hbHM+IAogICAgICAgICAgICAgICAgPGdvYWw+eHBwMy1yZWFkZXI8L2dvYWw+ICAKICAgICAgICAgICAgICAgIDxnb2FsPmphdmE8L2dvYWw+IAogICAgICAgICAgICAgIDwvZ29hbHM+IAogICAgICAgICAgICA8L2V4ZWN1dGlvbj4gIAogICAgICAgICAgICA8ZXhlY3V0aW9uPiAKICAgICAgICAgICAgICA8aWQ+c2l0ZTwvaWQ+ICAKICAgICAgICAgICAgICA8cGhhc2U+cHJlLXNpdGU8L3BoYXNlPiAgCiAgICAgICAgICAgICAgPGdvYWxzPiAKICAgICAgICAgICAgICAgIDxnb2FsPnhkb2M8L2dvYWw+IAogICAgICAgICAgICAgIDwvZ29hbHM+IAogICAgICAgICAgICA8L2V4ZWN1dGlvbj4gCiAgICAgICAgICA8L2V4ZWN1dGlvbnM+IAogICAgICAgIDwvcGx1Z2luPiAKICAgICAgPC9wbHVnaW5zPiAKICAgIDwvcGx1Z2luTWFuYWdlbWVudD4gCiAgPC9idWlsZD4gIAogIDxkZXBlbmRlbmNpZXM+IAogICAgPGRlcGVuZGVuY3k+IAogICAgICA8Z3JvdXBJZD5vcmcuZWFzeW1vY2s8L2dyb3VwSWQ+ICAKICAgICAgPGFydGlmYWN0SWQ+ZWFzeW1vY2s8L2FydGlmYWN0SWQ+ICAKICAgICAgPHZlcnNpb24+Mi4wPC92ZXJzaW9uPiAgCiAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4gCiAgICA8L2RlcGVuZGVuY3k+ICAKICAgIDxkZXBlbmRlbmN5PiAKICAgICAgPGdyb3VwSWQ+anVuaXQ8L2dyb3VwSWQ+ICAKICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+ICAKICAgICAgPHZlcnNpb24+My44LjE8L3ZlcnNpb24+ICAKICAgICAgPHNjb3BlPnRlc3Q8L3Njb3BlPiAKICAgIDwvZGVwZW5kZW5jeT4gCiAgPC9kZXBlbmRlbmNpZXM+ICAKICA8cHJvcGVydGllcz4gCiAgICA8bWF2ZW5WZXJzaW9uPjIuMC45PC9tYXZlblZlcnNpb24+ICAKICAgIDxqZXR0eVZlcnNpb24+Ni4xLjU8L2pldHR5VmVyc2lvbj4gIAogICAgPHhmaXJlVmVyc2lvbj4xLjIuNTwveGZpcmVWZXJzaW9uPiAKICA8L3Byb3BlcnRpZXM+ICAKICA8ZGVwZW5kZW5jeU1hbmFnZW1lbnQ+IAogICAgPGRlcGVuZGVuY2llcz4gCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tcHJvamVjdDwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7bWF2ZW5WZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbjwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNvcmU8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4ke21hdmVuVmVyc2lvbn08L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW48L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hcnRpZmFjdDwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7bWF2ZW5WZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmFwYWNoZS5tYXZlbjwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLXBsdWdpbi1hcGk8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4ke21hdmVuVmVyc2lvbn08L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy54ZmlyZTwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPnhmaXJlLXBsZXh1czwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPiR7eGZpcmVWZXJzaW9ufTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLnhmaXJlPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+eGZpcmUtamF2YTU8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4ke3hmaXJlVmVyc2lvbn08L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5tb3J0YmF5LmpldHR5PC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+amV0dHk8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4ke2pldHR5VmVyc2lvbn08L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5tb3J0YmF5LmpldHR5PC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+amV0dHktZW1iZWRkZWQ8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4ke2pldHR5VmVyc2lvbn08L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5tb3J0YmF5LmpldHR5PC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+c2VydmxldC1hcGktMi41PC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+JHtqZXR0eVZlcnNpb259PC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5uZXQuc2Yua3htbDwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPmt4bWwyPC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+Mi4xLjg8L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPnhtbHB1bGw8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD54bWxwdWxsPC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+MS4xLjMuNGE8L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5wbGV4dXM8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5wbGV4dXMtYXJjaGl2ZXI8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4xLjAtYWxwaGEtOTwvdmVyc2lvbj4gCiAgICAgIDwvZGVwZW5kZW5jeT4gIAogICAgICA8ZGVwZW5kZW5jeT4gCiAgICAgICAgPGdyb3VwSWQ+b3JnLmNvZGVoYXVzLnBsZXh1czwvZ3JvdXBJZD4gIAogICAgICAgIDxhcnRpZmFjdElkPnBsZXh1cy11dGlsczwvYXJ0aWZhY3RJZD4gIAogICAgICAgIDx2ZXJzaW9uPjEuNC41PC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMucGxleHVzPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+cGxleHVzLWNvbnRhaW5lci1kZWZhdWx0PC9hcnRpZmFjdElkPiAgCiAgICAgICAgPHZlcnNpb24+MS4wLWFscGhhLTMyPC92ZXJzaW9uPiAKICAgICAgPC9kZXBlbmRlbmN5PiAgCiAgICAgIDxkZXBlbmRlbmN5PiAKICAgICAgICA8Z3JvdXBJZD5vcmcuY29kZWhhdXMucGxleHVzPC9ncm91cElkPiAgCiAgICAgICAgPGFydGlmYWN0SWQ+cGxleHVzLWNvbXBvbmVudC1hcGk8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4xLjAtYWxwaGEtMzI8L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+ICAKICAgICAgPGRlcGVuZGVuY3k+IAogICAgICAgIDxncm91cElkPm9yZy5jb2RlaGF1cy5wbGV4dXM8L2dyb3VwSWQ+ICAKICAgICAgICA8YXJ0aWZhY3RJZD5wbGV4dXMtY2xhc3N3b3JsZHM8L2FydGlmYWN0SWQ+ICAKICAgICAgICA8dmVyc2lvbj4xLjItYWxwaGEtMTA8L3ZlcnNpb24+IAogICAgICA8L2RlcGVuZGVuY3k+IAogICAgPC9kZXBlbmRlbmNpZXM+IAogIDwvZGVwZW5kZW5jeU1hbmFnZW1lbnQ+ICAKPC9wcm9qZWN0Pgo=