ZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC8uY2xhc3NwYXRoIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4Ly5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFjZjQwNAotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC8uY2xhc3NwYXRoCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxjbGFzc3BhdGg+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgb3V0cHV0PSJ0YXJnZXQvY2xhc3NlcyIgcGF0aD0ic3JjL21haW4vamF2YSIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIG91dHB1dD0idGFyZ2V0L3Rlc3QtY2xhc3NlcyIgcGF0aD0ic3JjL3Rlc3QvamF2YSIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSmF2YVNFLTEuNiIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5tYXZlbi5pZGUuZWNsaXBzZS5NQVZFTjJfQ0xBU1NQQVRIX0NPTlRBSU5FUiIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9InRhcmdldC9jbGFzc2VzIi8+Cis8L2NsYXNzcGF0aD4KZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC8ucHJvamVjdCBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC8ucHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTY0ZjkyCi0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4Ly5wcm9qZWN0CkBAIC0wLDAgKzEsMjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdERlc2NyaXB0aW9uPgorCTxuYW1lPmdlbm9taXgtcHJlZ2VsaXg8L25hbWU+CisJPGNvbW1lbnQ+PC9jb21tZW50PgorCTxwcm9qZWN0cz4KKwk8L3Byb2plY3RzPgorCTxidWlsZFNwZWM+CisJCTxidWlsZENvbW1hbmQ+CisJCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4KKwkJCTxhcmd1bWVudHM+CisJCQk8L2FyZ3VtZW50cz4KKwkJPC9idWlsZENvbW1hbmQ+CisJCTxidWlsZENvbW1hbmQ+CisJCQk8bmFtZT5vcmcubWF2ZW4uaWRlLmVjbGlwc2UubWF2ZW4yQnVpbGRlcjwvbmFtZT4KKwkJCTxhcmd1bWVudHM+CisJCQk8L2FyZ3VtZW50cz4KKwkJPC9idWlsZENvbW1hbmQ+CisJPC9idWlsZFNwZWM+CisJPG5hdHVyZXM+CisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgorCQk8bmF0dXJlPm9yZy5tYXZlbi5pZGUuZWNsaXBzZS5tYXZlbjJOYXR1cmU8L25hdHVyZT4KKwk8L25hdHVyZXM+Cis8L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTA1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsNSBAQAorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS42CitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5mb3JiaWRkZW5SZWZlcmVuY2U9d2FybmluZworb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4Ly5zZXR0aW5ncy9vcmcubWF2ZW4uaWRlLmVjbGlwc2UucHJlZnMgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvLnNldHRpbmdzL29yZy5tYXZlbi5pZGUuZWNsaXBzZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmRiYTU4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4Ly5zZXR0aW5ncy9vcmcubWF2ZW4uaWRlLmVjbGlwc2UucHJlZnMKQEAgLTAsMCArMSw3IEBACithY3RpdmVQcm9maWxlcz0KK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xCitmdWxsQnVpbGRHb2Fscz1wcm9jZXNzLXRlc3QtcmVzb3VyY2VzCityZXNvbHZlV29ya3NwYWNlUHJvamVjdHM9dHJ1ZQorcmVzb3VyY2VGaWx0ZXJHb2Fscz1wcm9jZXNzLXJlc291cmNlcyByZXNvdXJjZXNcOnRlc3RSZXNvdXJjZXMKK3NraXBDb21waWxlclBsdWdpbj10cnVlCit2ZXJzaW9uPTEKZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9mb2xkZXIvdGVzdC5kYXQgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvZm9sZGVyL3Rlc3QuZGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NmE0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvZm9sZGVyL3Rlc3QuZGF0CkBAIC0wLDAgKzEsNCBAQAorBiARCisHICIKKxsgRAorLSCICmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvcG9tLnhtbCBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9wb20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZjVlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvcG9tLnhtbApAQCAtMCwwICsxLDE2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL21hdmVuLXY0XzBfMC54c2QiPgorICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+CisgIDxncm91cElkPmVkdS51Y2kuaWNzLnByZWdlbGl4PC9ncm91cElkPgorICA8YXJ0aWZhY3RJZD5nZW5vbWl4LXByZWdlbGl4PC9hcnRpZmFjdElkPgorICA8dmVyc2lvbj4wLjIuMjwvdmVyc2lvbj4KKyAgPHBhY2thZ2luZz5qYXI8L3BhY2thZ2luZz4KKyAgPG5hbWU+Z2Vub21peC1wcmVnZWxpeDwvbmFtZT4KKworICA8cHJvcGVydGllcz4KKyAgICA8anZtLmV4dHJhYXJncy8+CisgIDwvcHJvcGVydGllcz4KKworICA8cHJvZmlsZXM+CisgICAgPHByb2ZpbGU+CisgICAgICA8aWQ+bWFjb3N4PC9pZD4KKyAgICAgIDxhY3RpdmF0aW9uPgorICAgICAgICA8b3M+CisgICAgICAgICAgPG5hbWU+bWFjIG9zIHg8L25hbWU+CisgICAgICAgIDwvb3M+CisgICAgICAgIDxqZGs+MS43PC9qZGs+CisgICAgICA8L2FjdGl2YXRpb24+CisgICAgICA8cHJvcGVydGllcz4KKyAgICAgICAgPGp2bS5leHRyYWFyZ3M+LURqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlcj1zdW4ubmlvLmNoLktRdWV1ZVNlbGVjdG9yUHJvdmlkZXI8L2p2bS5leHRyYWFyZ3M+CisgICAgICA8L3Byb3BlcnRpZXM+CisgICAgPC9wcm9maWxlPgorICA8L3Byb2ZpbGVzPgorCisgIDxidWlsZD4KKyAgICAgICAgPHBsdWdpbnM+CisgICAgICAgICAgICA8cGx1Z2luPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNvbXBpbGVyLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+Mi4wLjI8L3ZlcnNpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2U+MS42PC9zb3VyY2U+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhcmdldD4xLjY8L3RhcmdldD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wbHVnaW4+CisgICAgICAgICAgICAgICAgICAgICAgICA8cGx1Z2luPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWZhY3RJZD5tYXZlbi1hc3NlbWJseS1wbHVnaW48L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdG9yUmVmcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdG9yUmVmPmphci13aXRoLWRlcGVuZGVuY2llczwvZGVzY3JpcHRvclJlZj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0b3JSZWZzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb25zPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxleGVjdXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWQ+bWFrZS1teS1qYXItd2l0aC1kZXBlbmRlbmNpZXM8L2lkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBoYXNlPnBhY2thZ2U8L3BoYXNlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z29hbD5zaW5nbGU8L2dvYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dvYWxzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXhlY3V0aW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V4ZWN1dGlvbnM+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BsdWdpbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwbHVnaW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tc3VyZWZpcmUtcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yLjcuMjwvdmVyc2lvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcmtNb2RlPnBlcnRlc3Q8L2ZvcmtNb2RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcmdMaW5lPi1lbmFibGVhc3NlcnRpb25zIC1YbXgyMDQ3bSAtRGZpbGUuZW5jb2Rpbmc9VVRGLTgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EamF2YS51dGlsLmxvZ2dpbmcuY29uZmlnLmZpbGU9c3JjL3Rlc3QvcmVzb3VyY2VzL2xvZ2dpbmcucHJvcGVydGllczwvYXJnTGluZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKi8qVGVzdFN1aXRlLmphdmE8L2luY2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT4qKi8qVGVzdC5qYXZhPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW5jbHVkZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGx1Z2luPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBsdWdpbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+bWF2ZW4tY2xlYW4tcGx1Z2luPC9hcnRpZmFjdElkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZXNldHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZXNldD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpcmVjdG9yeT4uPC9kaXJlY3Rvcnk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT50ZXN0c3RvcmUqPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbmNsdWRlPmVkdSo8L2luY2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+YWN0dWFsKjwvaW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT5idWlsZCo8L2luY2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+ZXhwZWN0KjwvaW5jbHVkZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5jbHVkZT5DbHVzdGVyQ29udHJvbGxlcio8L2luY2x1ZGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGluY2x1ZGU+ZWR1LnVjaS4qPC9pbmNsdWRlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2luY2x1ZGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWxlc2V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmlsZXNldHM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGx1Z2luPgorICAgICAgICAgICAgICAgIDwvcGx1Z2lucz4KKyAgICAgICAgPC9idWlsZD4KKworICAgICAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgICAgICAgICAgIDxkZXBlbmRlbmN5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwSWQ+ZWR1LnVjaS5pY3MuaHlyYWNrczwvZ3JvdXBJZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxhcnRpZmFjdElkPnByZWdlbGl4LWNvcmU8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wLjIuMjwvdmVyc2lvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0eXBlPmphcjwvdHlwZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT5jb21waWxlPC9zY29wZT4KKyAgICAgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgICAgICAgICAgPGRlcGVuZGVuY3k+CisgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXBJZD5lZHUudWNpLmljcy5oeXJhY2tzPC9ncm91cElkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+cHJlZ2VsaXgtZXhhbXBsZTwvYXJ0aWZhY3RJZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjAuMi4yPC92ZXJzaW9uPgorICAgICAgICAgICAgICAgICAgICAgICAgPHR5cGU+amFyPC90eXBlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPmNvbXBpbGU8L3Njb3BlPgorICAgICAgICAgICAgICAgIDwvZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICA8ZGVwZW5kZW5jeT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cElkPmp1bml0PC9ncm91cElkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGFydGlmYWN0SWQ+anVuaXQ8L2FydGlmYWN0SWQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj40LjguMTwvdmVyc2lvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxzY29wZT50ZXN0PC9zY29wZT4KKyAgICAgICAgICAgICAgICA8L2RlcGVuZGVuY3k+CisgICAgICAgIDwvZGVwZW5kZW5jaWVzPgorCisgIDxzY20+CisgICAgPGNvbm5lY3Rpb24+c2NtOnN2bjpodHRwczovL2h5cmFja3MuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2Z1bGxzdGFjay9wcmVnZWxpeDwvY29ubmVjdGlvbj4KKyAgICA8ZGV2ZWxvcGVyQ29ubmVjdGlvbj5zY206c3ZuOmh0dHBzOi8vaHlyYWNrcy5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvZnVsbHN0YWNrL3ByZWdlbGl4PC9kZXZlbG9wZXJDb25uZWN0aW9uPgorICAgIDx1cmw+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2h5cmFja3Mvc291cmNlL2Jyb3dzZS8jc3ZuL3RydW5rL2Z1bGxzdGFjay9wcmVnZWxpeDwvdXJsPgorICA8L3NjbT4KKworICA8ZGlzdHJpYnV0aW9uTWFuYWdlbWVudD4KKyAgICA8cmVwb3NpdG9yeT4KKyAgICAgIDxpZD5oeXJhY2tzLXJlbGVhc2VzPC9pZD4KKyAgICAgIDx1cmw+aHR0cDovL29iZWxpeC5pY3MudWNpLmVkdS9uZXh1cy9jb250ZW50L3JlcG9zaXRvcmllcy9oeXJhY2tzLXJlbGVhc2VzLzwvdXJsPgorICAgIDwvcmVwb3NpdG9yeT4KKyAgICA8c25hcHNob3RSZXBvc2l0b3J5PgorICAgICAgPGlkPmh5cmFja3Mtc25hcHNob3RzPC9pZD4KKyAgICAgIDx1cmw+aHR0cDovL29iZWxpeC5pY3MudWNpLmVkdS9uZXh1cy9jb250ZW50L3JlcG9zaXRvcmllcy9oeXJhY2tzLXNuYXBzaG90cy88L3VybD4KKyAgICA8L3NuYXBzaG90UmVwb3NpdG9yeT4KKyAgPC9kaXN0cmlidXRpb25NYW5hZ2VtZW50PgorCisgIDxyZXBvcnRpbmc+CisgICAgPHBsdWdpbnM+CisgICAgICA8cGx1Z2luPgorICAgICAgICA8Z3JvdXBJZD5vcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM8L2dyb3VwSWQ+CisgICAgICAgIDxhcnRpZmFjdElkPm1hdmVuLWNoYW5nZWxvZy1wbHVnaW48L2FydGlmYWN0SWQ+CisgICAgICA8L3BsdWdpbj4KKyAgICA8L3BsdWdpbnM+CisgIDwvcmVwb3J0aW5nPgorCisgIDxyZXBvc2l0b3JpZXM+CisgICAgPHJlcG9zaXRvcnk+CisgICAgICA8aWQ+aHlyYWNrcy1wdWJsaWM8L2lkPgorICAgICAgPHVybD5odHRwOi8vb2JlbGl4Lmljcy51Y2kuZWR1L25leHVzL2NvbnRlbnQvZ3JvdXBzL2h5cmFja3MtcHVibGljLzwvdXJsPgorICAgIDwvcmVwb3NpdG9yeT4KKyAgICA8cmVwb3NpdG9yeT4KKyAgICAgIDxpZD5qYm9zcy1wdWJsaWM8L2lkPgorICAgICAgPHVybD5odHRwczovL3JlcG9zaXRvcnkuamJvc3Mub3JnL25leHVzL2NvbnRlbnQvZ3JvdXBzL3B1YmxpYy88L3VybD4KKyAgICA8L3JlcG9zaXRvcnk+CisgIDwvcmVwb3NpdG9yaWVzPgorCisgIDxwbHVnaW5SZXBvc2l0b3JpZXM+CisgICAgPHBsdWdpblJlcG9zaXRvcnk+CisgICAgICA8aWQ+aHlyYWNrcy1wdWJsaWM8L2lkPgorICAgICAgPHVybD5odHRwOi8vb2JlbGl4Lmljcy51Y2kuZWR1L25leHVzL2NvbnRlbnQvZ3JvdXBzL2h5cmFja3MtcHVibGljLzwvdXJsPgorICAgICAgPHJlbGVhc2VzPgorICAgICAgICA8dXBkYXRlUG9saWN5PmFsd2F5czwvdXBkYXRlUG9saWN5PgorICAgICAgPC9yZWxlYXNlcz4KKyAgICA8L3BsdWdpblJlcG9zaXRvcnk+CisgIDwvcGx1Z2luUmVwb3NpdG9yaWVzPgorPC9wcm9qZWN0PgorCisKZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleC5qYXZhIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3NyYy9tYWluL2phdmEvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvTG9hZEdyYXBoVmVydGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFmNjhmYgotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleC5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACitwYWNrYWdlIGVkdS51Y2kuaWNzLnByZWdlbGl4OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5pby5CeXRlV3JpdGFibGU7CitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uQnl0ZXNXcml0YWJsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5pby5OdWxsV3JpdGFibGU7CitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uVGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWR1Y2UuUmVjb3JkV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5UYXNrQXR0ZW1wdENvbnRleHQ7CisKK2ltcG9ydCBlZHUudWNpLmljcy5wcmVnZWxpeC5hcGkuZ3JhcGguVmVydGV4OworaW1wb3J0IGVkdS51Y2kuaWNzLnByZWdlbGl4LmFwaS5pby5WZXJ0ZXhXcml0ZXI7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguYXBpLmlvLnRleHQuVGV4dFZlcnRleE91dHB1dEZvcm1hdDsKK2ltcG9ydCBlZHUudWNpLmljcy5wcmVnZWxpeC5hcGkuaW8udGV4dC5UZXh0VmVydGV4T3V0cHV0Rm9ybWF0LlRleHRWZXJ0ZXhXcml0ZXI7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguYXBpLmpvYi5QcmVnZWxpeEpvYjsKK2ltcG9ydCBlZHUudWNpLmljcy5wcmVnZWxpeC5leGFtcGxlLmNsaWVudC5DbGllbnQ7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguZXhhbXBsZS5pby5NZXNzYWdlV3JpdGFibGU7CisKKy8qCisgKiB2ZXJ0ZXhJZDogQnl0ZXNXcml0YWJsZQorICogdmVydGV4VmFsdWU6IEJ5dGVXcml0YWJsZQorICogZWRnZVZhbHVlOiBOdWxsV3JpdGFibGUKKyAqIG1lc3NhZ2U6IE1lc3NhZ2VXcml0YWJsZQorICogCisgKiBETkE6CisgKiBBOiAwMAorICogQzogMDEKKyAqIEc6IDEwCisgKiBUOiAxMQorICogCisgKiBzdWNjZWVkIG5vZGUKKyAqICBBIDAwMDAwMDAxIDEKKyAqICBHIDAwMDAwMDEwIDIKKyAqICBDIDAwMDAwMTAwIDQKKyAqICBUIDAwMDAxMDAwIDgKKyAqIHByZWN1cnNvciBub2RlCisgKiAgQSAwMDAxMDAwMCAxNgorICogIEcgMDAxMDAwMDAgMzIKKyAqICBDIDAxMDAwMDAwIDY0CisgKiAgVCAxMDAwMDAwMCAxMjgKKyAqICAKKyAqIEZvciBleGFtcGxlLCBPTkUgTElORSBpbiBpbnB1dCBmaWxlOiAwMCwwMSwxMAkwMDAxLDAwMTAsCisgKiBUaGF0IG1lYW5zIHRoYXQgdmVydGV4SWQgaXMgQUNHLCBpdHMgc3VjY2VlZCBub2RlIGlzIEEgYW5kIGl0cyBwcmVjdXJzb3Igbm9kZSBpcyBDLgorICogVGhlIHN1Y2NlZWQgbm9kZSBhbmQgcHJlY3Vyc29yIG5vZGUgd2lsbCBiZSBzdG9yZWQgaW4gdmVydGV4VmFsdWUgYW5kIHdlIGRvbid0IHVzZSBlZGdlVmFsdWUuCisgKiBUaGUgZGV0YWlscyBhYm91dCBtZXNzYWdlIGFyZSBpbiBlZHUudWNpLmljcy5wcmVnZWxpeC5leGFtcGxlLmlvLk1lc3NhZ2VXcml0YWJsZS4gCisgKi8KK3B1YmxpYyBjbGFzcyBMb2FkR3JhcGhWZXJ0ZXggZXh0ZW5kcyBWZXJ0ZXg8Qnl0ZXNXcml0YWJsZSwgQnl0ZVdyaXRhYmxlLCBOdWxsV3JpdGFibGUsIE1lc3NhZ2VXcml0YWJsZT57CisJCisJcHJpdmF0ZSBCeXRlV3JpdGFibGUgdG1wVmVydGV4VmFsdWUgPSBuZXcgQnl0ZVdyaXRhYmxlKCk7CisJCisJLyoqCisJICogRm9yIHRlc3QsIGluIGNvbXB1dGUgbWV0aG9kLCBtYWtlIGVhY2ggdmVydGV4VmFsdWUgc2hpZnQgMSB0byBsZWZ0LgorCSAqIEl0IHdpbGwgYmUgbW9kaWZpZWQgd2hlbiBnb2luZyBmb3J3YXJkIHRvIG5leHQgc3RlcC4KKwkgKi8KKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCBjb21wdXRlKEl0ZXJhdG9yPE1lc3NhZ2VXcml0YWJsZT4gbXNnSXRlcmF0b3IpIHsKKwkJaWYoZ2V0U3VwZXJzdGVwKCkgPT0gMSl7CisJCQl0bXBWZXJ0ZXhWYWx1ZS5zZXQoZ2V0VmVydGV4VmFsdWUoKS5nZXQoKSk7CisJCQl0bXBWZXJ0ZXhWYWx1ZS5zZXQoKGJ5dGUpICh0bXBWZXJ0ZXhWYWx1ZS5nZXQoKSA8PCAxKSk7CisJCQlzZXRWZXJ0ZXhWYWx1ZSh0bXBWZXJ0ZXhWYWx1ZSk7CisJCX0KKwkJZWxzZQorCQkJdm90ZVRvSGFsdCgpOworCSB9CisJCisgICAgLyoqCisgICAgICogU2ltcGxlIFZlcnRleFdyaXRlciB0aGF0IHN1cHBvcnRzIHtAbGluayBTaW1wbGVMb2FkR3JhcGhWZXJ0ZXh9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhXcml0ZXIgZXh0ZW5kcworICAgICAgICAgICAgVGV4dFZlcnRleFdyaXRlcjxCeXRlc1dyaXRhYmxlLCBCeXRlV3JpdGFibGUsIE51bGxXcml0YWJsZT4geworICAgICAgICBwdWJsaWMgU2ltcGxlTG9hZEdyYXBoVmVydGV4V3JpdGVyKFJlY29yZFdyaXRlcjxUZXh0LCBUZXh0PiBsaW5lUmVjb3JkV3JpdGVyKSB7CisgICAgICAgICAgICBzdXBlcihsaW5lUmVjb3JkV3JpdGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZVZlcnRleChWZXJ0ZXg8Qnl0ZXNXcml0YWJsZSwgQnl0ZVdyaXRhYmxlLCBOdWxsV3JpdGFibGUsID8+IHZlcnRleCkgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGdldFJlY29yZFdyaXRlcigpLndyaXRlKG5ldyBUZXh0KHZlcnRleC5nZXRWZXJ0ZXhJZCgpLnRvU3RyaW5nKCkpLAorICAgICAgICAgICAgICAgICAgICBuZXcgVGV4dCh2ZXJ0ZXguZ2V0VmVydGV4VmFsdWUoKS50b1N0cmluZygpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgVmVydGV4T3V0cHV0Rm9ybWF0IHRoYXQgc3VwcG9ydHMge0BsaW5rIFNpbXBsZUxvYWRHcmFwaFZlcnRleH0KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNpbXBsZUxvYWRHcmFwaFZlcnRleE91dHB1dEZvcm1hdCBleHRlbmRzCisgICAgICAgICAgICBUZXh0VmVydGV4T3V0cHV0Rm9ybWF0PEJ5dGVzV3JpdGFibGUsIEJ5dGVXcml0YWJsZSwgTnVsbFdyaXRhYmxlPiB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBWZXJ0ZXhXcml0ZXI8Qnl0ZXNXcml0YWJsZSwgQnl0ZVdyaXRhYmxlLCBOdWxsV3JpdGFibGU+IGNyZWF0ZVZlcnRleFdyaXRlcihUYXNrQXR0ZW1wdENvbnRleHQgY29udGV4dCkKKyAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIFJlY29yZFdyaXRlcjxUZXh0LCBUZXh0PiByZWNvcmRXcml0ZXIgPSB0ZXh0T3V0cHV0Rm9ybWF0LmdldFJlY29yZFdyaXRlcihjb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlTG9hZEdyYXBoVmVydGV4V3JpdGVyKHJlY29yZFdyaXRlcik7CisgICAgICAgIH0KKyAgICB9CisJCisJLyoqCisJICogQHBhcmFtIGFyZ3MKKwkgKi8KKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUHJlZ2VsaXhKb2Igam9iID0gbmV3IFByZWdlbGl4Sm9iKExvYWRHcmFwaFZlcnRleC5jbGFzcy5nZXRTaW1wbGVOYW1lKCkpOworICAgICAgICBqb2Iuc2V0VmVydGV4Q2xhc3MoTG9hZEdyYXBoVmVydGV4LmNsYXNzKTsKKyAgICAgICAgam9iLnNldFZlcnRleElucHV0Rm9ybWF0Q2xhc3MoVGV4dExvYWRHcmFwaElucHV0Rm9ybWF0LmNsYXNzKTsKKyAgICAgICAgam9iLnNldFZlcnRleE91dHB1dEZvcm1hdENsYXNzKFNpbXBsZUxvYWRHcmFwaFZlcnRleE91dHB1dEZvcm1hdC5jbGFzcyk7CisgICAgICAgIENsaWVudC5ydW4oYXJncywgam9iKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvc3JjL21haW4vamF2YS9lZHUvdWNpL2ljcy9wcmVnZWxpeC9UZXN0TG9hZEdyYXBoVmVydGV4LmphdmEgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvc3JjL21haW4vamF2YS9lZHUvdWNpL2ljcy9wcmVnZWxpeC9UZXN0TG9hZEdyYXBoVmVydGV4LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI5ZDQyOQotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1Rlc3RMb2FkR3JhcGhWZXJ0ZXguamF2YQpAQCAtMCwwICsxLDEwMiBAQAorcGFja2FnZSBlZHUudWNpLmljcy5wcmVnZWxpeDsKKworaW1wb3J0IGphdmEuaW8uRGF0YUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRGF0YU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLlN0cmluZ1Rva2VuaXplcjsKKworaW1wb3J0IGVkdS51Y2kuaWNzLnByZWdlbGl4LkxvYWRHcmFwaFZlcnRleC5TaW1wbGVMb2FkR3JhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQ7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguYXBpLmpvYi5QcmVnZWxpeEpvYjsKK2ltcG9ydCBlZHUudWNpLmljcy5wcmVnZWxpeC5leGFtcGxlLmNsaWVudC5DbGllbnQ7CisKK3B1YmxpYyBjbGFzcyBUZXN0TG9hZEdyYXBoVmVydGV4IHsKKworCS8qKgorCSAqIElmIHJ1bm5pbmcgaW4gZGlmZmVyZW50IG1hY2hpbmVzLCB0aGUgcGFyYW1ldGVycyBuZWVkIHRvIGJlIGNoYW5nZWQuCisJICogTm93LCB0aGlzIHRlc3QgaXMgbm90IGNvbXBsZXRlZC4KKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhQRUNUX1JFU1VMVF9GSUxFID0gIn4vd29ya3NwYWNlL2dlbm9taXgtcHJlZ2VsaXgvZXhwZWN0L2V4cGVjdGVkX3Jlc3VsdCI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOUFVUX1BBVEhTID0gIn4vd29ya3NwYWNlL2dlbm9taXgtcHJlZ2VsaXgvZm9sZGVyIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1VUUFVUX1BBVEggPSAifi93b3Jrc3BhY2UvZ2Vub21peC1wcmVnZWxpeC90bXAvcGdfcmVzdWx0IjsgLy9yZXN1bHQKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVAgPSAiMTY5LjIzNC4xMzQuMjEyIjsgCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBPUlQgPSAiMzA5OSI7CisJLyoqCisJICogQHBhcmFtIGFyZ3MKKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbiAKKwkgKi8KKwlAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQorCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCisJCS8vaW5pdGlhdGUgYXJncworCQlhcmdzID0gbmV3IFN0cmluZ1s4XTsKKwkJYXJnc1swXSA9ICItaW5wdXRwYXRocyI7IAorCQlhcmdzWzFdID0gSU5QVVRfUEFUSFM7CisJCWFyZ3NbMl0gPSAiLW91dHB1dHBhdGgiOworCQlhcmdzWzNdID0gT1VUUFVUX1BBVEg7CisJCWFyZ3NbNF0gPSAiLWlwIjsKKwkJYXJnc1s1XSA9IElQOworCQlhcmdzWzZdID0gIi1wb3J0IjsKKwkJYXJnc1s3XSA9IFBPUlQ7CisgICAgICAgIFByZWdlbGl4Sm9iIGpvYiA9IG5ldyBQcmVnZWxpeEpvYihMb2FkR3JhcGhWZXJ0ZXguY2xhc3MuZ2V0U2ltcGxlTmFtZSgpKTsKKyAgICAgICAgam9iLnNldFZlcnRleENsYXNzKExvYWRHcmFwaFZlcnRleC5jbGFzcyk7CisgICAgICAgIGpvYi5zZXRWZXJ0ZXhJbnB1dEZvcm1hdENsYXNzKFRleHRMb2FkR3JhcGhJbnB1dEZvcm1hdC5jbGFzcyk7CisgICAgICAgIGpvYi5zZXRWZXJ0ZXhPdXRwdXRGb3JtYXRDbGFzcyhTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQuY2xhc3MpOworICAgICAgICBDbGllbnQucnVuKGFyZ3MsIGpvYik7CisgICAgICAgIAorICAgICAgICBnZW5lcmF0ZUV4cGVjdEJpbmFyeUZpbGUoKTsKKyAgICAgICAgCisgICAgICAgIC8vdGVzdCBpZiB0aGUgYWN0dWFsIGZpbGUgaXMgdGhlIHNhbWUgYXMgdGhlIGV4cGVjdGVkIGZpbGUKKyAgICAgICAgRGF0YUlucHV0U3RyZWFtIGFjdHVhbF9kaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKG5ldyBGaWxlSW5wdXRTdHJlYW0oT1VUUFVUX1BBVEggKyAiLyoiKSk7CisgICAgICAgIERhdGFJbnB1dFN0cmVhbSBleHBlY3RlZF9kaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKG5ldyBGaWxlSW5wdXRTdHJlYW0oRVhQRUNUX1JFU1VMVF9GSUxFKSk7CisgICAgICAgIFN0cmluZyBhY3R1YWxMaW5lLCBleHBlY3RlZExpbmUgPSBudWxsOworICAgICAgICBTdHJpbmdUb2tlbml6ZXIgYWN0dWFsU3QsIGV4cGVjdGVkU3Q7CisJCWJ5dGVbXSBhY3R1YWxWZXJ0ZXhJZCwgZXhwZWN0ZWRWZXJ0ZXhJZCA9IG51bGw7CisJCWJ5dGUgYWN0dWFsVmVydGV4VmFsdWUsIGV4cGVjdGVkVmVydGV4VmFsdWU7CisgICAgICAgIGJ5dGVbXSB0bXAgPSBudWxsOworICAgICAgICB3aGlsZSgoKGFjdHVhbExpbmUgPSBhY3R1YWxfZGlzLnJlYWRMaW5lKCkpICE9IG51bGwpICYmIAorICAgICAgICAJCSgoZXhwZWN0ZWRMaW5lID0gZXhwZWN0ZWRfZGlzLnJlYWRMaW5lKCkpICE9IG51bGwpKXsKKyAgICAgICAgCWFjdHVhbFN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhY3R1YWxMaW5lLCAiICIpOworCQkJYWN0dWFsVmVydGV4SWQgPSBhY3R1YWxTdC5uZXh0VG9rZW4oKS5nZXRCeXRlcygpOworCQkJdG1wID0gYWN0dWFsU3QubmV4dFRva2VuKCkuZ2V0Qnl0ZXMoKTsKKwkJCWFjdHVhbFZlcnRleFZhbHVlID0gdG1wWzBdOworCQkJCisJCQlleHBlY3RlZFN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihleHBlY3RlZExpbmUsIiAiKTsKKwkJCWV4cGVjdGVkVmVydGV4SWQgPSBleHBlY3RlZFN0Lm5leHRUb2tlbigpLmdldEJ5dGVzKCk7CisJCQl0bXAgPSBleHBlY3RlZFN0Lm5leHRUb2tlbigpLmdldEJ5dGVzKCk7CisJCQlleHBlY3RlZFZlcnRleFZhbHVlID0gdG1wWzBdOworCQkJCisJCQkvL2Fzc2VydEVxdWFscygiYWN0dWFsVmV4dGV4SWQgPT0gZXhwZWN0ZWRWZXJ0ZXhJZCIsIGFjdHVhbFZlcnRleElkLCBleHBlY3RlZFZlcnRleElkKTsKKwkJCS8vYXNzZXJ0RXF1YWxzKCJhY3R1YWxWZXJ0ZXhWYWx1ZSA9PSBleHBlY3RlZFZlcnRleFZhbHVlIiwgYWN0dWFsVmVydGV4VmFsdWUsIGV4cGVjdGVkVmVydGV4VmFsdWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvL2Fzc2VydEVxdWFscygiYWN0dWFsTGluZSBzaG91bGQgYmUgdGhlIGVuZCBhbmQgYmUgZXF1YWwgdG8gbnVsbCIsIGFjdHVhbExpbmUsIG51bGwpOworICAgICAgICAvL2Fzc2VydEVxdWFscygiZXhwZWN0ZWRMaW5lIHNob3VsZCBiZSB0aGUgZW5kIGFuZCBiZSBlcXVhbCB0byBudWxsIiwgZXhwZWN0ZWRMaW5lLCBudWxsKTsKKwl9CisKKwlAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQorCXB1YmxpYyBzdGF0aWMgdm9pZCBnZW5lcmF0ZUV4cGVjdEJpbmFyeUZpbGUoKSB0aHJvd3MgRXhjZXB0aW9ueworCQlEYXRhSW5wdXRTdHJlYW0gZGlzID0gbmV3IERhdGFJbnB1dFN0cmVhbShuZXcgRmlsZUlucHV0U3RyZWFtKElOUFVUX1BBVEhTICsgIi8qIikpOworCQlEYXRhT3V0cHV0U3RyZWFtIGRvcyA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKEVYUEVDVF9SRVNVTFRfRklMRSkpOworCQlTdHJpbmcgbGluZTsKKwkJYnl0ZVtdIHZlcnRleElkID0gbnVsbDsKKwkJYnl0ZSB2ZXJ0ZXhWYWx1ZTsKKwkJYnl0ZVtdIHRtcCA9IG51bGw7CisJCXdoaWxlKChsaW5lID0gZGlzLnJlYWRMaW5lKCkpICE9IG51bGwpeworCQkJU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihsaW5lLCAiICIpOworCQkJdmVydGV4SWQgPSBzdC5uZXh0VG9rZW4oKS5nZXRCeXRlcygpOworCQkJdG1wID0gc3QubmV4dFRva2VuKCkuZ2V0Qnl0ZXMoKTsKKwkJCXZlcnRleFZhbHVlID0gdG1wWzBdOwkJCisJCQkKKwkJCXZlcnRleFZhbHVlID0gKGJ5dGUpICh2ZXJ0ZXhWYWx1ZSA8PCAxKTsgCisJCQlmb3IoaW50IGkgPSAwOyBpIDwgdmVydGV4SWQubGVuZ3RoOyBpKyspCisJCQkJZG9zLndyaXRlQnl0ZSh2ZXJ0ZXhJZFtpXSk7CisJCQlkb3Mud3JpdGVCeXRlKChieXRlKTMyKTsgLy9zcGFjZQorCQkJZG9zLndyaXRlQnl0ZSh2ZXJ0ZXhWYWx1ZSk7CisJCQlkb3Mud3JpdGVCeXRlKChieXRlKTEwKTsgLy9saW5lIGZlZWQKKwkJfQorCQkKKwkJZGlzLmNsb3NlKCk7CisJCWRvcy5jbG9zZSgpOworCX0KK30KZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1RleHRMb2FkR3JhcGhJbnB1dEZvcm1hdC5qYXZhIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3NyYy9tYWluL2phdmEvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvVGV4dExvYWRHcmFwaElucHV0Rm9ybWF0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmZGE3MwotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1RleHRMb2FkR3JhcGhJbnB1dEZvcm1hdC5qYXZhCkBAIC0wLDAgKzEsODIgQEAKK3BhY2thZ2UgZWR1LnVjaS5pY3MucHJlZ2VsaXg7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uQnl0ZVdyaXRhYmxlOworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLkJ5dGVzV3JpdGFibGU7CitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uTG9uZ1dyaXRhYmxlOworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLmlvLk51bGxXcml0YWJsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5pby5UZXh0OworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5JbnB1dFNwbGl0OworaW1wb3J0IG9yZy5hcGFjaGUuaGFkb29wLm1hcHJlZHVjZS5SZWNvcmRSZWFkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AubWFwcmVkdWNlLlRhc2tBdHRlbXB0Q29udGV4dDsKKworaW1wb3J0IGVkdS51Y2kuaWNzLnByZWdlbGl4LmFwaS5ncmFwaC5WZXJ0ZXg7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguYXBpLmlvLlZlcnRleFJlYWRlcjsKK2ltcG9ydCBlZHUudWNpLmljcy5wcmVnZWxpeC5hcGkuaW8udGV4dC5UZXh0VmVydGV4SW5wdXRGb3JtYXQ7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguYXBpLnV0aWwuQnNwVXRpbHM7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguZXhhbXBsZS5pby5NZXNzYWdlV3JpdGFibGU7CisKK3B1YmxpYyBjbGFzcyBUZXh0TG9hZEdyYXBoSW5wdXRGb3JtYXQgZXh0ZW5kcworCQlUZXh0VmVydGV4SW5wdXRGb3JtYXQ8Qnl0ZXNXcml0YWJsZSwgQnl0ZVdyaXRhYmxlLCBOdWxsV3JpdGFibGUsIE1lc3NhZ2VXcml0YWJsZT57CisJCisJLyoqCisJICogRm9ybWF0IElOUFVUCisJICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFZlcnRleFJlYWRlcjxCeXRlc1dyaXRhYmxlLCBCeXRlV3JpdGFibGUsIE51bGxXcml0YWJsZSwgTWVzc2FnZVdyaXRhYmxlPiBjcmVhdGVWZXJ0ZXhSZWFkZXIoCisgICAgICAgICAgICBJbnB1dFNwbGl0IHNwbGl0LCBUYXNrQXR0ZW1wdENvbnRleHQgY29udGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0TG9hZEdyYXBoUmVhZGVyKHRleHRJbnB1dEZvcm1hdC5jcmVhdGVSZWNvcmRSZWFkZXIoc3BsaXQsIGNvbnRleHQpKTsKKyAgICB9CisgICAgCisgICAgQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKyAgICBjbGFzcyBUZXh0TG9hZEdyYXBoUmVhZGVyIGV4dGVuZHMKKyAgICAgICAgICAgIFRleHRWZXJ0ZXhSZWFkZXI8Qnl0ZXNXcml0YWJsZSwgQnl0ZVdyaXRhYmxlLCBOdWxsV3JpdGFibGUsIE1lc3NhZ2VXcml0YWJsZT4geworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgc2VwYXJhdG9yID0gIiAiOworICAgICAgICBwcml2YXRlIFZlcnRleCB2ZXJ0ZXg7CisgICAgICAgIHByaXZhdGUgQnl0ZXNXcml0YWJsZSB2ZXJ0ZXhJZCA9IG5ldyBCeXRlc1dyaXRhYmxlKCk7CisgICAgICAgIHByaXZhdGUgQnl0ZVdyaXRhYmxlIHZlcnRleFZhbHVlID0gbmV3IEJ5dGVXcml0YWJsZSgpOworCisgICAgICAgIHB1YmxpYyBUZXh0TG9hZEdyYXBoUmVhZGVyKFJlY29yZFJlYWRlcjxMb25nV3JpdGFibGUsIFRleHQ+IGxpbmVSZWNvcmRSZWFkZXIpIHsKKyAgICAgICAgICAgIHN1cGVyKGxpbmVSZWNvcmRSZWFkZXIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIG5leHRWZXJ0ZXgoKSB0aHJvd3MgSU9FeGNlcHRpb24sIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRSZWNvcmRSZWFkZXIoKS5uZXh0S2V5VmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIFZlcnRleDxCeXRlc1dyaXRhYmxlLCBCeXRlV3JpdGFibGUsIE51bGxXcml0YWJsZSwgTWVzc2FnZVdyaXRhYmxlPiBnZXRDdXJyZW50VmVydGV4KCkgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgIEludGVycnVwdGVkRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGlmICh2ZXJ0ZXggPT0gbnVsbCkKKyAgICAgICAgICAgICAgICB2ZXJ0ZXggPSAoVmVydGV4KSBCc3BVdGlscy5jcmVhdGVWZXJ0ZXgoZ2V0Q29udGV4dCgpLmdldENvbmZpZ3VyYXRpb24oKSk7CisKKyAgICAgICAgICAgIHZlcnRleC5nZXRNc2dMaXN0KCkuY2xlYXIoKTsKKyAgICAgICAgICAgIHZlcnRleC5nZXRFZGdlcygpLmNsZWFyKCk7CisgICAgICAgICAgICBUZXh0IGxpbmUgPSBnZXRSZWNvcmRSZWFkZXIoKS5nZXRDdXJyZW50VmFsdWUoKTsKKyAgICAgICAgICAgIFN0cmluZ1tdIGZpZWxkcyA9IGxpbmUudG9TdHJpbmcoKS5zcGxpdChzZXBhcmF0b3IpOworCisgICAgICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiBzZXQgdGhlIHNyYyB2ZXJ0ZXggaWQKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIAlCeXRlc1dyaXRhYmxlIHNyYyA9IG5ldyBCeXRlc1dyaXRhYmxlKGZpZWxkc1swXS5nZXRCeXRlcygpKTsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhJZC5zZXQoc3JjKTsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXguc2V0VmVydGV4SWQodmVydGV4SWQpOworCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgICogc2V0IHRoZSB2ZXJ0ZXggdmFsdWUKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBieXRlW10gdGVtcCA9IGZpZWxkc1sxXS5nZXRCeXRlcygpOworICAgICAgICAgICAgICAgIHZlcnRleFZhbHVlLnNldCh0ZW1wWzBdKTsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXguc2V0VmVydGV4VmFsdWUodmVydGV4VmFsdWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHZlcnRleDsKKyAgICAgICAgfQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3NyYy9tYWluL2phdmEvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvZXhhbXBsZS9pby9NZXNzYWdlV3JpdGFibGUuamF2YSBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L2V4YW1wbGUvaW8vTWVzc2FnZVdyaXRhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRiZDgwMAotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvbWFpbi9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L2V4YW1wbGUvaW8vTWVzc2FnZVdyaXRhYmxlLmphdmEKQEAgLTAsMCArMSw4OSBAQAorcGFja2FnZSBlZHUudWNpLmljcy5wcmVnZWxpeC5leGFtcGxlLmlvOworCitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXQ7CitpbXBvcnQgamF2YS5pby5EYXRhT3V0cHV0OworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuaW8uV3JpdGFibGVDb21wYXJhYmxlOworCitwdWJsaWMgY2xhc3MgTWVzc2FnZVdyaXRhYmxlIGltcGxlbWVudHMgV3JpdGFibGVDb21wYXJhYmxlPE1lc3NhZ2VXcml0YWJsZT57CisJLyoqCisJICogYnl0ZXMgc3RvcmVzIHRoZSBjaGFpbnMgb2YgY29ubmVjdGVkIEROQQorCSAqIGZpbGUgc3RvcmVzIHRoZSBwb2ludCB0byB0aGUgZmlsZSB0aGF0IHN0b3JlcyB0aGUgY2hhaW5zIG9mIGNvbm5lY3RlZCBETkEKKwkgKi8KKwlwcml2YXRlIGJ5dGVbXSBieXRlczsKKwlwcml2YXRlIEZpbGUgZmlsZTsKKwkKKwlwdWJsaWMgTWVzc2FnZVdyaXRhYmxlKCl7CQkKKwl9CisJCisJcHVibGljIE1lc3NhZ2VXcml0YWJsZShieXRlW10gYnl0ZXMsIEZpbGUgZmlsZSl7CisJCXNldChieXRlcyxmaWxlKTsKKwl9CisJCisJcHVibGljIHZvaWQgc2V0KGJ5dGVbXSBieXRlcywgRmlsZSBmaWxlKXsKKwkJdGhpcy5ieXRlcyA9IGJ5dGVzOworCQl0aGlzLmZpbGUgPSBmaWxlOworCX0KKwkJCQorCXB1YmxpYyBieXRlW10gZ2V0Qnl0ZXMoKSB7CisJICAgIHJldHVybiBieXRlczsKKwl9CisJCisJcHVibGljIEZpbGUgZ2V0RmlsZSgpeworCQlyZXR1cm4gZmlsZTsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCB3cml0ZShEYXRhT3V0cHV0IG91dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgorCQlvdXQud3JpdGUoYnl0ZXMpOworCQlvdXQud3JpdGVVVEYoZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKSk7IAorCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIHJlYWRGaWVsZHMoRGF0YUlucHV0IGluKSB0aHJvd3MgSU9FeGNlcHRpb24geworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCisJCWluLnJlYWRGdWxseShieXRlcyk7CisJCVN0cmluZyBhYnNvbHV0ZVBhdGggPSBpbi5yZWFkVVRGKCk7CisJCWZpbGUgPSBuZXcgRmlsZShhYnNvbHV0ZVBhdGgpOworCX0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgCWludCBoYXNoQ29kZSA9IDA7CisgICAgCWZvcihpbnQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykKKyAgICAJCWhhc2hDb2RlID0gKGludClieXRlc1tpXTsKKyAgICAgICAgcmV0dXJuIGhhc2hDb2RlOworICAgIH0KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBNZXNzYWdlV3JpdGFibGUpIHsKKyAgICAgICAgCU1lc3NhZ2VXcml0YWJsZSB0cCA9IChNZXNzYWdlV3JpdGFibGUpIG87CisgICAgICAgICAgICByZXR1cm4gYnl0ZXMgPT0gdHAuYnl0ZXMgJiYgZmlsZSA9PSB0cC5maWxlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIGJ5dGVzLnRvU3RyaW5nKCkgKyAiXHQiICsgZmlsZS5nZXRBYnNvbHV0ZVBhdGgoKTsKKyAgICB9CisgICAgCisJQE92ZXJyaWRlCisJcHVibGljIGludCBjb21wYXJlVG8oTWVzc2FnZVdyaXRhYmxlIHRwKSB7CisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKKyAgICAgICAgaW50IGNtcDsKKyAgICAgICAgaWYgKGJ5dGVzID09IHRwLmJ5dGVzKQorICAgICAgICAgICAgY21wID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY21wID0gMTsKKyAgICAgICAgaWYgKGNtcCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgaWYgKGZpbGUgPT0gdHAuZmlsZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gMTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvdGVzdC9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleFRlc3QuamF2YSBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC9zcmMvdGVzdC9qYXZhL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODgwOThkCi0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3NyYy90ZXN0L2phdmEvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvTG9hZEdyYXBoVmVydGV4VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTA4IEBACitwYWNrYWdlIGVkdS51Y2kuaWNzLnByZWdlbGl4OworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuKjsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5EYXRhT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVSZWFkZXI7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyOworCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK2ltcG9ydCBlZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXguU2ltcGxlTG9hZEdyYXBoVmVydGV4T3V0cHV0Rm9ybWF0OworaW1wb3J0IGVkdS51Y2kuaWNzLnByZWdlbGl4LmFwaS5qb2IuUHJlZ2VsaXhKb2I7CitpbXBvcnQgZWR1LnVjaS5pY3MucHJlZ2VsaXguZXhhbXBsZS5jbGllbnQuQ2xpZW50OworCitwdWJsaWMgY2xhc3MgTG9hZEdyYXBoVmVydGV4VGVzdCB7CisKKwkvKioKKwkgKiBJIGNhbid0IGRlYnVnIGluIEpVbml0cyB0ZXN0IHNvIHRoYXQgSSBjYW4ndCBmaW5kIG15IGVycm9yIGhlcmUuIFNvIEkgbGVhdmUgY29tbWVudHMgaGVyZS4KKwkgKiBJIHdpbGwgZmlndXJlIG91dCBhcyBzb29uIGFzIHBvc3NpYmxlLgorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFWFBFQ1RfUkVTVUxUX0ZJTEUgPSAiZXhwZWN0ZWRfcmVzdWx0IjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5QVVRfUEFUSFMgPSAiZm9sZGVyIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1VUUFVUX1BBVEggPSAicmVzdWx0IjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVAgPSAiMTY5LjIzNC4xMzQuMjEyIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9SVCA9ICIzMDk5IjsKKwkKKwlAU3VwcHJlc3NXYXJuaW5ncygiZGVwcmVjYXRpb24iKQorCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdCgpIHRocm93cyBFeGNlcHRpb24geworCQkvL2luaXRpYXRlIGFyZ3MKKwkvKglTdHJpbmdbXSBhcmdzID0gbmV3IFN0cmluZ1s4XTsKKwkJYXJnc1swXSA9ICItaW5wdXRwYXRocyI7IAorCQlhcmdzWzFdID0gSU5QVVRfUEFUSFM7CisJCWFyZ3NbMl0gPSAiLW91dHB1dHBhdGgiOworCQlhcmdzWzNdID0gT1VUUFVUX1BBVEg7CisJCWFyZ3NbNF0gPSAiLWlwIjsKKwkJYXJnc1s1XSA9IElQOworCQlhcmdzWzZdID0gIi1wb3J0IjsKKwkJYXJnc1s3XSA9IFBPUlQ7CisgICAgICAgIFByZWdlbGl4Sm9iIGpvYiA9IG5ldyBQcmVnZWxpeEpvYihMb2FkR3JhcGhWZXJ0ZXguY2xhc3MuZ2V0U2ltcGxlTmFtZSgpKTsKKyAgICAgICAgam9iLnNldFZlcnRleENsYXNzKExvYWRHcmFwaFZlcnRleC5jbGFzcyk7CisgICAgICAgIGpvYi5zZXRWZXJ0ZXhJbnB1dEZvcm1hdENsYXNzKFRleHRMb2FkR3JhcGhJbnB1dEZvcm1hdC5jbGFzcyk7CisgICAgICAgIGpvYi5zZXRWZXJ0ZXhPdXRwdXRGb3JtYXRDbGFzcyhTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQuY2xhc3MpOworICAgICAgICBDbGllbnQucnVuKGFyZ3MsIGpvYik7CisgICAgICAgIAorICAgICAgICBnZW5lcmF0ZUV4cGVjdEJpbmFyeUZpbGUoKTsKKyAgICAgICAgCisgICAgICAgIC8vdGVzdCBpZiB0aGUgYWN0dWFsIGZpbGUgaXMgdGhlIHNhbWUgYXMgdGhlIGV4cGVjdGVkIGZpbGUKKyAgICAgICAgRGF0YUlucHV0U3RyZWFtIGFjdHVhbF9kaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKG5ldyBGaWxlSW5wdXRTdHJlYW0oT1VUUFVUX1BBVEggKyAiLyoiKSk7CisgICAgICAgIERhdGFJbnB1dFN0cmVhbSBleHBlY3RlZF9kaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKG5ldyBGaWxlSW5wdXRTdHJlYW0oRVhQRUNUX1JFU1VMVF9GSUxFKSk7CisgICAgICAgIFN0cmluZyBhY3R1YWxMaW5lLCBleHBlY3RlZExpbmUgPSBudWxsOworICAgICAgICBTdHJpbmdUb2tlbml6ZXIgYWN0dWFsU3QsIGV4cGVjdGVkU3Q7CisJCWJ5dGVbXSBhY3R1YWxWZXJ0ZXhJZCwgZXhwZWN0ZWRWZXJ0ZXhJZCA9IG51bGw7CisJCWJ5dGUgYWN0dWFsVmVydGV4VmFsdWUsIGV4cGVjdGVkVmVydGV4VmFsdWU7CisgICAgICAgIGJ5dGVbXSB0bXAgPSBudWxsOworICAgICAgICB3aGlsZSgoKGFjdHVhbExpbmUgPSBhY3R1YWxfZGlzLnJlYWRMaW5lKCkpICE9IG51bGwpICYmIAorICAgICAgICAJCSgoZXhwZWN0ZWRMaW5lID0gZXhwZWN0ZWRfZGlzLnJlYWRMaW5lKCkpICE9IG51bGwpKXsKKyAgICAgICAgCWFjdHVhbFN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihhY3R1YWxMaW5lLCAiICIpOworCQkJYWN0dWFsVmVydGV4SWQgPSBhY3R1YWxTdC5uZXh0VG9rZW4oKS5nZXRCeXRlcygpOworCQkJdG1wID0gYWN0dWFsU3QubmV4dFRva2VuKCkuZ2V0Qnl0ZXMoKTsKKwkJCWFjdHVhbFZlcnRleFZhbHVlID0gdG1wWzBdOworCQkJCisJCQlleHBlY3RlZFN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihleHBlY3RlZExpbmUsIiAiKTsKKwkJCWV4cGVjdGVkVmVydGV4SWQgPSBleHBlY3RlZFN0Lm5leHRUb2tlbigpLmdldEJ5dGVzKCk7CisJCQl0bXAgPSBleHBlY3RlZFN0Lm5leHRUb2tlbigpLmdldEJ5dGVzKCk7CisJCQlleHBlY3RlZFZlcnRleFZhbHVlID0gdG1wWzBdOworCQkJCisJCQlhc3NlcnRFcXVhbHMoImFjdHVhbFZleHRleElkID09IGV4cGVjdGVkVmVydGV4SWQiLCBhY3R1YWxWZXJ0ZXhJZCwgZXhwZWN0ZWRWZXJ0ZXhJZCk7CisJCQlhc3NlcnRFcXVhbHMoImFjdHVhbFZlcnRleFZhbHVlID09IGV4cGVjdGVkVmVydGV4VmFsdWUiLCBhY3R1YWxWZXJ0ZXhWYWx1ZSwgZXhwZWN0ZWRWZXJ0ZXhWYWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGFzc2VydEVxdWFscygiYWN0dWFsTGluZSBzaG91bGQgYmUgdGhlIGVuZCBhbmQgYmUgZXF1YWwgdG8gbnVsbCIsIGFjdHVhbExpbmUsIG51bGwpOworICAgICAgICBhc3NlcnRFcXVhbHMoImV4cGVjdGVkTGluZSBzaG91bGQgYmUgdGhlIGVuZCBhbmQgYmUgZXF1YWwgdG8gbnVsbCIsIGV4cGVjdGVkTGluZSwgbnVsbCk7Ki8KKwl9CisJCisJQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKKwlwdWJsaWMgdm9pZCBnZW5lcmF0ZUV4cGVjdEJpbmFyeUZpbGUoKSB0aHJvd3MgRXhjZXB0aW9ueworCQlEYXRhSW5wdXRTdHJlYW0gZGlzID0gbmV3IERhdGFJbnB1dFN0cmVhbShuZXcgRmlsZUlucHV0U3RyZWFtKElOUFVUX1BBVEhTICsgIi8qIikpOworCQlEYXRhT3V0cHV0U3RyZWFtIGRvcyA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKEVYUEVDVF9SRVNVTFRfRklMRSkpOworCQlTdHJpbmcgbGluZTsKKwkJYnl0ZVtdIHZlcnRleElkID0gbnVsbDsKKwkJYnl0ZSB2ZXJ0ZXhWYWx1ZTsKKwkJYnl0ZVtdIHRtcCA9IG51bGw7CisJCXdoaWxlKChsaW5lID0gZGlzLnJlYWRMaW5lKCkpICE9IG51bGwpeworCQkJU3RyaW5nVG9rZW5pemVyIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihsaW5lLCAiICIpOworCQkJdmVydGV4SWQgPSBzdC5uZXh0VG9rZW4oKS5nZXRCeXRlcygpOworCQkJdG1wID0gc3QubmV4dFRva2VuKCkuZ2V0Qnl0ZXMoKTsKKwkJCXZlcnRleFZhbHVlID0gdG1wWzBdOwkJCisJCQkKKwkJCXZlcnRleFZhbHVlID0gKGJ5dGUpICh2ZXJ0ZXhWYWx1ZSA8PCAxKTsgCisJCQlmb3IoaW50IGkgPSAwOyBpIDwgdmVydGV4SWQubGVuZ3RoOyBpKyspCisJCQkJZG9zLndyaXRlQnl0ZSh2ZXJ0ZXhJZFtpXSk7CisJCQlkb3Mud3JpdGVCeXRlKChieXRlKTMyKTsgLy9zcGFjZQorCQkJZG9zLndyaXRlQnl0ZSh2ZXJ0ZXhWYWx1ZSk7CisJCQlkb3Mud3JpdGVCeXRlKChieXRlKTEwKTsgLy9saW5lIGZlZWQKKwkJfQorCQkKKwkJZGlzLmNsb3NlKCk7CisJCWRvcy5jbG9zZSgpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleCRTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQuY2xhc3MgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L2NsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvTG9hZEdyYXBoVmVydGV4JFNpbXBsZUxvYWRHcmFwaFZlcnRleE91dHB1dEZvcm1hdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTY5YTZlCi0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleCRTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhPdXRwdXRGb3JtYXQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleCRTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhXcml0ZXIuY2xhc3MgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L2NsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvTG9hZEdyYXBoVmVydGV4JFNpbXBsZUxvYWRHcmFwaFZlcnRleFdyaXRlci5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2JkNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleCRTaW1wbGVMb2FkR3JhcGhWZXJ0ZXhXcml0ZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L0xvYWRHcmFwaFZlcnRleC5jbGFzcyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvY2xhc3Nlcy9lZHUvdWNpL2ljcy9wcmVnZWxpeC9Mb2FkR3JhcGhWZXJ0ZXguY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM1MzEzMAotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvY2xhc3Nlcy9lZHUvdWNpL2ljcy9wcmVnZWxpeC9Mb2FkR3JhcGhWZXJ0ZXguY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1Rlc3RMb2FkR3JhcGhWZXJ0ZXguY2xhc3MgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L2NsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvVGVzdExvYWRHcmFwaFZlcnRleC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmRlN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1Rlc3RMb2FkR3JhcGhWZXJ0ZXguY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1RleHRMb2FkR3JhcGhJbnB1dEZvcm1hdCRUZXh0TG9hZEdyYXBoUmVhZGVyLmNsYXNzIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1RleHRMb2FkR3JhcGhJbnB1dEZvcm1hdCRUZXh0TG9hZEdyYXBoUmVhZGVyLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxN2NmZDkKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L2NsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvVGV4dExvYWRHcmFwaElucHV0Rm9ybWF0JFRleHRMb2FkR3JhcGhSZWFkZXIuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L1RleHRMb2FkR3JhcGhJbnB1dEZvcm1hdC5jbGFzcyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvY2xhc3Nlcy9lZHUvdWNpL2ljcy9wcmVnZWxpeC9UZXh0TG9hZEdyYXBoSW5wdXRGb3JtYXQuY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMwZTQzMgotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvY2xhc3Nlcy9lZHUvdWNpL2ljcy9wcmVnZWxpeC9UZXh0TG9hZEdyYXBoSW5wdXRGb3JtYXQuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L2V4YW1wbGUvaW8vTWVzc2FnZVdyaXRhYmxlLmNsYXNzIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9jbGFzc2VzL2VkdS91Y2kvaWNzL3ByZWdlbGl4L2V4YW1wbGUvaW8vTWVzc2FnZVdyaXRhYmxlLmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZDU2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L2NsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvZXhhbXBsZS9pby9NZXNzYWdlV3JpdGFibGUuY2xhc3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9nZW5vbWl4LXByZWdlbGl4LTAuMi4yLWphci13aXRoLWRlcGVuZGVuY2llcy5qYXIgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L2dlbm9taXgtcHJlZ2VsaXgtMC4yLjItamFyLXdpdGgtZGVwZW5kZW5jaWVzLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDJlNmNhCi0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9nZW5vbWl4LXByZWdlbGl4LTAuMi4yLWphci13aXRoLWRlcGVuZGVuY2llcy5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9nZW5vbWl4LXByZWdlbGl4LTAuMi4yLmphciBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvZ2Vub21peC1wcmVnZWxpeC0wLjIuMi5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYwMzk4ZQotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvZ2Vub21peC1wcmVnZWxpeC0wLjIuMi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9tYXZlbi1hcmNoaXZlci9wb20ucHJvcGVydGllcyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvbWF2ZW4tYXJjaGl2ZXIvcG9tLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEzZjhkNQotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvbWF2ZW4tYXJjaGl2ZXIvcG9tLnByb3BlcnRpZXMKQEAgLTAsMCArMSw1IEBACisjR2VuZXJhdGVkIGJ5IE1hdmVuCisjTW9uIEZlYiAxMSAyMTozODoyMSBQU1QgMjAxMwordmVyc2lvbj0wLjIuMgorZ3JvdXBJZD1lZHUudWNpLmljcy5wcmVnZWxpeAorYXJ0aWZhY3RJZD1nZW5vbWl4LXByZWdlbGl4CmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L3N1cmVmaXJlLXJlcG9ydHMvVEVTVC1lZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXhUZXN0LnhtbCBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvc3VyZWZpcmUtcmVwb3J0cy9URVNULWVkdS51Y2kuaWNzLnByZWdlbGl4LkxvYWRHcmFwaFZlcnRleFRlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MTkwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L3N1cmVmaXJlLXJlcG9ydHMvVEVTVC1lZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXhUZXN0LnhtbApAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzx0ZXN0c3VpdGUgZmFpbHVyZXM9IjAiIHRpbWU9IjAuMDM1IiBlcnJvcnM9IjAiIHNraXBwZWQ9IjAiIHRlc3RzPSIxIiBuYW1lPSJlZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXhUZXN0Ij4KKyAgPHByb3BlcnRpZXM+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEucnVudGltZS5uYW1lIiB2YWx1ZT0iT3BlbkpESyBSdW50aW1lIEVudmlyb25tZW50Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5ib290LmxpYnJhcnkucGF0aCIgdmFsdWU9Ii91c3IvbGliL2p2bS9qYXZhLTYtb3Blbmpkay1hbWQ2NC9qcmUvbGliL2FtZDY0Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEudm0udmVyc2lvbiIgdmFsdWU9IjIwLjAtYjEyIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEudm0udmVuZG9yIiB2YWx1ZT0iU3VuIE1pY3Jvc3lzdGVtcyBJbmMuIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEudmVuZG9yLnVybCIgdmFsdWU9Imh0dHA6Ly9qYXZhLnN1bi5jb20vIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InBhdGguc2VwYXJhdG9yIiB2YWx1ZT0iOiIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXZhLnZtLm5hbWUiIHZhbHVlPSJPcGVuSkRLIDY0LUJpdCBTZXJ2ZXIgVk0iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZmlsZS5lbmNvZGluZy5wa2ciIHZhbHVlPSJzdW4uaW8iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS51dGlsLmxvZ2dpbmcuY29uZmlnLmZpbGUiIHZhbHVlPSJzcmMvdGVzdC9yZXNvdXJjZXMvbG9nZ2luZy5wcm9wZXJ0aWVzIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InVzZXIuY291bnRyeSIgdmFsdWU9IlVTIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5qYXZhLmxhdW5jaGVyIiB2YWx1ZT0iU1VOX1NUQU5EQVJEIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5vcy5wYXRjaC5sZXZlbCIgdmFsdWU9InVua25vd24iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS52bS5zcGVjaWZpY2F0aW9uLm5hbWUiIHZhbHVlPSJKYXZhIFZpcnR1YWwgTWFjaGluZSBTcGVjaWZpY2F0aW9uIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InVzZXIuZGlyIiB2YWx1ZT0iL2hvbWUvYW5iYW5neC93b3Jrc3BhY2UvZnVsbHN0YWNrX2dlbm9taXgvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEucnVudGltZS52ZXJzaW9uIiB2YWx1ZT0iMS42LjBfMjQtYjI0Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEuYXd0LmdyYXBoaWNzZW52IiB2YWx1ZT0ic3VuLmF3dC5YMTFHcmFwaGljc0Vudmlyb25tZW50Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImJhc2VkaXIiIHZhbHVlPSIvaG9tZS9hbmJhbmd4L3dvcmtzcGFjZS9mdWxsc3RhY2tfZ2Vub21peC9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS5lbmRvcnNlZC5kaXJzIiB2YWx1ZT0iL3Vzci9saWIvanZtL2phdmEtNi1vcGVuamRrLWFtZDY0L2pyZS9saWIvZW5kb3JzZWQiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ib3MuYXJjaCIgdmFsdWU9ImFtZDY0Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEuaW8udG1wZGlyIiB2YWx1ZT0iL3RtcCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJsaW5lLnNlcGFyYXRvciIgdmFsdWU9IgorIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEudm0uc3BlY2lmaWNhdGlvbi52ZW5kb3IiIHZhbHVlPSJTdW4gTWljcm9zeXN0ZW1zIEluYy4iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ib3MubmFtZSIgdmFsdWU9IkxpbnV4Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5qbnUuZW5jb2RpbmciIHZhbHVlPSJVVEYtOCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXZhLmxpYnJhcnkucGF0aCIgdmFsdWU9Ii91c3IvbGliL2p2bS9qYXZhLTYtb3Blbmpkay1hbWQ2NC9qcmUvbGliL2FtZDY0L3NlcnZlcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9hbWQ2NDovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlLy4uL2xpYi9hbWQ2NDovdXNyL2phdmEvcGFja2FnZXMvbGliL2FtZDY0Oi91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvam5pOi9saWIveDg2XzY0LWxpbnV4LWdudTovdXNyL2xpYi94ODZfNjQtbGludXgtZ251Oi91c3IvbGliL2puaTovbGliOi91c3IvbGliIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1cmVmaXJlLnRlc3QuY2xhc3MucGF0aCIgdmFsdWU9Ii9ob21lL2FuYmFuZ3gvd29ya3NwYWNlL2Z1bGxzdGFja19nZW5vbWl4L2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvdGVzdC1jbGFzc2VzOi9ob21lL2FuYmFuZ3gvd29ya3NwYWNlL2Z1bGxzdGFja19nZW5vbWl4L2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvY2xhc3NlczovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvcHJlZ2VsaXgtY29yZS8wLjIuMi9wcmVnZWxpeC1jb3JlLTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvcHJlZ2VsaXgtYXBpLzAuMi4yL3ByZWdlbGl4LWFwaS0wLjIuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9lZHUvdWNpL2ljcy9oeXJhY2tzL3ByZWdlbGl4LWRhdGFmbG93LXN0ZC8wLjIuMi9wcmVnZWxpeC1kYXRhZmxvdy1zdGQtMC4yLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvZWR1L3VjaS9pY3MvaHlyYWNrcy9wcmVnZWxpeC1kYXRhZmxvdy1zdGQtYmFzZS8wLjIuMi9wcmVnZWxpeC1kYXRhZmxvdy1zdGQtYmFzZS0wLjIuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9lZHUvdWNpL2ljcy9oeXJhY2tzL3ByZWdlbGl4LWRhdGFmbG93LzAuMi4yL3ByZWdlbGl4LWRhdGFmbG93LTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvaHlyYWNrcy1kYXRhZmxvdy1zdGQvMC4yLjIvaHlyYWNrcy1kYXRhZmxvdy1zdGQtMC4yLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvZWR1L3VjaS9pY3MvaHlyYWNrcy9wcmVnZWxpeC1ydW50aW1lLzAuMi4yL3ByZWdlbGl4LXJ1bnRpbWUtMC4yLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvZWR1L3VjaS9pY3MvaHlyYWNrcy9oeXJhY2tzLWFwaS8wLjIuMi9oeXJhY2tzLWFwaS0wLjIuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvanNvbi9qc29uLzIwMDkwMjExL2pzb24tMjAwOTAyMTEuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2FwYWNoZS9odHRwY29tcG9uZW50cy9odHRwY2xpZW50LzQuMS1hbHBoYTIvaHR0cGNsaWVudC00LjEtYWxwaGEyLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvaHR0cGNvbXBvbmVudHMvaHR0cGNvcmUvNC4xLWJldGExL2h0dHBjb3JlLTQuMS1iZXRhMS5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9jb21tb25zLWxvZ2dpbmcvY29tbW9ucy1sb2dnaW5nLzEuMS4xL2NvbW1vbnMtbG9nZ2luZy0xLjEuMS5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9hcmdzNGovYXJnczRqLzIuMC4xMi9hcmdzNGotMi4wLjEyLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvY29tbW9ucy9jb21tb25zLWxhbmczLzMuMS9jb21tb25zLWxhbmczLTMuMS5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9lZHUvdWNpL2ljcy9oeXJhY2tzL2h5cmFja3MtZGF0YWZsb3ctY29tbW9uLzAuMi4yL2h5cmFja3MtZGF0YWZsb3ctY29tbW9uLTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvaHlyYWNrcy1kYXRhLXN0ZC8wLjIuMi9oeXJhY2tzLWRhdGEtc3RkLTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvaGFkb29wL2hhZG9vcC1jb3JlLzAuMjAuMi9oYWRvb3AtY29yZS0wLjIwLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvY29tbW9ucy1jbGkvY29tbW9ucy1jbGkvMS4yL2NvbW1vbnMtY2xpLTEuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS94bWxlbmMveG1sZW5jLzAuNTIveG1sZW5jLTAuNTIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvY29tbW9ucy1odHRwY2xpZW50L2NvbW1vbnMtaHR0cGNsaWVudC8zLjAuMS9jb21tb25zLWh0dHBjbGllbnQtMy4wLjEuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvY29tbW9ucy1jb2RlYy9jb21tb25zLWNvZGVjLzEuMy9jb21tb25zLWNvZGVjLTEuMy5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9jb21tb25zLW5ldC9jb21tb25zLW5ldC8xLjQuMS9jb21tb25zLW5ldC0xLjQuMS5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvbW9ydGJheS9qZXR0eS9qZXR0eS82LjEuMTQvamV0dHktNi4xLjE0LmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9tb3J0YmF5L2pldHR5L2pldHR5LXV0aWwvNi4xLjE0L2pldHR5LXV0aWwtNi4xLjE0LmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L3RvbWNhdC9qYXNwZXItcnVudGltZS81LjUuMTIvamFzcGVyLXJ1bnRpbWUtNS41LjEyLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L3RvbWNhdC9qYXNwZXItY29tcGlsZXIvNS41LjEyL2phc3Blci1jb21waWxlci01LjUuMTIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL21vcnRiYXkvamV0dHkvanNwLWFwaS0yLjEvNi4xLjE0L2pzcC1hcGktMi4xLTYuMS4xNC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvbW9ydGJheS9qZXR0eS9qc3AtMi4xLzYuMS4xNC9qc3AtMi4xLTYuMS4xNC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9hbnQvYW50LzEuNi41L2FudC0xLjYuNS5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9jb21tb25zLWVsL2NvbW1vbnMtZWwvMS4wL2NvbW1vbnMtZWwtMS4wLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L25ldC9qYXZhL2Rldi9qZXRzM3QvamV0czN0LzAuNy4xL2pldHMzdC0wLjcuMS5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvbW9ydGJheS9qZXR0eS9zZXJ2bGV0LWFwaS0yLjUvNi4xLjE0L3NlcnZsZXQtYXBpLTIuNS02LjEuMTQuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvbmV0L3NmL2tvc21vc2ZzL2tmcy8wLjMva2ZzLTAuMy5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9oc3FsZGIvaHNxbGRiLzEuOC4wLjEwL2hzcWxkYi0xLjguMC4xMC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcm8vb3JvLzIuMC44L29yby0yLjAuOC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvZWNsaXBzZS9qZHQvY29yZS8zLjEuMS9jb3JlLTMuMS4xLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvaHlyYWNrcy1zdG9yYWdlLWFtLWNvbW1vbi8wLjIuMi9oeXJhY2tzLXN0b3JhZ2UtYW0tY29tbW9uLTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvaHlyYWNrcy1zdG9yYWdlLWNvbW1vbi8wLjIuMi9oeXJhY2tzLXN0b3JhZ2UtY29tbW9uLTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2h5cmFja3MvaHlyYWNrcy1zdG9yYWdlLWFtLWJ0cmVlLzAuMi4yL2h5cmFja3Mtc3RvcmFnZS1hbS1idHJlZS0wLjIuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9lZHUvdWNpL2ljcy9oeXJhY2tzL2h5cmFja3MtY29udHJvbC1jYy8wLjIuMi9oeXJhY2tzLWNvbnRyb2wtY2MtMC4yLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvZWR1L3VjaS9pY3MvaHlyYWNrcy9oeXJhY2tzLWNvbnRyb2wtY29tbW9uLzAuMi4yL2h5cmFja3MtY29udHJvbC1jb21tb24tMC4yLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvY29tbW9ucy1pby9jb21tb25zLWlvLzEuNC9jb21tb25zLWlvLTEuNC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvZWNsaXBzZS9qZXR0eS9qZXR0eS1zZXJ2ZXIvOC4wLjAuUkMwL2pldHR5LXNlcnZlci04LjAuMC5SQzAuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL21vcnRiYXkvamV0dHkvc2VydmxldC1hcGkvMy4wLjIwMTAwMjI0L3NlcnZsZXQtYXBpLTMuMC4yMDEwMDIyNC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvZWNsaXBzZS9qZXR0eS9qZXR0eS1jb250aW51YXRpb24vOC4wLjAuUkMwL2pldHR5LWNvbnRpbnVhdGlvbi04LjAuMC5SQzAuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2VjbGlwc2UvamV0dHkvamV0dHktaHR0cC84LjAuMC5SQzAvamV0dHktaHR0cC04LjAuMC5SQzAuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2VjbGlwc2UvamV0dHkvamV0dHktaW8vOC4wLjAuUkMwL2pldHR5LWlvLTguMC4wLlJDMC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9vcmcvZWNsaXBzZS9qZXR0eS9qZXR0eS13ZWJhcHAvOC4wLjAuUkMwL2pldHR5LXdlYmFwcC04LjAuMC5SQzAuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2VjbGlwc2UvamV0dHkvamV0dHkteG1sLzguMC4wLlJDMC9qZXR0eS14bWwtOC4wLjAuUkMwLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9lY2xpcHNlL2pldHR5L2pldHR5LXV0aWwvOC4wLjAuUkMwL2pldHR5LXV0aWwtOC4wLjAuUkMwLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9lY2xpcHNlL2pldHR5L2pldHR5LXNlcnZsZXQvOC4wLjAuUkMwL2pldHR5LXNlcnZsZXQtOC4wLjAuUkMwLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9lY2xpcHNlL2pldHR5L2pldHR5LXNlY3VyaXR5LzguMC4wLlJDMC9qZXR0eS1zZWN1cml0eS04LjAuMC5SQzAuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2FwYWNoZS93aWNrZXQvd2lja2V0LWNvcmUvMS41LjIvd2lja2V0LWNvcmUtMS41LjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2FwYWNoZS93aWNrZXQvd2lja2V0LXV0aWwvMS41LjIvd2lja2V0LXV0aWwtMS41LjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2FwYWNoZS93aWNrZXQvd2lja2V0LXJlcXVlc3QvMS41LjIvd2lja2V0LXJlcXVlc3QtMS41LjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL3NsZjRqL3NsZjRqLWFwaS8xLjYuMS9zbGY0ai1hcGktMS42LjEuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL3NsZjRqL3NsZjRqLWpjbC8xLjYuMy9zbGY0ai1qY2wtMS42LjMuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvZWR1L3VjaS9pY3MvaHlyYWNrcy9oeXJhY2tzLWNvbnRyb2wtbmMvMC4yLjIvaHlyYWNrcy1jb250cm9sLW5jLTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2VkdS91Y2kvaWNzL2RjYWNoZS9kY2FjaGUtY2xpZW50LzAuMC4xL2RjYWNoZS1jbGllbnQtMC4wLjEuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2VjbGlwc2UvamV0dHkvamV0dHktY2xpZW50LzguMC4wLk0wL2pldHR5LWNsaWVudC04LjAuMC5NMC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9lZHUvdWNpL2ljcy9oeXJhY2tzL2h5cmFja3MtbmV0LzAuMi4yL2h5cmFja3MtbmV0LTAuMi4yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvaGFkb29wL2hhZG9vcC10ZXN0LzAuMjAuMi9oYWRvb3AtdGVzdC0wLjIwLjIuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvb3JnL2FwYWNoZS9mdHBzZXJ2ZXIvZnRwbGV0LWFwaS8xLjAuMC9mdHBsZXQtYXBpLTEuMC4wLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvbWluYS9taW5hLWNvcmUvMi4wLjAtTTUvbWluYS1jb3JlLTIuMC4wLU01LmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvZnRwc2VydmVyL2Z0cHNlcnZlci1jb3JlLzEuMC4wL2Z0cHNlcnZlci1jb3JlLTEuMC4wLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L29yZy9hcGFjaGUvZnRwc2VydmVyL2Z0cHNlcnZlci1kZXByZWNhdGVkLzEuMC4wLU0yL2Z0cHNlcnZlci1kZXByZWNhdGVkLTEuMC4wLU0yLmphcjovaG9tZS9hbmJhbmd4Ly5tMi9yZXBvc2l0b3J5L2phdmF4L3NlcnZsZXQvamF2YXguc2VydmxldC1hcGkvMy4wLjEvamF2YXguc2VydmxldC1hcGktMy4wLjEuamFyOi9ob21lL2FuYmFuZ3gvLm0yL3JlcG9zaXRvcnkvZWR1L3VjaS9pY3MvaHlyYWNrcy9oeXJhY2tzLWlwYy8wLjIuMi9oeXJhY2tzLWlwYy0wLjIuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9lZHUvdWNpL2ljcy9oeXJhY2tzL3ByZWdlbGl4LWV4YW1wbGUvMC4yLjIvcHJlZ2VsaXgtZXhhbXBsZS0wLjIuMi5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9jb20vZ29vZ2xlL2NvbGxlY3Rpb25zL2dvb2dsZS1jb2xsZWN0aW9ucy8xLjAvZ29vZ2xlLWNvbGxlY3Rpb25zLTEuMC5qYXI6L2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeS9qdW5pdC9qdW5pdC80LjguMS9qdW5pdC00LjguMS5qYXI6Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEuc3BlY2lmaWNhdGlvbi5uYW1lIiB2YWx1ZT0iSmF2YSBQbGF0Zm9ybSBBUEkgU3BlY2lmaWNhdGlvbiIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXZhLmNsYXNzLnZlcnNpb24iIHZhbHVlPSI1MC4wIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5tYW5hZ2VtZW50LmNvbXBpbGVyIiB2YWx1ZT0iSG90U3BvdCA2NC1CaXQgVGllcmVkIENvbXBpbGVycyIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJvcy52ZXJzaW9uIiB2YWx1ZT0iMy4yLjAtMzctZ2VuZXJpYyIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VyLmhvbWUiIHZhbHVlPSIvaG9tZS9hbmJhbmd4Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InVzZXIudGltZXpvbmUiIHZhbHVlPSIiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS5hd3QucHJpbnRlcmpvYiIgdmFsdWU9InN1bi5wcmludC5QU1ByaW50ZXJKb2IiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iZmlsZS5lbmNvZGluZyIgdmFsdWU9IlVURi04Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEuc3BlY2lmaWNhdGlvbi52ZXJzaW9uIiB2YWx1ZT0iMS42Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InVzZXIubmFtZSIgdmFsdWU9ImFuYmFuZ3giLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS5jbGFzcy5wYXRoIiB2YWx1ZT0iL2hvbWUvYW5iYW5neC93b3Jrc3BhY2UvZnVsbHN0YWNrX2dlbm9taXgvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9zdXJlZmlyZS9zdXJlZmlyZWJvb3Rlcjc1NjY3MDk3Njg0MzYxNzcyOTMuamFyIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImphdmEudm0uc3BlY2lmaWNhdGlvbi52ZXJzaW9uIiB2YWx1ZT0iMS4wIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5hcmNoLmRhdGEubW9kZWwiIHZhbHVlPSI2NCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXZhLmhvbWUiIHZhbHVlPSIvdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5qYXZhLmNvbW1hbmQiIHZhbHVlPSIvaG9tZS9hbmJhbmd4L3dvcmtzcGFjZS9mdWxsc3RhY2tfZ2Vub21peC9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L3N1cmVmaXJlL3N1cmVmaXJlYm9vdGVyNzU2NjcwOTc2ODQzNjE3NzI5My5qYXIgL2hvbWUvYW5iYW5neC93b3Jrc3BhY2UvZnVsbHN0YWNrX2dlbm9taXgvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9zdXJlZmlyZS9zdXJlZmlyZTQyNzYyNTI5MDc0NzE2ODQ2OTR0bXAgL2hvbWUvYW5iYW5neC93b3Jrc3BhY2UvZnVsbHN0YWNrX2dlbm9taXgvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC9zdXJlZmlyZS9zdXJlZmlyZTQxNTU5NjQzOTM4NTk5NDY1NTh0bXAiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS5zcGVjaWZpY2F0aW9uLnZlbmRvciIgdmFsdWU9IlN1biBNaWNyb3N5c3RlbXMgSW5jLiIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VyLmxhbmd1YWdlIiB2YWx1ZT0iZW4iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS52bS5pbmZvIiB2YWx1ZT0ibWl4ZWQgbW9kZSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXZhLnZlcnNpb24iIHZhbHVlPSIxLjYuMF8yNCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXZhLmV4dC5kaXJzIiB2YWx1ZT0iL3Vzci9saWIvanZtL2phdmEtNi1vcGVuamRrLWFtZDY0L2pyZS9saWIvZXh0Oi91c3IvamF2YS9wYWNrYWdlcy9saWIvZXh0Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5ib290LmNsYXNzLnBhdGgiIHZhbHVlPSIvdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9yZXNvdXJjZXMuamFyOi91c3IvbGliL2p2bS9qYXZhLTYtb3Blbmpkay1hbWQ2NC9qcmUvbGliL3J0LmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9zdW5yc2FzaWduLmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9qc3NlLmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9qY2UuamFyOi91c3IvbGliL2p2bS9qYXZhLTYtb3Blbmpkay1hbWQ2NC9qcmUvbGliL2NoYXJzZXRzLmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9uZXR4LmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9wbHVnaW4uamFyOi91c3IvbGliL2p2bS9qYXZhLTYtb3Blbmpkay1hbWQ2NC9qcmUvbGliL3JoaW5vLmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2xpYi9tb2R1bGVzL2pkay5ib290LmphcjovdXNyL2xpYi9qdm0vamF2YS02LW9wZW5qZGstYW1kNjQvanJlL2NsYXNzZXMiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS52ZW5kb3IiIHZhbHVlPSJTdW4gTWljcm9zeXN0ZW1zIEluYy4iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0ibG9jYWxSZXBvc2l0b3J5IiB2YWx1ZT0iL2hvbWUvYW5iYW5neC8ubTIvcmVwb3NpdG9yeSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxlLnNlcGFyYXRvciIgdmFsdWU9Ii8iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iamF2YS52ZW5kb3IudXJsLmJ1ZyIgdmFsdWU9Imh0dHA6Ly9qYXZhLnN1bi5jb20vY2dpLWJpbi9idWdyZXBvcnQuY2dpIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5jcHUuZW5kaWFuIiB2YWx1ZT0ibGl0dGxlIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5pby51bmljb2RlLmVuY29kaW5nIiB2YWx1ZT0iVW5pY29kZUxpdHRsZSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJzdW4uZGVza3RvcCIgdmFsdWU9Imdub21lIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InN1bi5jcHUuaXNhbGlzdCIgdmFsdWU9IiIvPgorICA8L3Byb3BlcnRpZXM+CisgIDx0ZXN0Y2FzZSB0aW1lPSIwLjAwMiIgY2xhc3NuYW1lPSJlZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXhUZXN0IiBuYW1lPSJ0ZXN0Ii8+Cis8L3Rlc3RzdWl0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L3N1cmVmaXJlLXJlcG9ydHMvZWR1LnVjaS5pY3MucHJlZ2VsaXguTG9hZEdyYXBoVmVydGV4VGVzdC50eHQgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L3N1cmVmaXJlLXJlcG9ydHMvZWR1LnVjaS5pY3MucHJlZ2VsaXguTG9hZEdyYXBoVmVydGV4VGVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY4ZjZmZQotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90YXJnZXQvc3VyZWZpcmUtcmVwb3J0cy9lZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXhUZXN0LnR4dApAQCAtMCwwICsxLDQgQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1Rlc3Qgc2V0OiBlZHUudWNpLmljcy5wcmVnZWxpeC5Mb2FkR3JhcGhWZXJ0ZXhUZXN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUZXN0cyBydW46IDEsIEZhaWx1cmVzOiAwLCBFcnJvcnM6IDAsIFNraXBwZWQ6IDAsIFRpbWUgZWxhcHNlZDogMC4wMzUgc2VjCmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdGFyZ2V0L3Rlc3QtY2xhc3Nlcy9lZHUvdWNpL2ljcy9wcmVnZWxpeC9Mb2FkR3JhcGhWZXJ0ZXhUZXN0LmNsYXNzIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC90ZXN0LWNsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvTG9hZEdyYXBoVmVydGV4VGVzdC5jbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTczNTczCi0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RhcmdldC90ZXN0LWNsYXNzZXMvZWR1L3VjaS9pY3MvcHJlZ2VsaXgvTG9hZEdyYXBoVmVydGV4VGVzdC5jbGFzcwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdG1wL3BnX3Jlc3VsdC8ucGFydC0wLmNyYyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90bXAvcGdfcmVzdWx0Ly5wYXJ0LTAuY3JjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNWJiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdG1wL3BnX3Jlc3VsdC8ucGFydC0wLmNyYwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdG1wL3BnX3Jlc3VsdC8ucGFydC0xLmNyYyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90bXAvcGdfcmVzdWx0Ly5wYXJ0LTEuY3JjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYWNmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdG1wL3BnX3Jlc3VsdC8ucGFydC0xLmNyYwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdG1wL3BnX3Jlc3VsdC9wYXJ0LTAgYi9nZW5vbWl4L2dlbm9taXgtcHJlZ2VsaXgvdG1wL3BnX3Jlc3VsdC9wYXJ0LTAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTA1OTViZAotLS0gL2Rldi9udWxsCisrKyBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90bXAvcGdfcmVzdWx0L3BhcnQtMApAQCAtMCwwICsxLDMgQEAKKzA3CTY4CisxYgktMTIwCisyZAktMzQKZGlmZiAtLWdpdCBhL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90bXAvcGdfcmVzdWx0L3BhcnQtMSBiL2dlbm9taXgvZ2Vub21peC1wcmVnZWxpeC90bXAvcGdfcmVzdWx0L3BhcnQtMQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMDBhMmUwCi0tLSAvZGV2L251bGwKKysrIGIvZ2Vub21peC9nZW5vbWl4LXByZWdlbGl4L3RtcC9wZ19yZXN1bHQvcGFydC0xCkBAIC0wLDAgKzEgQEAKKzA2CTM0Cg==